【发布时间】:2021-03-18 20:33:36
【问题描述】:
所以我记得当断言触发时,断言中的数据信号来自时钟沿之前。
我想在我的断言中添加一条有用的错误消息,让用户知道出了什么问题,但是当 $display() 发生时,数据已经改变了。
作为示例,当发生就绪/有效握手时,只要 data=0,以下断言就会失败。但是,如果在断言触发时恰好有数据的上升沿,则打印的 $display 将显示 data=1。
default clocking CLK @(posedge clk);
endclocking
//Assertion triggers an error if data is not = 1 when new data is clocked into the DUT.
POS_DATA: assert property ((ready & valid) |-> data) else $display("[%t] POS_DATA fail data:%d",$time,data);
有没有更好的方法来编写这个断言?
创建了一个EDAPlayground Example,看起来所有的模拟器都做同样的事情,所以这似乎是我的错。
【问题讨论】:
标签: system-verilog system-verilog-assertions