verilog产生随机数序列_verilog testbench产生随机数的疑问

51cto/2023/10/1 3:39:45

在使用verilog testbench产生随机数时碰到如下疑问:

testbench中的代码:

read_times = $random;

vcs命令为:

vcs -full64 -sverilog -debug_pp

simv +ntb_random_seed_automatic

尽管每次产生的seed不同,但每次跑vcs得到的read_times都是相同的。

如果把testbench中的代码改成如下:

read_times = $urandom;

则每次跑vcs可以得到不同的read_times。

从systerverilog的标准中也看不出$random和$urandom有什么区别(除了$urandom产生无符号数外)。

1、随机系统函数包括$random(seed),$urandom(seed),$urandom_range(min,max),$srandom(seed),其中$random(seed)是verilog2001的语法,后面3个是sv的语法。

2、$random与$urandom除了有无符号的区别还有其他不同。sv语法中有提到线程稳定性的区别。

3、$random如果不带种子会使用系统缺省的种子产生随机数,这可能是每次不变的原因,你带上种子参数试试看是是否改变。

4、$urandom不带种子也可以随机,我猜测可能是因为verilog与sv对其处理机制不一样,且也不能排除不同编译仿真器对其理解的不同而导致的。

多谢回答!

$urandom不带种子可以随机,是因为simv加了这个option:+ntb_random_seed_automatic

表示加入以日期和服务器ID组合成的种子,即每次仿真的种子不同。

$random我试过带不同的种子,但每次仿真仍然是相同的。使用simv+ntb_random_seed_automatic

也仍然没有效果。

看来我没有说清楚,你使用ntb_random_seed_automatic这个只是产生了随机的种子而已,但随机序列发生器需要用不同的种子进行初始化才会得到不同的随机数。

可以使用$srandom(seed)来,也可以直接使用$random(seed).系统函数必须带种子的参数,否则使用缺省种子,即种子不会改变。

你说的是对的。

$random必须通过$random(seed)的方式指定seed,seed不同则得到的随机数不同。

$urandom可以通过$urandom(seed)的方式指定seed,此时:simv+ntb_random_seed_automatic

不起作用。

$urandom也可以不指定seed,通过simv+ntb_random_seed_automatic得到随机的seed值,此时也可以得到随机数。


http://www.ngui.cc/51cto/show-574.html

相关文章

python网络测速_网络测速命令--speedtest

网络测速speedtest-cli顾名思义,这个命令为网络测速命令,基于Python编写,测试系统网络的上传下载速度,GitHub托管的项目地址,以下列出常见的用法安装命令pip install speedtest-cli使用命令# 查看帮助,具体…

如何为一个springboot项目添加test模块

操作步骤 1、选择project structure 2、添加一个新的文件夹test 3、将该文件夹标记为test模块 4、在test包下添加和main包下一样的目录 5、添加测试类 SpringBootTest public class test {ResourceDigitalScreenService digitalScreenService;Testpublic void test(){digital…

linux speedtest-cli测速报错

安装 Speedtest CLI&#xff1a;适用于命令行的互联网速度测试 timeout报错&#xff08;我用了python3运行的&#xff09; #python3 speedtest.py Retrieving speedtest.net configuration... Cannot retrieve speedtest configuration ERROR: <urlopen error timed out&…

MyBatisPlus-if_test注意事项

例子实体&#xff1a; Integer为0传不进判断条件 解决方法&#xff1a; 如果数字为0 加一个判断条件 ! null 数组长度为0时&#xff0c;报错 解决方法&#xff1a; 判断列表的size > 0 注意&#xff1a;取列表size需要保证列表不为null

【eclipse】java 使用test注解

使用test注解 1、配置环境 选中java工程 -> 鼠标右击 ->properties -> Java Build Path - > Libraries -> Add Library -> JUnit 添加完成后就可以在方法上使用Test注解了。 2、运行&#xff1a; 1、点击左上角的运行按钮是运行所有的测试方法 2&#xff…

phoronix-test-suit安装与测试

介绍 phoronix-test-suite是Linux下的一款性能测试软件&#xff0c;其实就是一款集中测试软件&#xff0c;该软件集成了各式各样的测试软件&#xff0c;但是每个测试项都要联网下载。整个的流程就是&#xff0c;联网下载各种测试项&#xff0c;测试套件&#xff0c;并在本机环…

train_test_split用法总结

sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档&#xff1a;http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split 一般形式&#xff1a; train_test_spli…

linux在根目录下创建目录一test,Linux练习题

1.利用pwd命令显示当前目录pwd2.ls命令 ls -a命令的区别没路径 有路径3.man命令查看ls的手册man ls4.在根目录下创建test目录mkdier test5.在test目录下创建user1/user2目录结构mkdier user1 user26.利用touch命令在user2下创建文件myfiletouch myfile7.利用cp命令将myfile复…

SpringBoot - @SpringBootTest加速单元测试的小窍门

文章目录Preclasses用法webEnvironment用法Pre SpringBoot - 应用程序测试方案&#xff0c; 随着代码量的争夺&#xff0c;测试类的启动速度变得越来越慢&#xff0c;而大多数情况下只是为了测试一下某个实现类的某个方法而已&#xff0c;比如测试一个DAO层的方法&#xff0c…

分享一个超详细的数据分析案例【Python】附ABTest详细介绍

大家好&#xff0c;我是老吴&#xff0c;大家也可以叫我吴同学&#xff0c;再小一点的朋友也可以叫我吴师兄。欢迎大家跟我一起走进数据分析的世界&#xff0c;一起学习&#xff01; 感兴趣的朋友可以关注我或者我的数据分析专栏&#xff0c;里面有许多优质的文章跟大家分享哦。…