一.什么是IBERT
Integrated Bit Error RatioTester(IBERT)是Xilinx提供的用于測試transceiver的免費IP。IBERT的example design是一個集transceiver、logic、ILA、VIO、Pattern Generator and Checker、DRP于一體的參考設計,方便用戶在不寫代碼的情況下測試當前硬件條件下transceiver能否工作在用戶需要的線速率。IBERT的功能框圖如下:

我們一直推薦用戶在FPGA板卡硬件調(diào)試中使用IBERT測試transceiver,以便于排除電源、參考時鐘和連接介質(zhì)的問題,確保transceiver可以正常進行用戶需要的高速串行設計調(diào)試。關(guān)于IBERT IP GUI中的選項和配置項的具體解釋,example design中的設計和使用方法,此文中不做闡述,用戶可以參考Xilinx官方文檔,如PG173、PG196、PG246等。此處強調(diào)和實際使用相關(guān)聯(lián)的幾點細節(jié):在Refclk Selection中選擇參考時鐘時,Refclk的驅(qū)動能力范圍請參考具體器件系列的transceiver文檔,比如UG476描述的7系列器件參考時鐘驅(qū)動的GTQuad為本Quad和上下相鄰的兩個Quad,共計3個GT Quad;比如UG576中描述的Ultrascale和Ultrascale+系列器件的參考時鐘驅(qū)動的GT Quad為本Quad和上相鄰的兩個Quad、下相鄰的兩個Quad,共計5個Quad;


- 在system clock的選項中,默認source是external,此處系統(tǒng)時鐘用于IBERT里測量線速率、TX/USRCLK頻率,以及DRP端口訪問的時鐘,建議使用一個獨立于參考鐘的FREE-RUNNING時鐘,并正確填寫其頻率,這會影響運行IBERT時的顯示;

- IBERT的example design頂層代碼可見,用戶可以在設計中添加邏輯,比如光模塊的使能信號控制等;
- IBERT中的Eye Scan功能并不是只有在IBERT中可以用,我們在其他高速串行協(xié)議中如果使能了transceiver的Eye Scan功能,一樣可以在鏈路工作的同時來掃描眼圖,比如xapp1198中就提供了在PCIE鏈路工作情況下使用Eye Scan功能掃描眼圖的參考設計;
- IBERT中可配置的環(huán)回模式就是transceiver內(nèi)部的環(huán)回模式,如下圖所示:1所示的數(shù)據(jù)通路為Near-end PCS環(huán)回;2所示的通數(shù)據(jù)路為Near-end PMA環(huán)回;3所示的數(shù)據(jù)通路為Far-end PMA環(huán)回;4所示的數(shù)據(jù)通路為Far-end PCS環(huán)回;

二.PL IBERT測試中的常見問題
在我們把一個PL transceiver的IBERT測試工程bitstream通過JTAG下載到FPGA芯片中后,點擊Auto detect links或者create links,就可以創(chuàng)建link鏈接,配置link中的一些參數(shù),如pattern、loopbackmode、TX diff-swing、TX Pre-Emphasis等,如下圖所示:

其他的參數(shù)調(diào)整在哪里設置和修改?
在我們點中某個link鏈路時,link properties---properties里面會有更詳細的可以修改、配置和操作的寄存器、端口和屬性,IBERT通過VIO和DRP的手段做好了這個界面;其中DRP、PORT、LOGIC可以展開折疊的部分以看到更多的寄存器、端口和屬性。

