2个UVM寄存器之间的相互作用

时间:2016-08-08 11:09:34

标签: system-verilog uvm

我尝试为我的项目实施UVM RAL,现在面临问题。例如,我有2个寄存器 - reg A和reg B.我为两者创建类,但是从B.field2映射的字段A.field1中的设备规范值。我如何在UVM RAL中实现这一点。 感谢。

2 个答案:

答案 0 :(得分:1)

您可能希望使用别名寄存器。 uvm用户指南的5.7.3。(第114页)中介绍了该概念。 http://accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.1.pdf

umm用户指南中的示例使用了几个概念,可以使用相同的概念为A.field1和B.field2生成别名。

  • 回拨机制
    可以为reg B.field2的post预测函数设置回调。每次在B.field2的值改变之后,触发后期预测功能。在后期预测函数中,寄存器A(A.field1)的字段值也被[通过调用field1.predict]更新,以反映变化/链接。 (假设A.field1是B.field2的依赖/别名)
  • 包装类
    创建一个包装类,它将连接这两个寄存器(A& B-A.field1到B.field2)中的字段并实例化包装类。包装器类还注册寄存器B field2的回调。如果寄存器模型是自动生成的,则包装器类可以在寄存器模型之外实例化,否则就像模型本身内部的示例一样。

答案 1 :(得分:0)

您可以根据需要专门使用回调机制“ uvm_reg_cbs ”。在此类中,有预定义的函数,如pre_write(),post_write(),post_predict()等,它们提供了寄存器之间相互依赖的灵活性。

您可以使用“ uvm_reg_cbs”扩展寄存器(Reg A)类,并使用另一个寄存器(Reg B)注册此回调。