問題描述:
本文著重探討 HDIO OBUFT 和 IOBUF 用例。如果含三態控制 (OBUFT/IOBUF) 的 HDIO 輸出緩沖器的上電電壓為 3.3V 或 2.5V 并且 Data(數據)控制信號與 Tristate(三態)控制信號的切換時間彼此相近,則可能會受到三態數據爭用條件的影響。
僅當三態和數據開關彼此相反(例如,三態 0 -> 1 且數據 1 -> 0)時,此爭用條件才會導致問題。當三態和數據開關同向(例如,三態 0 -> 1 且數據 0 -> 1)時,則不會導致問題。
生成的輸出可能會驅動錯誤的焊盤電壓。焊盤可能保持在此錯誤電壓下,直至三態(dataValidBeforeTristate 場景)或數據(dataValidAfterTrisate 場景)再次切換為止。
dataValidBeforeTristate = 550ps
dataValidAfterTristate = 200ps
受影響的器件:除 VSVD1760 外的其他封裝中的 VC1902、VC1802、VM1802、VM1402 和 VM1302。
僅限含 HD bank 的器件才會受到 HDIO IOBUF 和 OBUFT 用例的影響。VSVD1760 封裝不含 HDIO bank,因此不受影響。
受影響的 IP 核:
雖然 IP 通常并不強制使用 HDIO,但以下 IP 核使用 HDIO 緩沖器的方式很可能使其受此問題影響。此處隨附的 Tcl 腳本可用于幫助調整諸多場景下的數據到三態布線關系:
AXI 1G 以太網
AXI QSGMII
三模以太網 MAC
AXI QSPI
解決方法:
要解決該問題,請確保在有問題的窗口(dataValidBeforeTristate = 0.550ps 和 dataValidAfterTristate = 0.200ps)中,數據和三態不執行切換。
在 Vivado 2021.2 和更高版本中,DRC 將向用戶標記此問題:
下列方法可用于確保在有問題的窗口中,數據和三態不執行切換:
1. 通過設計系統將三態和數據切換偏移一個周期。
2. 寄存的數據和三態信號可以在 IOL Flop 的 I 輸入中利用數據和三態的邏輯 OR 來避免此問題。
將
替換為
時序圖示例:
3. 通過 Tcl 腳本使用 set_data_check 約束來確保數據和三態信號線的偏差足以確保數據和三態都能避免出現爭用條件。
注釋:僅當數據和三態都發生切換時,才會發生此問題。在 Data 管腳上,Open Drain(開漏)接口保持常量“0”,因此常用 2.5V 接口和 3.3V 接口(如 I2C)將不受影響。
僅當數據或三態已綁定時,才能通過以下命令豁免 DRC。
對于 Vivado 2022.1 和更低版本,您可使用隨附的fixHDIO.tcl 腳本來評估影響,并且可能通過布線來修復此問題。
此腳本將檢查 IOBUF 或 OBUFT 的設計,并檢查三態與數據之間的延遲,確認在有問題的窗口內是否發生切換。
如果發生了切換,此腳本將通過set_data_check 置位來取消這些信號線的布線,重新布線,并報告結果。
要運行該腳本,請打開已實現的設計或 DCP。
在 Tcl 控制臺中,使用 source 命令找到該腳本:
source -quiet fixHDIO.tcl
找到 Tcl 腳本后,可運行多個過程來分析設計:
getHDIOTristateBuffers- 列出以 2.5V 或 3.3V 上電的 HDIO bank 中含三態控制的所有緩沖器,這些緩沖器可能會受到三態/數據爭用問題的影響。
reportHDIOTristateBuffers- 報告以 2.5V 或 3.3V 上電的 HDIO bank 中含三態控制的所有緩沖器(可能受三態/數據爭用問題影響),并描述用于報告這些緩沖器的原因的機制。
validateHDIOTristateBuffers- 該命令將分析設計,查看是否有足夠的時序裕度能在尚未運行fixHDIOTristateBuffers 時就避免出現爭用條件。如果發生違例,則必須運行 fixHDIOTristateBuffers 來解決問題。
waiveHDIOTristateBuffers
fixHDIOTristateBuffers
timeHDIOTristateBuffers
分析結果:
fixHDIOTristateBuffers 和 timeHDIOTrisateBuffers 將報告所提供的緩沖器上的時序。裕量值為正表示腳本已成功完成 Data (I) 和 Tristate 控制 (T) 的重新布線。
在此場景下為了正確定時,將對數據或三態給予 1000ns 的要求。預計將有一條信號線存在較大的偏差要求。 只要信號線均為正,就不會發生 HDIO 三態沖突。
出現如下消息表示,如果 Tcl 腳本無法通過新的布線解決該問題,那么布線器就無法以充足的偏差完成設計的重新布線。
注釋:在此場景中,如果報告的裕量為正值,那么即使出現該警告也沒問題。
該腳本將標記 IOB 觸發器對數據和三態進行寄存的情況,但不會嘗試解決。
這些管腳需實現與上述邏輯等效的電路更改,并對驅動 IOB 數據寄存器的輸入管腳的數據和三態信號線執行 OR 邏輯。
如果 Tcl 腳本以避免出現該問題的方式成功完成數據和三態管腳的重新布線,則將需要修改設計。圍繞此問題常見的修改包括:
寄存數據和三態控制信號,對數據控制和三態控制執行 OR 邏輯,如上所述。
調整設計,使三態和數據斷言偏移一個周期。
如果出現該腳本無法解決此問題的罕見情況,請評估選項 1“將三態和數據切換偏移一個周期”和選項 2“對數據和三態執行邏輯 OR”,并對設計執行必要的更改。
審核編輯:湯梓紅
-
以太網
+關注
關注
40文章
5284瀏覽量
169578 -
寄存器
+關注
關注
31文章
5250瀏覽量
119179 -
緩沖器
+關注
關注
6文章
1903瀏覽量
45314 -
觸發器
+關注
關注
14文章
1990瀏覽量
60860 -
Versal
+關注
關注
1文章
151瀏覽量
7596
原文標題:開發者分享|設計咨詢 - Versal:HDIO OBUFT 和 IOBUF 三態時序影響
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論