修改UVM序列项变量

时间:2015-08-05 19:21:49

标签: system-verilog uvm

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

现有:

rand bit [9:0] var_mem;

新:

rand bit [15:0] var_mem;

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

尝试使用参数而不是位宽。这是代码段供您参考

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