首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用$display/uvm_error的sva事件调度

使用$display/uvm_error的sva事件调度
EN

Stack Overflow用户
提问于 2021-03-19 04:33:37
回答 1查看 35关注 0票数 0

因此,我记得当断言触发时,断言中的数据信号来自时钟沿之前。

我想在我的断言中放一条有用的错误消息,让用户知道哪里出了问题,但是当$display()发生时,数据已经改变了。

例如,当发生就绪/有效握手时,无论何时data=0,下面的断言都将失败。但是,如果在触发断言时恰巧存在数据的上升沿,则打印的$display将显示data=1。

代码语言:javascript
复制
  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,看起来所有的模拟器都做了同样的事情,所以这似乎是我的错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 06:23:00

您所需要做的就是添加$sampled(data)

代码语言:javascript
复制
POS_DATA: assert property ((ready & valid) |-> data) else $error(" POS_DATA fail data:%d",$sampled(data));

而且你应该使用$error而不是$display。当你开始运行回归并获得覆盖报告时,你会感谢我的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66698739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档