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时序检查;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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吗?