我与某人合作了一个 SystemVerilog 项目。但是,我习惯使用 Synopsys VCS SystemVerilog 模拟器,他习惯使用 Cadence INCISIVE irun。
一个测试台模块使用随机数生成测试输入模式到顶级设计模块。因此,我设计了一个生成随机数的类:
class RandData;
rand logic [3:0] randIn;
function new(int seed);
this.srandom(seed);
endfunction
endclass
我可以用种子实例化类 RandData 并在模拟中获得固定的随机数序列。但是,即使在两个模拟器中使用相同的种子,VCS得到的固定随机数序列也与irun得到的固定序列不同。
不幸的是,顶级设计模块的黄金输出模式取决于测试输入模式。因此,如果使用VCS生成的输入模式生成黄金输出模式,黄金输出模式将与irun模拟的顶级设计输出不匹配。
因此,如何让 VCS 和 irun 模拟器生成重复的随机数序列?