ic验证笔记-20天挑战day7

这篇博客详细介绍了SystemVerilog在硬件验证中的随机化技术,包括随机约束和分布、约束块控制、随机函数的使用,以及数组约束的应用。重点讲解了如何通过随机化函数和约束来确保测试的覆盖率和有效性,强调了在随机化过程中对逻辑0、1、X、Z的处理以及如何实现唯一性和时序关系的约束。
摘要由CSDN通过智能技术生成

1.sv随机约束和分布

随机测试相比于定向测试要求更复杂,随机不意味着绝对自由,需要满足一定的联系

器件配置:通过寄存器和系统信号

环境配置:随机化验证环境,例如合理的时钟和外部反馈信号

原始输入数据:例如mcdf数据包的长度,带宽,数据间的顺序

延时:握手信号之间的时序关系,例如valid和ready,req和ack之间的时序关系

协议异常:如果反馈信号给出异常,那么设计是否可以保持后续数据处理的稳定性

随机化函数 std::randomsize

调用randomize()的变量必须是rand 变量

class Packet;

rand bit [31:0] src, dst, data[8]; //随机化变量

randc bit [7:0] kind; //randc周期随机性,所有可能的值都产生过,才会产生新的一轮

constraint x {src > 10;

               src < 15;} //添加约束

endclass

Packet p;

initial begin

        p = new();

        assert(p.randomize()) else //随机化类

        $ fatal(0, "Packet::randomize failed")

        transmit(p);

end

sv对于logic类型,也只能随机化0或 1,不能随机化X和Z

class data;

        rand bit [2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值