新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 如何快速解決隔離FPGA設(shè)計中的錯誤

如何快速解決隔離FPGA設(shè)計中的錯誤

作者: 時間:2013-09-26 來源:網(wǎng)絡(luò) 收藏

如果您的設(shè)計無法綜合或者沒能按預(yù)期在開發(fā)板上正常工作,原因往往不明,要想在數(shù)以千計的RTL和約束源文件中找出故障根源相當(dāng)困難,而且很多這些文件還可能是其他設(shè)計人員編寫的??紤]到設(shè)計迭代和運(yùn)行時間的延長,設(shè)計人員應(yīng)該在設(shè)計流程的早期階段就找出可能存在的諸多錯誤,并想方設(shè)法重點(diǎn)對設(shè)計在開發(fā)板上進(jìn)行驗(yàn)證。

本文引用地址:http://m.butianyuan.cn/article/189506.htm

在特定條件下采用更智能的技術(shù)來特定錯誤,找到問題電路的源頭并漸進(jìn)式修復(fù)錯誤,這很重要。為了節(jié)省時間,您可以對時鐘、約束和模塊級接口進(jìn)行初步設(shè)置檢查以確保符合設(shè)計規(guī)范,這樣就不必在綜合與布局布線(P

Synopsys公司的Synplify Premier和Synplify Pro 設(shè)計工具以及Identify RTLDebugger等產(chǎn)品能幫助設(shè)計人員完成上述工作。這些工具的特性使得設(shè)計人員能快速錯誤,有效縮短運(yùn)行時間,并減少開發(fā)板啟動所需的迭代次數(shù)。

精確找到開發(fā)板上的問題

如果開發(fā)板出現(xiàn)明顯的功能性錯誤,要縮小查找問題根源的范圍可能會相當(dāng)困難。為了進(jìn)行設(shè)計調(diào)試,我們應(yīng)當(dāng)創(chuàng)建附加電路并保留某些節(jié)點(diǎn),以便我們對設(shè)計運(yùn)行時得到的數(shù)據(jù)進(jìn)行探測、檢查和分析。下面我們就看看如何用板級調(diào)試軟件來查找錯誤。

按下列四步法并利用RTL調(diào)試器,您能精確查找問題,并對信號和關(guān)注的條件采樣,然后將觀察結(jié)果關(guān)聯(lián)至原始RTL,從而將問題鎖定在RTL規(guī)范或約束設(shè)置范圍內(nèi)。

第一步:指定探測。在RTL中明確要監(jiān)控哪些信號和條件。在此要聲明您所感興趣的觀察點(diǎn)(要觀察的信號或節(jié)點(diǎn))和斷點(diǎn)(RTL控制流程聲明,如IF、THEN和CASE等)。

第二步:通過探測構(gòu)建設(shè)計。利用附加的監(jiān)控電路——即用于根據(jù)您的監(jiān)控要求捕捉并導(dǎo)出調(diào)試數(shù)據(jù)的智能內(nèi)部電路仿真器(IICE)——對FPGA設(shè)計進(jìn)行綜合。

第三步:分析和調(diào)試。設(shè)計綜合完成之后,運(yùn)行設(shè)計并用RTL調(diào)試器觀察數(shù)據(jù)。在開發(fā)板上運(yùn)行測試時,觀察點(diǎn)和斷點(diǎn)共同觸發(fā)數(shù)據(jù)采樣,使您能在您所關(guān)注的非常明確的條件下觀察并調(diào)試特定節(jié)點(diǎn)的電路的行為。您可將觀察到的采樣數(shù)據(jù)寫入VCD文件并將其關(guān)聯(lián)到RTL.

第四步:漸進(jìn)性修復(fù)錯誤(incrementaLfix)。一旦找到了錯誤所在,就可以通過分級、漸進(jìn)式流程在RTL或約束中漸進(jìn)地進(jìn)行修復(fù)。

時序和功能性錯誤的可視檢查

FPGA設(shè)計和調(diào)試工具還有一大優(yōu)點(diǎn),就是能顯示RTL和網(wǎng)表級原理圖。舉例來說,具有互動調(diào)試功能的原理圖查看器能夠顯示設(shè)計的RTL和網(wǎng)表原理圖,便于您進(jìn)行觀察并將時序報告和VCD數(shù)據(jù)(設(shè)計在開發(fā)板上運(yùn)行時產(chǎn)生)關(guān)聯(lián)至RTL源文件。查看器包含一個RTL視圖,用來以圖示的方式描述設(shè)計。該視圖在綜合RTL編譯階段后提供,由技術(shù)獨(dú)立的加法器、寄存器、大型多路選擇器和狀態(tài)機(jī)等組件構(gòu)成。通過RTL原理圖,您可以交叉探測原始RTL,對不符合預(yù)定規(guī)范的設(shè)計進(jìn)行調(diào)整,同時也可以探測到約束編輯器,從而更簡便地更新和指定約束(圖1)。

如何快速解決隔離FPGA設(shè)計中的錯誤

要將錯誤操作的源頭追溯到RTL,您可以利用RTL調(diào)試器在RTL原理圖上方實(shí)時插入觀察到的操作數(shù)據(jù)。

原理圖查看器包括一個網(wǎng)表級技術(shù)視圖,用于顯示綜合后的實(shí)際設(shè)計實(shí)現(xiàn)情況。在HDLAnalyst原理圖查看器中,該視圖基于查找表、寄存器和DSP slice等基本的賽靈思器件原語。您可在原理圖中對路徑進(jìn)行交叉探測,追溯到原始的RTL以及綜合后和布局布線后的最終時序報告,以便分析和提高整體性能。

在FPGA中原型設(shè)計的ASIC門控時鐘結(jié)構(gòu)并非FPGA實(shí)現(xiàn)中的必要環(huán)節(jié),這會導(dǎo)致FPGA資源使用效率低下。解決該問題的有效辦法就是用FPGA綜合軟件轉(zhuǎn)換時鐘。

大型設(shè)計的調(diào)試

在大型設(shè)計中探測所有信號是不可能,因?yàn)樯傻臄?shù)據(jù)量極為龐大,而且探測數(shù)據(jù)所需的額外調(diào)試邏輯也太大。片上調(diào)試方法的一個常見弊病是難以提前預(yù)測需要對哪些信號進(jìn)行探測和監(jiān)控。

