1、系統同步輸出
分析FPGA內部時序單元到輸出端口的路徑時,當source clock 和 destination clock 來自統一系統時鍾,稱為系統同步輸出(system synchronous output)。
當source clock 或者 destination clock 不在FPGA設計中時,則需要約束一個虛擬時鍾,如圖1所示,source clock 是CLKA,destination clock 是CLKB,其中CLKA通過FPGA時鍾輸入端口引入FPGA內部(約束成主時鍾),而CLKB引入到FPGA外部的板上芯片,並沒有引入FPGA內部,因此需要將CLKB約束成虛擬時鍾,約束如下:
create_clock -name CLKA-period 10 -waveform {0 5} [get_ports {CLKA}]
create_clock -name CLKB-period 10 -waveform {0 5}

圖1
output delay 的計算公式如下:
max_output_delay = Tbd_max + Tsetup + Tcd_int_max - Tcd_ext_min
min_output_delay = Tbd_min – Thold + Tcd_int_min - Tcd_ext_max
其中Tcd_ext表示外部時鍾源到外部芯片的延時;Tcd_int表示外部時鍾源到FPGA時鍾端口的延時;Tsetup表示外部芯片tsu時間;Thold表示外部芯片thd時間;Tbd表示FPGA輸出端口到外部芯片的板上延時。
2、源同步輸出
分析FPGA內部時序單元到輸出端口路徑時,輸出到外部芯片的數據和時鍾是同源的,稱為源同步。
結構如圖2所示,從FPGA內部輸出到外部芯片除了數據外,還有一路隨路時鍾。


圖2
參考圖2中時間參數,其中Tcd表示時鍾從FPGA輸出到外部芯片輸入端口的延時;Tsetup表示外部芯片tSU時間;Thold表示外部芯片tH時間;Tbd表示FPGA輸出端口到外部芯片的板上延時。Output delay的計算式如下(推導與系統同步輸出類似,不再累述):
max_output_delay = Tbd_max + Tsetup - Tcd_min
min_output_delay = Tbd_min – Thold - Tcd_max
源同步輸出的output delay約束命令如下:
set_output_delay -clockCLKB
-max max_output_delay [
get_ports{DOUT}]
set_output_delay -clockCLKB
-min min_output_delay [
get_ports{DOUT}]