sv中关于随机化和数组约束那些事儿----终于整理完了我认为的一些重点

一、为什么需要随机化?

当一个项目的功能越来越复杂,功能项成倍增加时,依靠定向测试集的编写来检查功能点未免压力过大了;

其次,各个功能点之间的关系才是大多数bug的来源,但这种bug很难用定向测试的编写来筛查。只使用定向测试对回归测试也没有意义。

采用受约束的随机测试法(CRT)产生测试集是项目复杂化测试的解决办法,但是CRT的环境建立比普通定向测试环境建立要更加复杂,并且要通过参考模型的建立和线上比较的形式进行对比来验证设计的正确性。参考模型多采用matlab,c,或v语言编写。然而只要搭建好验证环境,便可以进行成百上千次仿真无需检查仿真结果,从而提高工作效率,以CPU工作时间换取人工检查时间------CRT的优势。以此减少测试代码量,产生的激励也更加多样化。通过使用随机的数据流为DUT产生输入的测试代码,并且通过伪随机数发生器(PUNG)改变随机种子的值就可以改变CRT的行为。

二、随机化的语法主要有以下几个方面:

1. 在class中声明随机变量+采用randomize()函数来进行随机化

2. rand或randc型变量的声明只能在class中实现;rand和randc的区别在于是否为有放回抽样随机;

3. 随机化时必须添加约束,如果添加约束后,通过句柄调用随机函数randomize()随机化求解失败,那么不管是哪个随机变量随机化失败,所有变量均不被随机化。

4. 随机化所添加的约束必须和变量位宽相匹配。

例如:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值