4 约束的详情
4.1 Input Delay
4.1.1 Input Delay是指什么?
不是设置pin脚到内部寄存器D口的延时,而是告诉编译器vivado外部数据相对于时钟管脚的max/min延时。 Input Delay用来告诉FPGA外部进来的数据信号和时钟的相位关系,FPGA根据相位关系,能够数据进入FPGA后第一级寄存器的位置,使得满足FPGA的setup time和hold time要求。
以fpga时钟输入引脚为参考点,时钟采样沿到数据有效的max和min延时。
输入port的时钟与数据的关系。
set_input_delay [-h | -help] [-long_help] [-add_delay] -clock [-clock_fall] [-fall] [-max] [-min] [-reference_pin ] [-rise] [-source_latency_included]
4.1.2 Input Delay分几种?
分两种
1. System Synchronous Input 外部芯片和FPGA使用同一个晶振的时钟。
2. Source Synchronous Input 包含随路时钟。
4.1.3 System Synchronous的Input Delay
Tclkd_ext表示外部时钟源到外部芯片的延时;
Tclkd_int表示外部时钟源到FPGA输入端口的延时;
Tco表示外部芯片tCO时间;
Tbd表示外部芯片输出端口到FPGA芯片的板上延时。
约束的格式
相较于时钟的路径延时Tclkd_int,数据的路径延时为Tclkd_ext+Tco+Tbd
input delay = 数据的路径延时 - 时钟的路径延时 =(Tclkd_ext+Tco+Tbd) - (Tclkd_int)
set_input_delay -clock CLKB -max [Tclkd_ext_max + Tco_max + Tbd_max – Tclkd_int_min] [get_portsDIN]
set_input_delay -clockCLKB-min [Tclkd_ext_min + Tco_min + Tbd_min – Tclkd_int_max] [get_portsDIN]
4.1.4 Source Synchronous的Input Delay
Tcd表示外部芯片时钟输出到FPGA输入端口的延时;
Tco表示外部芯片tCO时间;
Tbd表示外部芯片输出端口到FPGA芯片的板上延时。
max_input_delay = Tbd_max + Tco_max - Tcd_min
min_input_delay = Tbd_min + Tco_min - Tcd_max
源同步输入的约束相比于系统同步输入的复杂些,其根据时钟与数据的关系,可分为:
1. 边缘对齐(Edge Aligned Clock&Data)
2. 中心对齐(Center Aligned Clock&Data)
4.1.4.1 中心对齐
create_clock -name CLKB -period clk_period [get_ports {CLKB}]
set_input_delay -clock[get_clocks CLKB] -max max_input_delay [get_ports indata]
set_input_delay -clock[get_clocks CLKB] -min min_input_delay [get_ports indata] -add_delay
-add_delay 是什么含义?
4.1.4.2 边缘对齐
边缘对齐是指时钟和数据到达后级时序单元时,时钟沿与数据变化沿重合。因为数据延后与时钟,不满足FPGA的输入setup时序。需要时钟需要经过一定的移相才能去采集数据。
create_clock -name CLKB -period clk_period [get_ports {CLKB}]
create_generated_clock -name CLKB_90 -source [get_clocks CLKB] –phase 90 [get_pins{MMCM|co[0]}]
set_input_delay -clock[get_clocks CLKB_90] -max max_input_delay [get_ports indata]
set_input_delay -clock[get_clocks CLKB_90] -min min_input_delay [get_ports indata] -add_delay
5. 输入端口到FPGA内部时序单元的路径slack的计算方法
1. Setup check:
setup slack = data required time – data arrival time
其中:
data required time = destination clock edge time + destination clock path delay- clock uncertainty- setup time
data arrival time = source clock edge time + source clock path delay + max input delay
2. Hold check:
hold slack = data arrival time – data required time
其中
data required time = destination clock edge time + destination clock path delay+ clock uncertainty+ hold time
data arrival time = source edge time + source clock path delay + pin to register delay + min input delay
2.3.5.1. 输入约束(set_input_delay)
6. 参考
Vivado时序约束(转载)_wangyanchao151的博客-CSDN博客_vivado时序约束
下一篇