一些調(diào)試軟件通過分治法能夠在一定程度上解決這個問題。利用多路復(fù)用的采樣組,設(shè)計人員可以有選擇性地進(jìn)行采樣并通過多路復(fù)用的路徑和共享的IICE在信號組之間切換。這種方法增加了可觀察的信號和條件,而且不會增加數(shù)據(jù)存儲要求。您可以即時切換感興趣的信號組,不必花時間進(jìn)行重新調(diào)整或重新綜合新的設(shè)計。

不幸的是,在探測和采樣數(shù)據(jù)時用使的調(diào)試IICE邏輯會占用包括存儲器BRAM在內(nèi)的芯片資源。您可在SRAM存儲卡中對IICE采樣數(shù)據(jù)進(jìn)行片外存儲,以減少片上BRAM的使用。這種方法的另一個好處是能增加采樣數(shù)據(jù)的深度。

我的設(shè)計無法綜合

設(shè)計錯誤的出現(xiàn)可能導(dǎo)致無法實(shí)現(xiàn)有效綜合或布局布線。由于存在成千上萬的RTL和約束源文件,因此可能需要幾個星期才能完成首次綜合與布局布線。進(jìn)行FPGA原型設(shè)計時,應(yīng)讓ASIC設(shè)計源文件處于“FPGA就緒”狀態(tài)。舉例來說,就是要進(jìn)行門時鐘轉(zhuǎn)換。

在FPGA中原型設(shè)計的ASIC門控時鐘結(jié)構(gòu)并非FPGA實(shí)現(xiàn)中的必要環(huán)節(jié),這會導(dǎo)致FPGA資源使用效率低下。解決該問題的有效辦法就是用FPGA綜合軟件轉(zhuǎn)換時鐘。例如,門控或生成時鐘轉(zhuǎn)換功能可將生成時鐘和門控時鐘邏輯從順序組件的時鐘引腳轉(zhuǎn)移到使能引腳,這樣您就能將順序組件直接綁定到源時鐘,消除偏移問題,并減少設(shè)計中所需的時鐘源數(shù)量,進(jìn)而節(jié)約資源。

在Synplify Premier軟件中啟用門控時鐘選項(xiàng):

–選擇Project->Implementation Options

–在GCC Prototyping Tools標(biāo)簽中點(diǎn)擊Clock Conversion checkbox

或在TCL中使用以下命令

set_option -fix_gated_and_generated_ clocks 1

在Synplify Pro/Premier中執(zhí)行門控和生成時鐘轉(zhuǎn)換,而set_option -conv_mux_xor_gated_clocks 1則針對基于Synopsys HAPS的設(shè)計在Synplify Premier時鐘樹的多路選擇器或OR門上執(zhí)行門控時鐘轉(zhuǎn)換。

“完整”的系列時鐘約束包括在所有正確位置定義時鐘并在生成的時鐘之間定義關(guān)系。有時候,時鐘會出于某種原因與真正的源斷開關(guān)聯(lián),例如時鐘源和時鐘目標(biāo)端間產(chǎn)生了黑盒,這樣會造成順序組件的時鐘缺失或時鐘約束放置錯誤,導(dǎo)致首次時鐘轉(zhuǎn)換因?yàn)槿鄙贂r鐘約束而失敗。在許多情況下,轉(zhuǎn)換失敗是由約束不完整造成的。舉例來說,門控邏輯中可能存在一個組合回路,應(yīng)在時鐘轉(zhuǎn)換之前利用異常處理約束將其打破。綜合編譯階段之后會提供一個門控時鐘報告,告訴您有哪些門控和生成時鐘已被轉(zhuǎn)換以及被轉(zhuǎn)換時鐘的名稱、類型、分組和相關(guān)約束。另一個時鐘列表則顯示的是未轉(zhuǎn)換的時鐘,并包含故障信息,用于說明原因。圖2給出了報告實(shí)例。

舉例來說,如果設(shè)計中有黑盒子,您可以在RTL中指定具體的軟件命令,用于為自動化門控時鐘轉(zhuǎn)換提供輔助。比方說,采用syn_gatedclk_clock_en指令在黑盒子中指定啟用引腳的名稱,用syn_gatedclk_clock_en_polarity指令指出黑盒子上時鐘使能端口的極性。每個轉(zhuǎn)換實(shí)例和驅(qū)動實(shí)例的時鐘引腳都被賦予一個可搜索的屬性,從而能在設(shè)計數(shù)據(jù)庫中識別,并提取到定制TLC/Find腳本生成報告中。


上一頁 1 2 3 下一頁

關(guān)鍵詞: FPGA 隔離

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