本文由知乎
赵俊军
授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19
本章节将介绍各种类型输入和输出路径的时序分析过程以及几种常用的接口,还介绍了特殊接口(例如SRAM)的时序分析和源同步接口(例如DDR SDRAM)的时序分析。
9.1 IO接口
本小节中的示例说明了该如何定义DUA输入和输出接口的约束。后面的小节介绍了SRAM和DDR SDRAM接口的时序约束示例。
9.1.1 输入接口
有两种指定输入接口时序要求的方法:
-
以AC约束的形式指定DUA输入端的波形。
-
指定外部逻辑到输入的路径延迟。
指定输入端口的波形
考虑图9-1中所示的输入AC约束:输入CIN在时钟CLKP的上升沿之前4.3ns必须保持稳定,并且必须要保持稳定直到时钟上升沿之后2ns。
首先考虑4.3ns的约束,给定时钟周期为8ns(如图9-1所示),这约束了从虚拟触发器(驱动该输入的触发器)到输入端口CIN的延迟。从虚拟触发器时钟引脚到CIN的延迟最大为3.7ns(= 8.0-4.3), 这样可确保输入CIN处的数据在上升沿之前4.3ns到达。因此,AC约束的这一部分可以等效地指定为3.7ns的最大输入延迟。
AC约束还指出,输入CIN在时钟上升沿之后2ns必须继续保持稳定,这也约束了虚拟触发器的延迟,即从虚拟触发器到输入CIN的延迟必须至少为2.0ns。因此,最小输入延迟指定为2.0ns。
以下是输入延迟约束:
-
create_clock -name CLKP -period 8 [get_ports CLKP]
-
set_input_delay -min 2.0 -clock CLKP [get_ports CIN]
-
set_input_delay -max 3.7 -clock CLKP [get_ports CIN]
以下是设计在这些输入延迟约束下的路径报告,首先是建立时间检查:
指定的最大输入延迟(3.7ns)被添加到了数据路径中。建立时间检查会确保DUA内部的延迟小于4.3ns,这样就可以锁存到正确的数据。 接下来是保持时间检查:
最小输入延迟将被添加到保持时间检查的数据路径中。该检查可确保最早的数据在时钟沿之后的2ns处才变化,这样就不会覆盖触发器上捕获到的先前数据。
指定输入端口的路径延迟
已知连接到输入的外部逻辑的路径延迟后,指定输入约束就是一件很简单的事情了。将沿外部逻辑路径到输入的任何延迟全部相加起来,然后使用set_input_delay命令去指定路径延迟。
图9-2给出了一条输入的外部逻辑路径示例。Tck2q和Tc1延迟相加就是外部延迟,知道了Tck2q和Tc1,就可以直接获得输入延迟&