運用智能的調試和綜合技術隔離FPGA設計中的錯誤
如果您的FPGA設計無法綜合或者沒能按預期在開發板上正常工作,原因往往不明,要想在數以千計的RTL和約束源文件中找出故障根源相當困難,而且很多這些文件還可能是其他設計人員編寫的。考慮到FPGA設計迭代和運行時間的延長,設計人員應該在設計流程的早期階段就找出可能存在的諸多錯誤,并想方設法重點對設計在開發板上進行驗證。
本文引用地址:http://www.j9360.com/article/189548.htm在特定條件下采用更智能的技術來隔離特定錯誤,找到問題電路的源頭并漸進式修復錯誤,這很重要。為了節省時間,您可以對時鐘、約束和模塊級接口進行初步設置檢查以確保符合設計規范,這樣就不必在綜合與布局布線(PR)時浪費大量時間。
Synopsys公司的Synplify Premier 和Synplify Pro FPGA設計工具以及Identify RTLDebugger 等產品能幫助設計人員完成上述工作。這些工具的特性使得設計人員能快速隔離錯誤,有效縮短運行時間,并減少開發板啟動所需的迭代次數。
精確找到開發板上的問題
如果開發板出現明顯的功能性錯誤,要縮小查找問題根源的范圍可能會相當困難。為了進行設計調試,我們應當創建附加電路并保留某些節點,以便我們對設計運行時得到的數據進行探測、檢查和分析。下面我們就看看如何用板級調試軟件來查找錯誤。
按下列四步法并利用RTL調試器,您能精確查找問題,并對信號和關注的條件采樣,然后將觀察結果關聯至原始RTL,從而將問題鎖定在RTL規范或約束設置范圍內。
第一步:指定探測。在RTL中明確要監控哪些信號和條件。在此要聲明您所感興趣的觀察點(要觀察的信號或節點)和斷點(RTL控制流程聲明,如IF、THEN 和CASE 等)。
第二步:通過探測構建設計。利用附加的監控電路——即用于根據您的監控要求捕捉并導出調試數據的智能內部電路仿真器(IICE)——對FPGA設計進行綜合。
第三步:分析和調試。設計綜合完成之后,運行設計并用RTL調試器觀察數據。在開發板上運行測試時,觀察點和斷點共同觸發數據采樣,使您能在您所關注的非常明確的條件下觀察并調試特定節點的電路的行為。您可將觀察到的采
樣數據寫入VCD 文件并將其關聯到RTL。
第四步:漸進性修復錯誤(incrementaLfix)。一旦找到了錯誤所在,就可以通過分級、漸進式流程在RTL或約束中漸進地進行修復。
時序和功能性錯誤的可視檢查
FPGA設計和調試工具還有一大優點,就是能顯示RTL和網表級原理圖。舉例來說,具有互動調試功能的原理圖查看器能夠顯示設計的RTL和網表原理圖,便于您進行觀察并將時序報告和VCD 數據(設計在開發板上運行時產生)關聯至RTL源文件。查看器包含一個RTL視圖,用來以圖示的方式描述設計。該視圖在綜合RTL編譯階段后提供,由技術獨立的加法器、寄存器、大型多路選擇器和狀態機等組件構成。通過RTL原理圖,您可以交叉探測原始RTL,對不符合預定規范的設計進行調整,同時也可以探測到約束編輯器,從而更簡便地更新和指定約束(圖1)。

要將錯誤操作的源頭追溯到RTL,您可以利用RTL調試器在RTL原理圖上方實時插入觀察到的操作數據。
原理圖查看器包括一個網表級技術視圖,用于顯示綜合后的實際設計實現情況。在HDLAnalyst 原理圖查看器中,該視圖基于查找表、寄存器和DSP slice 等基本的賽靈思器件原語。您可在原理圖中對路徑進行交叉探測,追溯到原始的RTL以及綜合后和布局布線后的最終時序報告,以便分析和提高整體性能。
在FPGA中原型設計的ASIC 門控時鐘結構并非FPGA實現中的必要環節,這會導致FPGA資源使用效率低下。解決該問題的有效辦法就是用FPGA綜合軟件轉換時鐘。
大型設計的調試
在大型設計中探測所有信號是不可能,因為生成的數據量極為龐大,而且探測數據所需的額外調試邏輯也太大。片上調試方法的一個常見弊病是難以提前預測需要對哪些信號進行探測和監控。
一些調試軟件通過分治法能夠在一定程度上解決這個問題。利用多路復用的采樣組,設計人員可以有選擇性地進行采樣并通過多路復用的路徑和共享的IICE 在信號組之間切換。這種方法增加了可觀察的信號和條件,而且不會增加數據存儲要求。您可以即時切換感興趣的信號組,不必花時間進行重新調整或重新綜合新的設計。
不幸的是,在探測和采樣數據時用使的調試IICE 邏輯會占用包括存儲器BRAM 在內的芯片資源。您可在SRAM 存儲卡中對IICE 采樣數據進行片外存儲,以減少片上BRAM 的使用。這種方法的另一個好處是能增加采樣數據的深度。
我的設計無法綜合
設計錯誤的出現可能導致無法實現有效綜合或布局布線。由于存在成千上萬的RTL和約束源文件,因此可能需要幾個星期才能完成首次綜合與布局布線。進行FPGA原型設計時,應讓ASIC 設計源文件處于“FPGA就緒”狀態。舉例來說,就是要進行門時鐘轉換。
在FPGA中原型設計的ASIC門控時鐘結構并非FPGA實現中的必要環節,這會導致FPGA資源使用效率低下。解決該問題的有效辦法就是用FPGA綜合軟件轉換時鐘。例如,門控或生成時鐘轉換功能可將生成時鐘和門控時鐘邏輯從順序組件的時鐘引腳轉移到使能引腳,這樣您就能將順序組件直接綁定到源時鐘,消除偏移問題,并減少設計中所需的時鐘源數量,進而節約資源。
在Synplify Premier 軟件中啟用門控時鐘選項:
– 選擇Project->Implementation Options
– 在GCC Prototyping Tools 標簽中點擊Clock Conversion checkbox
或在TCL中使用以下命令
set_option -fix_gated_and_generated_ clocks 1
在Synplify Pro/Premier 中執行門控和生成時鐘轉換,而set_option -conv_mux_xor_gated_clocks 1則針對基于Synopsys HAPS 的設計在Synplify Premier 時鐘樹的多路選擇器或OR 門上執行門控時鐘轉換。
評論