時鐘的約束html
關於時鐘的約束命令:app
create_clock-name clk-period 10.000[get_ports{clk}] derive_pll_clocks //當約束了主時鐘以後加上這句話就不用逐一約束pll時鐘啦 derive_clock_uncertainty create_generated_clock //當 FPGA 的引腳要向外部其餘芯片提供時鐘的時候
當出現警告: The following clock transfer have no clock uncertainty assignment. For more accurate results, apply clock uncertainty or use the derive_clock_uncertainty command.spa
只要加上 derive_clock_uncertainty 這條命令就能夠解決。code
output引腳約束命令htm
set_output_delay-clock{clk}-min 2.5 [get_ports{reg1}] //最大 set_output_delay-clock{clk}-max 2.5 [get_ports{reg1}] //最小 set_output_delay-clock{clk}- 2.5 [get_ports{reg1}] //當最大和最小的值相等時
由於 Timequest 只能約束 FPGA 的內部走線延時,可是沒法知道 PCB 板上的走線延時或者外部寄存器芯片的延時, 因此這些不知道的延時都要算到 FPGA 的保持裕量和創建裕量。PCB 板的路徑延時越大,創建裕量越小,保持裕量越大。反之路徑延時越小,創建裕量越大,保持裕量越小。blog
創建裕量考慮的是最大值get
Delay Value = PCB最長走線的時間 + 外部芯片的創建時間 Tsu - clock skewinput
保持裕量考慮的是最小值io
Delay Value = PCB最短走線的時間 - 外部芯片的保持時間 Th - clock skewclass
input引腳約束命令
set_input_delay-clock{clk}-min 2.5 [get_ports{reg1}] //最大 set_input_delay-clock{clk}-max 2.5 [get_ports{reg1}] //最小 set_intput_delay-clock{clk}- 2.5 [get_ports{reg1}] //當最大和最小的值相等時
創建裕量考慮的是最大值
Delay Value = PCB最長走線的時間 + 外部芯片的創建時間 Tco - clock skew
保持裕量考慮的是最小值
Delay Value = PCB最短走線的時間 + 外部芯片的保持時間 Tco - clock skew
其他約束
set_clock_latency //將外部時鐘信號的抖動信息告訴 TimeQuest
set_min_delay //將有關路徑延時告訴 TimeQuest
set_max_delay