Input Delay: Falling Clock Edge
input delay使用下面的命令进行约束
set_input_delay -max 1.5 -clock CLK [get_ports Input1]
综合工具假设数据是由外部逻辑的正边沿触发的触发器启动的(setup分析的最大输入延迟为1.5ns)。
但是,如果数据是由下降沿触发的触发器启动的,那么我们必须修改约束,以便综合工具识别。我们必须包含一个带有clock_fall选项的约束。
考虑上图所示的例子;FF-3的CK到Q延迟为0.2ns,与combo logic-4相关的最大延迟为0.8ns。如图所示,FF-3是一个负边沿触发的触发器。因此,为了约束输入端口,我们必须使用
create_clock -period 5 [get_ports CLK]
set_input_delay -max 1 -clock CLK -clock_fall [get_ports Input1]
Input Delay: Multiple Input Paths
考虑上图所示的示例;有两个路径正在多路复用mux并连接到我们的IP输入端口——Input1。输入由时钟的负边沿启动,IP内部使用上升沿采样。我们希望综合工具考虑两个路径的到达时间,并约束我们的输入combo logic-1,以使两个路径都能够按时到达。
假设-时钟周期为10ns,FF-3和FF-4的CK到Q延迟为0.2ns;与combo logic-4和combo logic-5相关的延迟分别为0.8ns和2.3ns;mux延迟为0.5ns。
为此,我们从创建时钟开始——
create_clock -period 10 [get_ports CLK]
然后我们定义了输入数据的到达时间——
set_input_delay -max 1.5 -clock CLK -clock_fall [get_ports Input1]
最后,我们约束了一个路径(在这里,我们需要一个add_delay选项,因为我们正在对已经被约束的同一端口施加约束;这确保了第二个约束不会覆盖第一个约束)-
set_input_delay -max 3 -clock CLK -add_delay [get_ports Input1]