命令set_multicycle_path常用來約束放松路徑的約束。通常情況下,這種路徑具有一個典型的特征:數(shù)據(jù)多個周期翻轉(zhuǎn)一次,如下圖所示。因此,我們把這種路徑稱為多周期路徑(FPGA設(shè)計中更多的是單周期路徑,每個周期數(shù)據(jù)均翻轉(zhuǎn))。
一般情況下,多周期路徑約束的對象都是FPGA內(nèi)部路徑,路徑所包含的邏輯單元也都是FPGA內(nèi)部單元如觸發(fā)器、BRAM或DSP等。但有時在片間接口使用set_input_delay和set_output_delay約束時,也會用到set_multicycle_path。這里我們就來討論這種情形。
我們先從系統(tǒng)級角度看一下FPGA設(shè)計存在的4類時序路徑,如下圖所示。這4類路徑包括:上游芯片到FPGA管腳(用set_input_delay約束)、FPGA內(nèi)部路徑(用create_clock約束)、FPGA管腳到下游芯片(用set_output_delay約束)和FPGA管腳到FPGA管腳(用set_max_delay約束)。就前三條路徑而言,如果把上游芯片、FPGA芯片和下游芯片作為一個整體看待,我們就會發(fā)現(xiàn)這三條路徑本質(zhì)上是一類路徑,起點單元和終點單元都是觸發(fā)器。只是觸發(fā)器可能在FPGA外部而已。正因此,凡是適合于FPGA內(nèi)部路徑的多周期路徑約束情形也適合于接口多周期路徑約束情形。同時,也能看出Vivado的這種系統(tǒng)級的時序分析引擎對接口時序約束極為便利。
情形1:數(shù)據(jù)每多個時鐘周期翻轉(zhuǎn)一次
如下圖所示時序波形,數(shù)據(jù)每兩個時鐘周期翻轉(zhuǎn)一次。
如果數(shù)據(jù)是由上游芯片發(fā)送給FPGA,那么就需要用set_input_delay結(jié)合set_multicycle_path一起對接口路徑進行約束,如下圖所示。這里最后兩行使用了set_multicycle_path,一個針對建立時間,一個針對保持時間。
如果數(shù)據(jù)是從FPGA發(fā)送給下游芯片,那么就需要用set_output_delay結(jié)合set_multicycle_path一起對接口路徑進行約束,如下圖所示。
情形2:捕獲時鐘和發(fā)送時鐘同頻但有相差
如下圖所示,發(fā)起時鐘和捕獲時鐘同頻但不同相。默認情況下,Vivado會選擇兩個時鐘最為接近的邊沿作為發(fā)起沿和捕獲沿,如圖中的藍色箭頭所示。顯然,這種情況下,時序約束過緊且不符實際。這就要通過set_multicycle_path告訴工具真正的捕獲沿是在2號標記處。
如果該路徑存在于FPGA輸入接口處,那么可以采用set_input_delay結(jié)合set_multicycle_path一起約束,如下圖所示。
如果該路徑存在于FPGA輸出接口處的源同步設(shè)計,那么可以采用set_output_delay結(jié)合set_multicycle_path一起約束,如下圖所示。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601239 -
FPGA設(shè)計
+關(guān)注
關(guān)注
9文章
428瀏覽量
26465 -
命令
+關(guān)注
關(guān)注
5文章
676瀏覽量
21965 -
約束
+關(guān)注
關(guān)注
0文章
82瀏覽量
12708
原文標題:對于輸入/輸出路徑什么場合需要用set_multicycle_path?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論