如果您的FPGA設(shè)計無法綜合或者沒能按預期在開發(fā)板上正常工作,原因往往不明,要想在數(shù)以千計的RTL和約束源文件中找出故障根源相當困難,而且很多這些文件還可能是其他設(shè)計人員編寫的??紤]到FPGA設(shè)計迭代和運行時間的延長,設(shè)計人員應(yīng)該在設(shè)計流程的早期階段就找出可能存在的諸多錯誤,并想方設(shè)法重點對設(shè)計在開發(fā)板上進行驗證。
在特定條件下采用更智能的技術(shù)來隔離特定錯誤,找到問題電路的源頭并漸進式修復錯誤,這很重要。為了節(jié)省時間,您可以對時鐘、約束和模塊級接口進行初步設(shè)置檢查以確保符合設(shè)計規(guī)范,這樣就不必在綜合與布局布線(P&R)時浪費大量時間。
Synopsys公司的Synplify Premier 和Synplify Pro FPGA設(shè)計工具以及Identify RTLDebugger 等產(chǎn)品能幫助設(shè)計人員完成上述工作。這些工具的特性使得設(shè)計人員能快速隔離錯誤,有效縮短運行時間,并減少開發(fā)板啟動所需的迭代次數(shù)。
精確找到開發(fā)板上的問題
如果開發(fā)板出現(xiàn)明顯的功能性錯誤,要縮小查找問題根源的范圍可能會相當困難。為了進行設(shè)計調(diào)試,我們應(yīng)當創(chuàng)建附加電路并保留某些節(jié)點,以便我們對設(shè)計運行時得到的數(shù)據(jù)進行探測、檢查和分析。下面我們就看看如何用板級調(diào)試軟件來查找錯誤。
按下列四步法并利用RTL調(diào)試器,您能精確查找問題,并對信號和關(guān)注的條件采樣,然后將觀察結(jié)果關(guān)聯(lián)至原始RTL,從而將問題鎖定在RTL規(guī)范或約束設(shè)置范圍內(nèi)。
第一步:指定探測。在RTL中明確要監(jiān)控哪些信號和條件。在此要聲明您所感興趣的觀察點(要觀察的信號或節(jié)點)和斷點(RTL控制流程聲明,如IF、THEN 和CASE 等)。
第二步:通過探測構(gòu)建設(shè)計。利用附加的監(jiān)控電路——即用于根據(jù)您的監(jiān)控要求捕捉并導出調(diào)試數(shù)據(jù)的智能內(nèi)部電路仿真器(IICE)——對FPGA設(shè)計進行綜合。
第三步:分析和調(diào)試。設(shè)計綜合完成之后,運行設(shè)計并用RTL調(diào)試器觀察數(shù)據(jù)。在開發(fā)板上運行測試時,觀察點和斷點共同觸發(fā)數(shù)據(jù)采樣,使您能在您所關(guān)注的非常明確的條件下觀察并調(diào)試特定節(jié)點的電路的行為。您可將觀察到的采樣數(shù)據(jù)寫入VCD 文件并將其關(guān)聯(lián)到RTL。
第四步:漸進性修復錯誤(incrementaLfix)。一旦找到了錯誤所在,就可以通過分級、漸進式流程在RTL或約束中漸進地進行修復。