SystemVerilog——随机化

随着设计变得越来越大,要产生一个完整的激励集合来测试设计的功能也变得越来越难。编写定向的测试集来检查所有功能项变得不太可能。解决的办法是采用受约束的随机测试法(CRT)自动产生测试集。

准备CRT的环境要比准备定向测试集的环境复杂。简单的定向测试集只需要施加激励,然后人工检查输出结果。正确的输出结果随后可以保存为标准日志文件(golden logfile),用来和今后的仿真结果进行比较,以判断仿真结果的正确性。

CRT环境不仅需要产生激励,还需要通过参考模型、传输函数或其他方法预测输出结果。然而,只要准备好了这个环境,你就可以运行上百次的仿真而无需手工检查结果,从而提高工作效率。这种用CPU时间(计算机的工作)来换取人工检查的时间(设计人员的工作)的方法是CRT的优势。

CRT由两部分组成:使用随机的数据流为DUT产生输入的测试代码,以及伪随机数发生器(PRNG)的种子(seed)。只要改变种子的值,就可以改变CRT的行为。这样仅仅通过改变种子的值,就可以调整每次测试,使得每次测试可以达到很多次定向测试的效果。这种方法还可以产生更多的和定向测试等效的测试集。怎么才能知道是否覆盖了设计的所有方面?通常激励空间是非常大的,以至于无法用for循环来产生各种可能的输人,所以必须采用产生子集的方式来解决这个问题。

SystemVerilog中的随机化

当和OOP同时使用时,SystemVerilog中的随机激励产生是最有效的。首先建立一个具有一组相关的随机变量的类,然后用随机函数为这些变量赋随机值。可以用约束来限制这些随机值的范围。

SystemVerilog可以随机化整型变量,即由位组构成的变量。尽管只能随机化2值数据类型,但位也可以是2值或4值类型。所以,可以使用整数和位矢量,但不能使用随机字符串,或在约束中指向句柄中。

带有随机变量的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

取个名字真难啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值