当我们做后仿时我们究竟在仿些什么(四)

 就像人类容易接受自然数,但对于负数缺乏某种直觉上的认识一样;后仿过程中经常出现的 Negative Delay 和 Negative Timing Check 也非常容易使人困惑。

Warning-[SDFCOM_NICD] Negative INTERCONNECT Delay encountered

 今天这篇首先简要分析这些 Negative 们产生的原因,然后看一下 EDA 工具是如何处理它们的。

产生 Negative Delay 的原因

        从根本上来说有两种原因。一种是测量的原因,比如输入和输出信号的观测方法不同,导致输出信号反而比输入信号在时间上提前;一种是信号在传输过程中真实发生了某种变化,导致信号跳变的提前。

        具体原因大概分下面几种。

Voltage Converting

        信号在不同电压域之间的转换可能会导致负延时产生,如下图所示。

图片

        假设都以 50% VDD 为信号跳变的阈值,那么如果信号从高电压域输出到低电压域,50% VDD 对应的时刻反而会提前,导致负延时的出现。这种极端情况出现的前提是信号的 Transition Time 足够的大,连器件的正延时都不足以抵消电压下降带来的负延时。

Threshold Converting

        阈值转换的原因其实类似于电压转换,如果输出负载的阈值低于该器件的输入阈值,并且信号的 Transition Time 也足够的大,那么从观测者的角度,信号在输出时被观测到逻辑跳变的时刻反而提前于输入跳变的时刻。

图片

Noise

        信号在传输过程中难免受到一些干扰,如果这种干扰来自于相邻的器件或者走线,就称之为串扰(crosstalk)。串扰可能造成信号传输的滞后或者提前。

造成提前的情形如下图所示。

图片

        红色实线表示输入信号;绿色虚线是没有串扰的输出信号,如果在这个输出信号跳变之前有个串扰发生(黑色实线),会在输出上产生一个很短的高脉冲(绿色实线),和原本的输出信号合起来看,就相当于输出信号的跳变提前了。如果这个提前量足够大,就相当于该器件有了一个负延时。

Calculation

        还有一些负延时来自于 EDA 工具特定算法的计算过程。比如时序模型做数值计算过程中引入的误差;针对 stage delta delay 和 net delay 分别做 derating 可能引入的负值。这些理解起来不那么浅显,就不做详细的解释了。

EDA 工具如何处理 Negative Delay

        这个问题有点复杂,因为各家 EDA 公司的仿真器都有不同的算法来解决。

        从直观的角度来考虑,一个负延时总归是要结合其相邻的器件延时、线延时来解决的,用整体更大的正延时来抵消局部的负延时。

        有些仿真器干脆做简化处理,把从 SDF 中读取的负延时直接变为零延时。这种做法无可厚非,是符合 Verilog 和 SDF 标准的。

打开 VCS 仿真器的负延时特性,就是在编译时加上-negdelay选项。

        另外,PT 写出 SDF 时是默认带有 Negative Delay 和 Negative Timing Check 的,如果不想写出这些负值,需要加上如下的特定选项,这时 PT 会自动把相关负值都变成零。

pt_shell> write_sdf -no_negative_delays {timing_checks | cell_delays | net_delays} postsim.sdf
产生 Negative Timing Check 的原因

        Negative Timing Check 中的 Negative 其实和 Negative Delay 中的 Negative 不太一样,前者只是描述器件时序特性参数时规定的一种算术表达形式。

Positive Setup/Hold Timing Check

先看一个常见的 Setup Limit 和 Hold Limit 都为正值的例子。

        下图是一个标准单元 D 触发器的框图,我们接下来所讨论的时序检查都是相对于最外层框图所对应的管脚。

图片

        仿真模型中用来检查时序的语句如下,其中的 Setup Limit 和 Hold Limit 的具体数值都是从 SDF 文件取出后反向标注到网表的。

$setuphold (posedge clock, data, 2, 3, notifyreg);

        这种语法模式下,Clock Event 的时刻规定为 0 时刻;Data Event for Setup Check要早于 Clock Event;Data Event for Hold Check 要晚于 Clock Event;符合这种一般情况的时序参数,包括 Setup Limit 和 Hold Limit 都用正值来表示。

图片

        但是标准单元内部因为一些特殊的设计,会造成 Clock 和 Data 到达内部真正的时序器件的延时不同,这样从外部来看,时序参数会有一些不同的情况。

Negative Setup Limit

        从下面的示意图可以看出,Negative Setup Limit 的产生主要是因为标准单元内部 Clock 上的延时相对较大,从外部来看,Data Event for Setup Check 就可以晚一些来,如果晚于 Clock Event(时刻为 0),就用负值来表示(和早于的情况相反)。

图片

$setuphold (posedge clock, data, -2, 7, notifyreg);

图片

