在systemverilog代码运行中,EDA工具会先给1个随机种子值(seed),所有代码里的随机数都是根据这个初始种子衍生出来的。因此,通常来说,只要代码没有改动,且初始种子一样,那么仿真运行结果也一样。那么在questasim里如何设置和查看种子值呢?
1. 设置种子值
Questasim给vsim命令提供了-sv_seed | random的参数。有几个关键点:
如果vsim后面没有跟着sv_seed,那么默认seed是0;
如果vsim后面跟着sv_seed,但没有提供 或 random,那么会报错;
如果sv_seed后面跟着非负32-bit整数(interger),那么这个非负整数就是初始seed值。如果是无效值的话,那么questasim会报warning信息并且忽略掉;
如果sv_seed后面这个random单词的话,那么vsim命令每次运行都会使用随机生成的seed;
sv_seed在modelsim.ini文件里是只读的,不能改写;
2. 读取种子值
Questasim里提供了$get_initial_random_seed系统函数,User可以在systemverilog code里调用这个系统函数就可以得到当前仿真使用的初始seed值。
另外一种方式是在Tcl shell窗口中,通过echo $Sv_Seed把seed值展示在shell窗口。
3. 使用例子
3.1 设置初始seed值为666的整数:
vsim -sv_seed 666
3.2 设置初始seed值为随机数:
vsim -sv_seed random
4. 测试代码
测试代码如下:
vsim -sv_seed random
$display("1. The seed is: %0d, random data:%0d", $get_initial_random_seed, $urandom);
vsim -sv_seed 666
$display("2. The seed is: %0d, random data:%0d", $get_initial_random_seed, $urandom);
vsim
$display("3. The seed is: %0d, random data:%0d", $get_initial_random_seed, $urandom);
vsim -sv_seed
$display("4. The seed is: %0d, random data:%0d", $get_initial_random_seed, $urandom);
结果如下:
1. The seed is: 281111952, random data:3445949350
2. The seed is: 666, random data:3072267859
3. The seed is: 0, random data:313949478
Error. Use the -help option for complete vsim usage.
4. Error. Use the -help option for complete vsim usage.
-
EDA工具
+关注
关注
5文章
275浏览量
33799 -
Verilog
+关注
关注
30文章
1370浏览量
114135 -
TCL
+关注
关注
11文章
1794浏览量
91057
发布评论请先 登录
Questasim软件安装破解教程
怎么在uvision里查看数据寄存器的值?
293无法更新模拟器questasim的设置文件怎么办?
用R命令查看的寄存器的值是当前CPU中AX这些寄存器真实的值吗?
在keil软件的debug环境下查看变量的值,为什么有时添加不进去?
ModelSim和QuestaSim功能简介及应用
通过种子发芽箱来实时掌控种子发芽的环境
种子发芽箱的产品特点,它的使用效果如何
种子发芽箱主机的作用,让种子发芽率得到极大的提高
Proteus里设置任意电源值的POWER的实现
Questasim与Visualizer的livesim仿真如何启动呢?

在questasim里如何设置和查看种子值呢?
评论