随机激励包括:
- 器件配置:寄存器和系统信号
- 环境配置:初始环境配置,例如合理的时钟,和外部反馈信号。
- 原始输入数据:数据包的长度,带宽,数据包间顺序
- 延迟:握手信号之间的时序关系,
req
请求和ack
之间的延迟响应。 - 协议异常:给出随机异常反馈,确保dut处理数据的稳定性。
说明:
所有的随机激励应该放到随机类class
中,随机变量使用rand
或者randc
来表明随机属性。在调用随机化变量时,使用randomize()
函数做随机化处理,产生一个随机化值。
另外随机变量需要被约束constraint
,产生随机值,必须在约束范围内。
例子:
assert
判断随机化是否成功,成功返回1
,不成功返回0
,相当于if
语句。只有返回1
时,才会往下走。
rand
和 randc
的区别:rand
是全不随机,randc
是周期随机,下次随机的数跟上次随机的数不一样,可以遍历所有的约束值。
sv
只能随机出2值逻辑
,无法随机出x