Negative Hold Limit

        从下面的示意图可以看出,Negative Hold Limit 的产生主要是因为标准单元内部 Data 上的延时相对较大,从外部来看,Data Event for Hold Check 就必须早一些来,如果早于 Clock Event(时刻为 0),就用负值来表示(和晚于的情况相反)。

图片

$setuphold (posedge clock, data, 7, -2, notifyreg);

图片

EDA 工具对于 Negative Timing Check 的支持

        当时序参数存在负值的情况时,必须要用 $setuphold 以及 $recrem 来表示;而不能用单独的 $setup$hold$recovery$removal。具体语法如下。

$setuphold(reference_event, data_event, setup_limit,
hold_limit, notifier, [timestamp_cond, timecheck_cond,
delayed_reference_signal, delayed_data_signal]);

$recrem(reference_event, data_event, recovery_limit,
removal_limit, notifier, [timestamp_cond, timecheck_cond,
delayed_reference_signal, delayed_data_signal]);

        并且从 STA 工具写出 SDF 文件的时候,需要设置恰当的选项,来支持这种标注语法。例如:

pt_shell> write_sdf -version 3.0 -include {SETUPHOLD RECREM} postsim.sdf

        同样,在调用仿真器的时候,例如 VCS,需要加上 +neg_tchk 的编译选项来支持 Negative Timing Check 的动态仿真。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GX Simulator 3是一款模擬觸屏操作的軟體,主要用於工業自動化系統的設計、測試和調試。安裝GX Simulator 3需要以下步驟: 1. 下載GX Simulator 3安裝程式,並解壓安裝檔案。 2. 雙擊安裝程式,選擇“安裝模式”,點擊“下一步”進行安裝。 3. 選擇安裝目錄,點擊“下一步”。 4. 選擇要安裝的軟體組件,點擊“下一步”。 5. 設定安裝選項,例如快捷方式和繁體中文語言等,點擊“下一步”。 6. 開始安裝,等待安裝過程完畢。 7. 點擊“完成”退出安裝程式。 安裝完成後,使用GX Simulator 3需要輸入正確的授權碼。使用時,打開GX Simulator 3,選擇模擬觸屏類型、設定觸屏參數和模擬觸屏操作即可。此軟體支援多種觸屏模擬,例如電阻式、電容式和表面聲波式等,能夠有效提高自動化系統的設計和測試效率。 ### 回答2: 触屏仿真GX Simulator 3是一套专门用于训练PLC控制系统和工业自动化控制技术的软件,除了具有仿真系统的功能外,还可以对控制系统进行调试和优化。在安装GX Simulator 3之前,首先需要确定自己的计算机硬件配置是否能够满足其运行的需求,然后可以按照以下步骤进行安装: 1. 下载GX Simulator 3软件安装文件,并双击运行该文件。 2. 在弹出的安装界面中,选择“安装GX Simulator 3”,然后点击“下一步”。 3. 阅读并同意许可协议,然后点击“下一步”。 4. 选择要安装的组件,如果只需要基本的仿真功能,可以只选择“GX Works2 GX Simulator”组件。如果需要完整的控制与仿真功能,可以选择“GX Works2 GX Simulator + GX Developer”组件。 5. 设置软件的安装路径和语言版本,并点击“下一步”。 6. 在安装前确认界面上,检查所有设置是否正确,然后点击“安装”按钮。 7. 等待软件安装完成后,根据需要进行注册和激活即可使用。 需要注意的是,由于GX Simulator 3软件功能较多,因此在安装和使用时需要按照软件的指导说明进行操作。此外,在使用时还需要了解PLC控制系统和自动化控制技术的基本知识,才能更好地利用GX Simulator 3进行仿真和调试。 ### 回答3: GX Simulator 3是一套製造機器人和工業自動化產品的仿真模擬軟體,能夠幫助使用者進行各種測試,包括驗證控制系統和確定生產效率。傳統的GX Simulator 3安裝需要使用滑鼠和鍵盤操作,在某些情況下,這些方式會限制人們的操作。當然,這已經過時了,現在大多數設備都是配有觸屏的。 觸屏仿真GX Simulator3的安裝很簡單容易,只需使用手指操作觸屏即可,安裝時不需要其他額外的工具。首先,在裝置上安裝仿真軟體,接著選擇觸屏選項,然後按照屏幕指示進行操作即可完成。在觸屏模式下,使用者可以更加方便地操作和使用仿真軟體,實現新的操作方式和體驗。觸屏操作不僅方便,還能使控制變得更加靈活和有效。 總之,通過觸屏仿真GX Simulator3的安裝方式,可以幫助使用者更加方便地操作仿真軟體,進行多種測試,驗證機器人和工業自動化產品的控制系統,以及確定生產效率。觸屏模式不僅方便,還提高了操作靈敏度和效率。通過使用觸屏仿真GX Simulator3,使用者可以更加輕鬆地完成操作和配置項目,提高工作效率,提高工作品質。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值