前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >后仿中的异步D触发器设置

后仿中的异步D触发器设置

原创
作者头像
ExASIC
修改2020-07-15 14:35:19
3K0
修改2020-07-15 14:35:19
举报
文章被收录于专栏:ExASIC

在PR后仿时,经常会遇到讨厌的红色X(不定态)。而debug不定态的起因又很麻烦,有可能用Verdi调试半天还是没能找到根本的原因。

今天我们就来分析一下异步D触发器采样不稳定(setup或hold时序不满足)引起的不定态,及后仿时的处理方法。跨时钟域采样或者时钟域同步电路的第一级D触发器,就是典型的可能会出现不定态的情况,如下图所示。

亚稳态
亚稳态

而设计中似乎又没法避免这种电路。由于clk_aclk_b是异步的,所以图中的DFF2就无法保证setup和hold时序关系。所以在后仿时就需要设置DFF2为notimingcheck。假设DFF2的路径为tb.dut.u_dff2_reg

在cadence的Incisive(NC)中,用-tfile <file>来指定。

1.  Incisive仿真增加参数

代码语言:txt
复制
-tfile notimingcheck.tfile

2.  编辑notimingcheck.tfile文件

代码语言:txt
复制
PATH tb.dut.u_dff2_reg -tcheck

在synopsys的vcs中,用+optconfigfile+<file>来指定。

  1. vcs仿真增加参数
代码语言:txt
复制
+optconfigfile+notimingcheck.cfg
  1. 编辑notimingcheck.cfg文件
代码语言:txt
复制
instance {tb.dut.u_dff2_reg} {noTiming};

如果有多个异步D触发器,就写多行,一行写一条约束。

注意:

notimingcheck本质就是指定不检查局部的timing关系,所以在使用之前一定要确认这条路径是不是真正的异步关系,否则可能隐藏了背后的BUG。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档