如上兩條語句為建立一個外部的輸入數據同步的虛擬時鐘以及跟該虛擬時鐘一致的FPGA的輸入數據同步時鐘。
set_input_delay -max 1.450 -clock [get_clocks {vir_clk}] [get_ports {in[*]}]
set_input_delay -min 0.55 -clock [get_clocks {vir_clk}] [get_ports {in[*]}]
set_input_delay -clock_fall -max 1.45 -clock [get_clocks {vir_clk}] [get_ports {in[*]}] -add_delay
set_input_delay -clock_fall -min 0.55 -clock [get_clocks {vir_clk}] [get_ports {in[*]}] -add_delay
由于該源同步方式為DDR模式,因此上述第一條和第二條語句聲明的是上升沿打出,下降沿鎖存的input max delay和input min delay約束,第三條語句和第四條語句聲明的是下降沿打出,上升沿鎖存的input max delay和input min delay約束。由于相對于同一個虛擬時鐘有兩個一樣的input max delay和input min delay約束,因此需在后面兩條語句加上-add_delay表示此兩條語句不被上面兩條語句所覆蓋。
另外,由于時序分析工具會覆蓋整個時鐘周期,但是實際上本設計的時鐘關系為半個周期,因此還需要告訴時序分析工具不需要對整個時鐘周期進行分析,因此加入了false path語句:
set_false_path -setup -rise_from [get_clocks {vir_clk}] -rise_to [get_clocks {clk}]
set_false_path -setup -fall_from [get_clocks {vir_clk}] -fall_to [get_clocks {clk}]
set_false_path -hold -rise_from [get_clocks {vir_clk}] -fall_to [get_clocks {clk}]
set_false_path -hold -fall_from [get_clocks {vir_clk}] -rise_to [get_clocks {clk}]
此四條語句分別表示,在做setup分析的時候,不需要對兩個相隔一個周期的上升沿進行分析和下降沿進行時序分析,在做hold分析的時候,不需要對兩個相隔半個周期的上升沿和下降沿進行時序分析。