【问题标题】:Modifying UVM sequence item variable修改 UVM 序列项变量
【发布时间】:2015-08-05 19:21:48
【问题描述】:

我正在编写一个从现有序列项扩展而来的新序列项。在新序列中,我想扩展现有序列项中变量的大小,如下所示:

现有:

rand bit [9:0] var_mem;

新:

rand bit [15:0] var_mem;

每当我使用新的扩展序列项运行序列时,事务将 var_mem 的大小显示为 10,而不是预期的 16。 是否可以在新的扩展序列项中修改变量的大小,无论是在序列项中还是在对应的序列中?

【问题讨论】:

    标签: system-verilog uvm


    【解决方案1】:

    在扩展类中覆盖变量通常是一个坏主意,除非所有访问基变量的方法都被覆盖。 UVM 不能很好地支持这一点,尤其是在您使用现场自动化宏时。

    您的选择是在基类中声明具有最大大小的变量,并使用另一个变量来表示实际大小。该大小变量可用于限制随机化期间的值,以及您提供的打包/解包方法。

    另一种选择是使用定义可变宽度的参数化类。

    【讨论】:

      【解决方案2】:

      尝试使用参数而不是位宽。这里是sn-p的代码供大家参考

      class existing_seq extends uvm_sequences(response_item);
        rand bit [9:0] var_mem ;
      endclass
      class new_seq #(int size = 16) extends existing_seq;
        rand bit [size-1:0] var_mem ;
        existing_seq seq1;  
      endclass
      

      【讨论】:

        猜你喜欢
        • 2014-12-14
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多