前言
在STA中,要分析上游器件和FPGA之間的時序關系就得指定input delay。
流程
什么是input delay:約定上游芯片輸出及時鐘之間的關系。約束的目的就是看適配后的時序關系是什么樣的。
以下以源同步接口舉例,上游芯片發送data和隨路時鐘到下游FPGA芯片端口進行接收,使用解串原語對數據進行解串。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/D5/pYYBAGIMpPiAJRgVAAEEa2Qfeos921.png)
這里使用的DCLK為:4.464ns。時鐘與數據關系是DDR中心對齊。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/D5/pYYBAGIMpPmAHxLTAABePn773wM725.png)
40M下的建立保持時間如下:Tsu=0.72ns,Tho = 0.82ns。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/CD/poYBAGIMpPuANOqlAADKddXWqGQ863.png)
上vivado中語言模板中找模板。把Tsu、Tho抄進去對應dv_bre、dv_are、dv_bfe、dv_afe。dv_bre指的是時鐘沿前穩定的時間,這個時間可以用示波器測出來,或者看datasheet上的建立保持時間(這之間的數據肯定是穩定的)。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/D5/pYYBAGIMpPyACxP0AAJIQqM4iAo660.jpg)
得到: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。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/CD/poYBAGIMpP6ABcoBAAFp0SjRROA029.jpg)
本次數據路徑:IBUFDS→ISERDESE 差分數據經過IBUFDS變成單端送入ISERDESE。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/D5/pYYBAGIMpQCAJcKCAAHJ0fu3uNo015.jpg)
則要求數據在2.904ns時候到來,但數據抵達時刻是1.559ns,出現了保持違例:1.559-2.904 = -1.345ns。
也就是說數據來早了,提前撤銷導致了保持違例。另一個角度說是時鐘來晚了。
所以要解決這個問題,可以讓數據晚點來,或者讓時鐘早點來。
對于片內邏輯間的保持不滿足可以插LUT1,但接口IOB部分就沒法插了,于是上網上找方法。
參考前面參考鏈接可知:可使用IODELAY原語對數據進行相應的延時,達到保持時間的滿足。
這里1.345ns/78ps=18拍,即IODELAY至少需要延遲18拍;
時序約束文件中參考下述圖片寫,但我還沒有驗證過,待驗證,理論可行,估計就可以STA通過了。
![Vivado中如何做set_input_delay約束](https://file.elecfans.com/web2/M00/30/CD/poYBAGIMpQKADDdcAAMmZLC-biE283.jpg)
這個延時可以通過時序訓練或者手動調節,找尋合適點。具體可參考:xapp524-serial-lvds-adc-interface.pdf
如果是動態調節TAP值,那么STA就沒卵用了,STA的前提是假定TAP值為定值。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605997 -
芯片
+關注
關注
456文章
51170瀏覽量
427244 -
Vivado
+關注
關注
19文章
815瀏覽量
66887
發布評論請先 登錄
相關推薦
ADC08D500要一起工作做Interleaving的話,需要在ADC CLK Input端各接一個Delay Line IC對嗎?
ADS1281 FIR濾波器Input sample rate,Decimation factor, Decimation offset, Estimated delay是如何確定的?
常用時序約束使用說明-v1
硬件工程師如何做元器件變更的決策
![硬件工程師<b class='flag-5'>如何做</b>元器件變更的決策](https://file.elecfans.com/web2/M00/3F/CE/pYYBAGJqCX2AbtM8AAANJ1_N7GA875.jpg)
詳細講解SDC語法中的set_input_delay和set_output_delay
詳解Vivado非工程模式的精細設計過程
![詳解<b class='flag-5'>Vivado</b>非工程模式的精細設計過程](https://file1.elecfans.com/web2/M00/C7/AF/wKgaomYMsqyAe1VrAAAfPY_UKII311.png)
怎樣查看input/output delay是否生效
![怎樣查看<b class='flag-5'>input</b>/output <b class='flag-5'>delay</b>是否生效](https://file1.elecfans.com/web2/M00/C1/3A/wKgZomXdPnOAA_frAABT1-AZf1o916.png)
評論