时序约束

_images/TimingConstraints.jpeg
  • 按前面的顺序去索引,找到对应情况,按要求约束

  • 开始时至配置时钟,不配置 input delays、output delays和时序例外

  • 待内容时钟完全通过后,再配置input delays、output delays

  • 时序例外是最后差不多要完工了再配置

create clocks

  • 建立/保持时间是D触发器的一个固有属性

  • 在时钟跳变沿到来前、后的一段时间内输入数据要稳定不变,“前”称之为建立时间,“后”称之为保持时间

  • D触发器的数据输入端必须在建立时间前到达,而且要保持到持续时间之后

  • Tmin = Tco+Tdata+Tus 寄存器传输延时、组合逻辑延时、建立时间

建立/保持时间

建立时间是电路延时的一部分

电路的延时

寄存器间最长的延时

关键路径

决定最高的时钟频率

时钟频率

提高一个电路工作频率的方法

流水线设计

时钟定义的先后顺序

  • 时钟的定义也遵从 XDC/Tcl 的一般优先级

  • 同一个点上,用户定义的时钟会覆盖工具自动推导的时钟

  • 后定义的时钟会覆盖先定义的时钟

  • 若要二者并存,必须使用 –add 选项

输入时钟

输入管脚CLK

create_clock  -name SysClk  -period 10 -waveform {0 5} [get_ports Clk]
create_clock  -name SysClk  -period 10 -waveform {0 5} [get_ports Clk]

差分时钟

使用create_clock来约束P端即可(XILINX)

create_clock  -name clk_200  -period 5  [get_ports  clk_200_p]

GT或恢复的时钟

create_clock  -name txclk  -period 6.667  [get_pins GT/TXOUTCLK]

约束 GT IP 核的输出 TXCLK

PLL等衍生时钟

  • 工具自动推导,一般无需约束

  • 但建议用下面约束,可以确定时钟名,方便用其来生成其它约束

create_clock  -name clk_200  -period 5  [get_ports  clk_200_p]

Create_generated_clock  -name my_clk_name [get_pins  mmcm0/CLKOUT]  -source [get_pins mmcm0/CLKIN]  -master_clock  clk_200

ALTERA如想让工具自动推导,只需要下面约束

create_clock  -name clk_200  -period 5  [get_ports  clk_200_p]

derive_pll_clocks

自己分频时钟

create_clock  -name CLK1  -period 5  [get_ports  CKP1]

create_generated_clock  -name  CLK2 [get_pins REGA/Q]  -source [get_ports CKP1]  -divide_by 2

input delays

zheli

output delays

zheli

set timing exceptions

zheli