【问题标题】:System Verilog Assertion bit vector系统 Verilog 断言位向量
【发布时间】:2016-06-29 18:02:33
【问题描述】:

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

【问题讨论】:

  • 请展示您尝试过的内容。仅供参考,在 Verilog 中,0110 读为十进制 110; 4'b0110 被读取为二进制十

标签: system-verilog system-verilog-assertions


【解决方案1】:
assert property  ( @ (posedge clk )  (a == 32'b0110) |=> ( b > 32'd0 && b < 32'd32 ) );

assert - 将属性(断言)设置为行动。该属性必须基于时钟。在设计中选择触发寄存器ab 的适当时钟。隐含运算符|=&gt; 表示该属性在下一个时钟周期中必须为真。在这种情况下,如果 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2015-12-19
    • 2014-06-01
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多