vcs验证问题
使用不同的随机种子,simv的时候加上选项"-seed=XXX“,XXX就是你设定的随机种子。
楼上正解
谢谢,但是我在加上时遇到问题,说-seed=5(这里的数是不是每次仿真都换一个不一样的就可以使得随机量不同?)是不被支持的选项,我的版本是E-2011.03,谢谢大牛指点
试一下:+ntb_random_seed=value
下面是manual里面的解释:
Sets the seed value to be usedby the top-level random number
generator at the startof simulation. The srandom( seed)system
function call overridesthis setting. The value can be any integer.
谢谢,这个我看过,也按照这个试过,还是不好用。$random函数采用这样{$random}%8的形式,并没有$random(seed)用到
不要使用$random这种随机,其实这个$random是调用系统(UNIX)自带的函数,而不是vcs仿真器(sv)里面的,这个是不受种子(seed)控制的,要使用$urandom,或者$urandom_range。
嗯 同求此问题答案
应该是用 不同的种子来运行
module test_seed;reg [9:0] test_reg;
initial begin
test_reg = $urandom(256);
$display("test_reg is %b",test_reg);
end
endmodule
vcs test_seed.v -sverilog
./simv +ntb_random_seed=5
// ./simv +ntb_random_seed=56
这两个随机数还是一样的,这样写有什么问题吗
你这样做并没有使用vcs的随机生成器,给你个例子:
program test();
class a;
rand int i;
constraint c_i{i inside [1:10]};
endclass
a u_a;
initial begin
u_a = new();
u_a.randomize();
end
endprogram;
这样子出来的i值就是受ntb_random_seed控制的,一般都是这样用。
高手啊,十分感谢。不过这是systemverilog吧,如果用verilog怎么写呢?
$urandom(256);
你这样写就是指定种子为256,当然换随机种子也不起作用了。把256去掉再试一下。
再个,random相关的可以看一下sv的IEEE标准说明文档。
嗯,我再看下,sv没有用过。十分感谢
直接加选项 +ntb_random_seed_automatic
这样的种子都是随机产生的不就可以了
受教了
Thanks..
紫薯布丁