如上兩條語(yǔ)句為建立一個(gè)外部的輸入數(shù)據(jù)同步的虛擬時(shí)鐘以及跟該虛擬時(shí)鐘一致的FPGA的輸入數(shù)據(jù)同步時(shí)鐘。
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模式,因此上述第一條和第二條語(yǔ)句聲明的是上升沿打出,下降沿鎖存的input max delay和input min delay約束,第三條語(yǔ)句和第四條語(yǔ)句聲明的是下降沿打出,上升沿鎖存的input max delay和input min delay約束。由于相對(duì)于同一個(gè)虛擬時(shí)鐘有兩個(gè)一樣的input max delay和input min delay約束,因此需在后面兩條語(yǔ)句加上-add_delay表示此兩條語(yǔ)句不被上面兩條語(yǔ)句所覆蓋。
另外,由于時(shí)序分析工具會(huì)覆蓋整個(gè)時(shí)鐘周期,但是實(shí)際上本設(shè)計(jì)的時(shí)鐘關(guān)系為半個(gè)周期,因此還需要告訴時(shí)序分析工具不需要對(duì)整個(gè)時(shí)鐘周期進(jìn)行分析,因此加入了false path語(yǔ)句:
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}]
此四條語(yǔ)句分別表示,在做setup分析的時(shí)候,不需要對(duì)兩個(gè)相隔一個(gè)周期的上升沿進(jìn)行分析和下降沿進(jìn)行時(shí)序分析,在做hold分析的時(shí)候,不需要對(duì)兩個(gè)相隔半個(gè)周期的上升沿和下降沿進(jìn)行時(shí)序分析。