0

我想断言,如果在当前周期信号'a'等于“0110”(二进制)在下一个周期信号'b'不大于31(它应该在0和31之间。它应该小于00000000000000000000000000011111)(它的宽度等于 32)每个人都可以帮我写断言吗?!请原谅我的英语不好。

4

1 回答 1

1
assert property  ( @ (posedge clk )  (a == 32'b0110) |=> ( b > 32'd0 && b < 32'd32 ) );

断言 - 将属性(断言)设置为行动。该属性必须基于时钟。a在设计中选择触发寄存器和的适当时钟b。隐含运算符|=>指示该属性在下一个时钟周期中必须为真。在这种情况下,如果a等于 6,则下一个周期b必须在 0 到 32 之间)。

如果发生故障,将显示一些类似的消息(基于模拟器)。

top.unnamed$$_0: started at  ns failed at  ns
    Offending '((b > 0) && (b < 32))'

您可以阅读有关断言的基本教程

https://www.doulos.com/knowhow/sysverilog/tutorial/assertions/

于 2016-06-29T22:14:00.010 回答