參考:https://forums.xilinx.com/t5/Timing-Analysis/Hold-violation-in-ISERDES/t...
前言
在STA中,要分析上游器件和FPGA之間的時序關系就得指定input delay。
流程
什么是input delay:約定上游芯片輸出及時鐘之間的關系。約束的目的就是看適配后的時序關系是什么樣的。
以下以源同步接口舉例,上游芯片發送data和隨路時鐘到下游FPGA芯片端口進行接收,使用解串原語對數據進行解串。
這里使用的DCLK為:4.464ns。時鐘與數據關系是DDR中心對齊。
40M下的建立保持時間如下:Tsu=0.72ns,Tho = 0.82ns。
上vivado中語言模板中找模板。把Tsu、Tho抄進去對應dv_bre、dv_are、dv_bfe、dv_afe。dv_bre指的是時鐘沿前穩定的時間,這個時間可以用示波器測出來,或者看datasheet上的建立保持時間(這之間的數據肯定是穩定的)。
得到:min=Tho=0.82ns,max=T/2-Tsu=4.464/2-0.72=1.512ns;這里假定時鐘和數據到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結果:
本次時鐘路徑:IBUFDS→BUFIO→ISERDESE 差分時鐘經過IBUFDS變為單端,經過IOB中的BUFIO送入ISERDESE。
本次數據路徑:IBUFDS→ISERDESE 差分數據經過IBUFDS變成單端送入ISERDESE。
則要求數據在2.904ns時候到來,但數據抵達時刻是1.559ns,出現了保持違例:1.559-2.904 = -1.345ns。
也就是說數據來早了,提前撤銷導致了保持違例。另一個角度說是時鐘來晚了。
所以要解決這個問題,可以讓數據晚點來,或者讓時鐘早點來。
對于片內邏輯間的保持不滿足可以插LUT1,但接口IOB部分就沒法插了,于是上網上找方法。
參考前面參考鏈接可知:可使用IODELAY原語對數據進行相應的延時,達到保持時間的滿足。
這里1.345ns/78ps=18拍,即IODELAY至少需要延遲18拍;
時序約束文件中參考下述圖片寫,但我還沒有驗證過,待驗證,理論可行,估計就可以STA通過了。
這個延時可以通過時序訓練或者手動調節,找尋合適點。具體可參考:xapp524-serial-lvds-adc-interface.pdf
如果是動態調節TAP值,那么STA就沒卵用了,STA的前提是假定TAP值為定值。
以上。
審核編輯:符乾江
-
數據
+關注
關注
8文章
7030瀏覽量
89038 -
Vivado
+關注
關注
19文章
812瀏覽量
66539
發布評論請先 登錄
相關推薦
評論