Pattern建議使用哪種?
系統(tǒng)默認使用PRBS7,同時還提供了PRBS9、PRBS15、PRBS23、PRBS31、fast clock、slowclock的數(shù)據(jù)類型供選擇,主要是他們的游程(Run Length)不同,因此Pattern Dependent Jitter(PDJ)不同。對于8B10B應用,其本身游程為5, 測試的時候用PRBS7就夠了; 對于64B66B應用, 則要用PRBS31測試。BER結(jié)果為多少可以說明鏈路測試OK?
這個沒有官方說明,BER是一個概率論反推數(shù)值,BER一般的規(guī)范都在10-12,但這個測試的時間會比較長, 特別對于低速率的情況。所以如果在幾分鐘內(nèi)看不到誤碼(error count =0), 就可以進行掃眼以判斷眼圖裕量。如果對端器件不是FPGA,而是其他芯片,如何使用IBERT測試含有完整傳輸鏈路的性能?
在對端芯片不是FPGA而是其他芯片時,如DSP、專用芯片、Switch等時,我們可以查閱對端芯片的資料,看對端芯片是否支持類似Far-end PMA的環(huán)回模式,如果支持,F(xiàn)PGA這一側(cè)我們loopback mode設置為none、對端芯片設置為類似Far-end PMA的模式,就可以測試完整鏈路;如果對端芯片不支持這樣的環(huán)回模式,我們可以想辦法在硬件環(huán)境上做環(huán)回,如接插件、耦合電容等位置。2D Eye Scan和1D Bathtub如何使用?
在我們點中某個link鏈路時,右鍵選擇Create Scan,會彈出如下畫面,在scan type中可以選擇2D Full Eye和1D Bathtub,此處選擇的BER越低,掃描時間會越長。掃眼的目標BER應該是10-9,這樣兼顧掃眼時間和可靠度。XILINX提供的眼圖模板也都是基于這個誤碼率下的, 但同時把模板擴大, 使得在10-9下滿足模板, 可適用于用滿足10-12的誤碼率要求。

以10Gbps線速率、Near-end PMA loopback、BER為10-9為例,我掃描的一個眼圖如下圖所示:

使用1D Bathtub的意義在于組合不同的參數(shù),來掃描較優(yōu)化的參數(shù)設置,下圖是我以10Gbps線速率、Near-end PMA loopback、BER為10-5為例,掃描的bathtub曲線,因為數(shù)據(jù)鏈路信號插損很小,因此與鏈路信號完整性差的真實場景bathtub曲線在形狀輪廓上會有差異。

當遇到IBERT測試不通過,甚至于Near-end環(huán)回測試都不通過的時候怎么辦?
首先需要用戶測試測量的就是時鐘質(zhì)量和電源質(zhì)量,關(guān)于時鐘和電源的要求在每個系列的transceiver文檔和data and switching文檔上都有描述,以Kintex Ultrascale+為例,需要查閱的文檔是UG576和DS922。電源測試時一定要注意如下幾點:1. 選擇盡量靠近FPGA芯片的測試點;2. MGTAVCC、MGTAVTT、MGTVCCAUX、VCCINT四種電源都有可能影響到IBERT的測試結(jié)果,需要在下載程序后測試真實負載下的電源;3. 手冊上要求的電源最大電壓值和最小電壓值,是需要考慮上紋波和噪聲的影響,以Kintex Ultrascale+的MGTAVCC為例,手冊上給出的最大值和最小值分別為0.927V和0.873V,假如紋波有20mV,實際測量MGTAVCC的平均值為0.88V,那么MGTAVCC的電壓是可能低于最低電壓值的要求的;4. 手冊上要求的紋波10mV,實際設計中很難做到,常見的客戶設計會控制在20mV左右,對于線速率10Gbps左右的應用沒有影響。
三.ZU+ MPSoC中的PS IBERT GTR
在ZYNQ Ultrascale+ MPSoC中PS側(cè)集成了GTR,可以配置為PCIE2.0、USB3.0、Displayport TX、SATA或者GEM Ethernet,PSGTR也可以使用IBERT來進行測試,但是不需要使用PL的IBERT IP,具體操作流程本文不做詳細描述,請參考UG936文檔中的Lab10。此處僅強調(diào)PS IBERT GTR和PL IBERT的區(qū)別之處:
PS IBERT GTR在測試時不需要下載bitstream文件,只需要配置好PS GTR,并使用對應的FSBL文件來進行加載,就可以create links;PS IBERT GTR比PL IBERT減少了幾個功能:BER、patterngenerator和pattern checker、參數(shù)配置和調(diào)整;PS IBERT GTR同樣具備Eye Scan和Bathtub Scan功能,我在一塊板卡上插入USB3.0的U盤,設置BER為10-9,測試掃描結(jié)果如下圖所示:


特別感謝Xilinx專家Antony Gu對本文初稿的指正和修改建議。
如果您在transceiver方面和IBERT測試方面有問題,歡迎聯(lián)系: