前言
在STA中,要分析上游器件和FPGA之間的時序關(guān)系就得指定input delay。
流程
什么是input delay:約定上游芯片輸出及時鐘之間的關(guān)系。約束的目的就是看適配后的時序關(guān)系是什么樣的。
以下以源同步接口舉例,上游芯片發(fā)送data和隨路時鐘到下游FPGA芯片端口進行接收,使用解串原語對數(shù)據(jù)進行解串。
這里使用的DCLK為:4.464ns。時鐘與數(shù)據(jù)關(guān)系是DDR中心對齊。
40M下的建立保持時間如下:Tsu=0.72ns,Tho = 0.82ns。
上vivado中語言模板中找模板。把Tsu、Tho抄進去對應(yīng)dv_bre、dv_are、dv_bfe、dv_afe。dv_bre指的是時鐘沿前穩(wěn)定的時間,這個時間可以用示波器測出來,或者看datasheet上的建立保持時間(這之間的數(shù)據(jù)肯定是穩(wěn)定的)。
得到:min=Tho=0.82ns,max=T/2-Tsu=4.464/2-0.72=1.512ns;這里假定時鐘和數(shù)據(jù)到FPGA的路徑長度是一致的(由PCB布線保證)。
set_input_delay -clock [get_clocks adc_dco_clk] -clock_fall -min -add_delay 0.820 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -clock_fall -max -add_delay 1.512 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -min -add_delay 0.820 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -max -add_delay 1.512 [get_ports i_data_ch0_p]
編譯分析STA結(jié)果:
本次時鐘路徑:IBUFDS→BUFIO→ISERDESE 差分時鐘經(jīng)過IBUFDS變?yōu)閱味?,?jīng)過IOB中的BUFIO送入ISERDESE。
本次數(shù)據(jù)路徑:IBUFDS→ISERDESE 差分數(shù)據(jù)經(jīng)過IBUFDS變成單端送入ISERDESE。
則要求數(shù)據(jù)在2.904ns時候到來,但數(shù)據(jù)抵達時刻是1.559ns,出現(xiàn)了保持違例:1.559-2.904 = -1.345ns。
也就是說數(shù)據(jù)來早了,提前撤銷導(dǎo)致了保持違例。另一個角度說是時鐘來晚了。
所以要解決這個問題,可以讓數(shù)據(jù)晚點來,或者讓時鐘早點來。
對于片內(nèi)邏輯間的保持不滿足可以插LUT1,但接口IOB部分就沒法插了,于是上網(wǎng)上找方法。
參考前面參考鏈接可知:可使用IODELAY原語對數(shù)據(jù)進行相應(yīng)的延時,達到保持時間的滿足。
這里1.345ns/78ps=18拍,即IODELAY至少需要延遲18拍;
時序約束文件中參考下述圖片寫,但我還沒有驗證過,待驗證,理論可行,估計就可以STA通過了。
這個延時可以通過時序訓(xùn)練或者手動調(diào)節(jié),找尋合適點。具體可參考:xapp524-serial-lvds-adc-interface.pdf
如果是動態(tài)調(diào)節(jié)TAP值,那么STA就沒卵用了,STA的前提是假定TAP值為定值。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1620文章
21510瀏覽量
598901 -
芯片
+關(guān)注
關(guān)注
450文章
49636瀏覽量
417144 -
Vivado
+關(guān)注
關(guān)注
19文章
797瀏覽量
65854
發(fā)布評論請先 登錄
相關(guān)推薦
評論