GLS-notifier

资料来源

(1) 【仿真】后仿真中的notifier是奏啥滴! - nanoty - 博客园 (cnblogs.com)

(2) IEEE Standard for Verilog

1.1 什么是notifiers?

(1) notifier是用户自定义的时序违例的响应,用于通知发现违例;

(2) 时序检查检测到时序违例后,notifier会发生变化;因此可以用于打印描述违例的error信息或者传播x态值用于报告时序违例(该参数的变化一般会影响到模拟触发器的UDP中真值表的行为,从而使触发器模型输出不定态,最终将不定态反映到仿真输出上);

(3) notifier是一个reg类型变,在调用时序检查tasks的module里面声明,并且会作为时序检查tasks的最后一个参数;当时序违例发生时,时序检查会更新notifier的值;

 

(4) notifier对于所有的系统时序检查而言,是一个选择性的参数,可以不传递;如果notifier不包括在时序检查任务中,那么该时序检查任务在检测到违例时,并不会改变notifier的值,也不会通过UDP将该违例反映在具体的波形输出上,从而很容易导致时序违例被忽略掉;

1.2 notifier使用示例

1.3 发生时序违例后,notifier怎么变化?

(1) 一般操作中,不要人为改变notifier的值,这样可能导致notifier的变化出现不期望的情况;

(2) 不要把notifier的值改为z,此时如果发生违例,违例前后notifier的值都是z, UDP就不会发现notifier发生变化;

(3) 如果不想让notifier的变化影响到仿真结果,可以将notifier从时序检查任务的参数列表中删除;

(4) 主流EDA工具都提供仿真命令参数"+no_notifier",通过这个命令参数可以使时序检查任务中检测到时序违例后,不影响其参数列表中notifier的值,从而避免了notifier变化引起UDP输出不定态的情况,但是log中依然会报时序违例信息;

(5) 后仿时,不仅需要查看仿真波形,还需要检查后仿真的log文件中的时序违例信息;

1.4 精确仿真的要求与implicit/explict delayed signals

1.4.1 为了精确建模负值时序检查,下面的条件需要满足:

(1) 如果在时序违例窗口内,信号发生变化,时序违例需要被触发;

(2) The value of the latched data shall be the one that is stable during the violation window, again, exclusive of the end points;

1.4.2 为了有助于上面的建模条件,数据与参考信号的delayed copies会在时序检查中产生,在仿真中的时序检查评估中应用;

(1) implicit delayed signals

如果timing check内没有生命delayed signal,并且还存在负的setup或者hold value, implicit delayed signals将会被创建; 由于隐式的delayed signals不能被用来定义model行为,这样的model可能会异常;

 在上面的例子中,对于CLK与DATA, implicit delayed signals将会被创建;

 在上面的例子中,对于CLK,DATA1,与DATA2,implicit delayed signals将会被创建. 尽管CLK在两个不同的时序检查中都用到,但是只有一个implicit delayed signal被创建;

(2) explict delayed signals

在上面的例子中,del_CLK, del_DATA1是为CLK和DATA1创建的explicit delayed signals,同时会为DATA2创建implicit delayed signal;

1.5 implicit/explicit delayed signals的应用

(1) 信号的delay版本,应该用于$setup, $hold, $setuphold, $recovery, $removal, $recrem, $width, $period, $nochange时序检查;

(2) 信号的delay版本,不应该用于$skew, $fullskew, $timeskew时序检查;

posted on   知北游。。  阅读(490)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示