赞
踩
即使断言与时序无关,在信号变化的时候进入判断、求值。
※使用场合比较少,因为一般来说SVA就是用来检查时序关系。
即使断言例:
- always_test
-
- begin
-
- test:assert ( A && B);
-
- end
即使断言被命名为test,在A或B发生变化时,进入always块,判断A,B是否同时为1,如果不为1,断言报错。
->基于时钟周期
->在时钟边缘按照信号的采样值计算测试表达式。
Comment:
在时钟边缘采样的是上一个时钟周期的稳定值。信号A在时钟周期1,从0->1,也就是一个上升沿。在时钟周期1采样的值是0,时钟周期2采样的值才是1。当前时钟边沿的变化在下一个时钟边沿才能采到。
(这和Verilog设计中的Latch延时类似。)
【常用语法】
①SVA基本结构
//sequence(序列):用来描述待检测事件 sequence name_of_sequence; <expression....>; endsequence //property(属性):用来调用序列,也可以直接描述待检测事件 property name_of_property; <experssion>; or <complex sequence expression>; endproperty //assert:检查属性,插入断言 assert_name:assert property (property_name); Comment: assert插入的是property,单独写序列是不能插入的,序列必须在属性中调用,然后通过assert 才能检查属性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。