提高ASIC驗(yàn)證的速度與可視性
前言
本文引用地址:http://www.ex-cimer.com/article/78027.htm高性能、高容量FPGA在ASIC/SoC原型設(shè)計(jì)及系統(tǒng)兩方面的應(yīng)用持續(xù)增長。這些設(shè)計(jì)通常包括硬件及嵌入式軟件(也可能包括應(yīng)用軟件)的復(fù)雜組合,這給系統(tǒng)驗(yàn)證帶來了巨大負(fù)擔(dān),原因是檢測、隔離、調(diào)試及校正故障要比最初設(shè)計(jì)所花費(fèi)的時(shí)間、資金和工程資源多得多。
由于軟硬件之間交互作用相當(dāng)復(fù)雜且無法預(yù)見,僅僅是找到深藏于系統(tǒng)中的故障就需要進(jìn)行長時(shí)間的測試序列,而且隨后的調(diào)試過程還需要花費(fèi)更多的時(shí)間及精力。另外,如果驗(yàn)證測試使用視頻流等實(shí)際數(shù)據(jù)時(shí),那么間發(fā)故障將很難(如果并非不可能)重現(xiàn)。
有多種驗(yàn)證方法可以選擇,如軟件模擬、硬件加速模擬、硬件仿真及基于FPGA的原型設(shè)計(jì)等,但這些方法各有利弊。而基于FPGA的原型設(shè)計(jì)驗(yàn)證方法則表現(xiàn)要好得多,能夠以實(shí)時(shí)硬件速度運(yùn)行。在ASIC/SoC設(shè)計(jì)中,基于FPGA的原型設(shè)計(jì)驗(yàn)證方法的成本比硬件加速及仿真解決方案低很多。但 FPGA驗(yàn)證的可視性差,無法監(jiān)控內(nèi)部狀態(tài)及信號(hào)。
傳統(tǒng)驗(yàn)證方法概述
首先以手機(jī)啟動(dòng)的設(shè)計(jì)為例,將各種軟件模擬技術(shù)與基于FPGA的原型設(shè)計(jì)的性能進(jìn)行對比,比較結(jié)果可參見圖1。
圖1 軟件模擬技術(shù)與基于FPGA的原型設(shè)計(jì)的性能對比
即使是高容量、高性能的RTL模擬器在啟動(dòng)系統(tǒng)時(shí)也要花費(fèi)30天,而且還需要使用Testbench。同樣,使用指令集模擬器(ISS)的傳統(tǒng)硬件/軟件共同驗(yàn)證環(huán)境需要花費(fèi)10天時(shí)間啟動(dòng)系統(tǒng),也需要Testbench。C/C++模擬雖然將系統(tǒng)啟動(dòng)時(shí)間縮短到24小時(shí),但其對系統(tǒng)內(nèi)部工作情況的可視性較差。
相比之下,在系統(tǒng)FPGA啟動(dòng)系統(tǒng)的時(shí)間僅為3s,基于FPGA的環(huán)境能夠在實(shí)時(shí)工作負(fù)荷下驗(yàn)證系統(tǒng),也可以作為嵌入式軟件及應(yīng)用軟件開發(fā)人員的平臺(tái),以便集成并測試真實(shí)系統(tǒng)內(nèi)容代碼。FPGA用于傳統(tǒng)驗(yàn)證環(huán)境的主要缺點(diǎn)是缺乏對內(nèi)部信號(hào)、狀態(tài)及存儲(chǔ)器內(nèi)容的可視性。
前面提到,軟件模擬成本很低但全系統(tǒng)驗(yàn)證花費(fèi)時(shí)間長,而基于FPGA的原型設(shè)計(jì)驗(yàn)證方法不僅成本很低,而且速度很快。硬件加速模擬及仿真的速度比軟件模擬速度快很多,但比FPGA驗(yàn)證法慢很多,且其成本要比上述兩種方法高得多,所以基于FPGA的原型設(shè)計(jì)驗(yàn)證方法具有最高性價(jià)比,如圖2所示。
圖2 各種設(shè)計(jì)驗(yàn)證方法的性價(jià)比
傳統(tǒng)基于FPGA的原型設(shè)計(jì)系統(tǒng)的明顯缺點(diǎn)是對系統(tǒng)內(nèi)部工作狀態(tài)的可視性有限。提高基于FPGA的原型設(shè)計(jì)的可視性的方法很多,但這些技術(shù)各有其局限性或不足之處。例如將內(nèi)部信號(hào)時(shí)分復(fù)用傳輸至FPGA主要I/O引腳,這種常用技術(shù)一方面提高了可視性,另一方面卻嚴(yán)重降級(jí)了系統(tǒng)性能。
另一種常用技術(shù)是將“邏輯分析儀”的宏(macro)嵌入FPGA架構(gòu)中。這些宏的用途很多,例如用戶自定義觸發(fā)器條件引起的觸發(fā)動(dòng)作可以命令宏從一組信號(hào)中采集數(shù)據(jù)。宏更多用于從選定信號(hào)中持續(xù)采集數(shù)據(jù)并存入RAM塊(RAM無剩余空間時(shí),最新數(shù)據(jù)將覆蓋舊數(shù)據(jù))。當(dāng)滿足用戶自定義條件,如到達(dá)斷點(diǎn)時(shí),宏將停止采集數(shù)據(jù)并通過設(shè)備的JTAG端口向外部傳輸已存儲(chǔ)的信號(hào)值。
嵌入式邏輯分析儀技術(shù)的優(yōu)勢是能夠確保FPGA持續(xù)以實(shí)時(shí)硬件速度運(yùn)行,缺點(diǎn)是可監(jiān)控信號(hào)的數(shù)量及采集數(shù)據(jù)的“深度”(周期數(shù))有限。另外,該技術(shù)只能根據(jù)存儲(chǔ)器容量大小提供有限的可視性。
如果對所有不同驗(yàn)證方法的整個(gè)可視性范圍(從無可視性到全可視性)進(jìn)行比較,可以發(fā)現(xiàn)軟件模擬居于榜首,硬件加速模擬及硬件仿真次之。而傳統(tǒng)基于FPGA的原型設(shè)計(jì)在使用嵌入式邏輯分析儀技術(shù)以確保其速度優(yōu)勢時(shí)的可視性非常差,使調(diào)試變得更加困難和耗時(shí)。
可視性提高技術(shù)的不足之處
盡管嵌入式邏輯分析儀能夠觀察FPGA內(nèi)部信號(hào)狀態(tài),但卻無法提供全信號(hào)可視性。為解決這一問題,嵌入式邏輯分析儀“可視性增強(qiáng)”技術(shù)應(yīng)運(yùn)而生,只需采集與部分內(nèi)部信號(hào)相關(guān)的數(shù)據(jù),其他未被觀察到的信號(hào)數(shù)據(jù)可由可視性增強(qiáng)型應(yīng)用推斷出。
該技術(shù)的確提高了性能,但因?yàn)闊o法觀察與少量輸入測試矢量相關(guān)的大量內(nèi)部數(shù)據(jù),從而限制了可采集數(shù)據(jù)的深度。如果用戶希望增加深度(輸入矢量的數(shù)量),則必須平衡監(jiān)控信號(hào)的數(shù)量。這可能需要進(jìn)行大量的驗(yàn)證運(yùn)行(verification run),以跟蹤問題條件,每個(gè)驗(yàn)證運(yùn)行需要監(jiān)控不同的信號(hào)集。這意味著一些非確定性、間發(fā)故障可能“漏網(wǎng)”,原因是其并未出現(xiàn)在并發(fā)運(yùn)行中。
基于門級(jí)信號(hào)值的可視性增強(qiáng)技術(shù)會(huì)帶來更多問題,如果上述技術(shù)無法識(shí)別所有的綜合優(yōu)化處理,可視性增強(qiáng)信號(hào)就不能對應(yīng)為RTL信號(hào)。如果能夠觀測到斷言,則FPGA的門級(jí)信號(hào)與斷言的源代碼(RTL)數(shù)據(jù)之間的模糊相關(guān)性至少可以使調(diào)試過程略微有趣些。
TotalRecall提供解決之道
TotalRecall技術(shù)可以解決基于FPGA的原型設(shè)計(jì)及FPGA 系統(tǒng)的可視性問題,該技術(shù)在提供100%可視性的同時(shí),還可確保FPGA以實(shí)時(shí)硬件速度運(yùn)行。TotalRecall從概念的角度看很簡單,但實(shí)際執(zhí)行非常復(fù)雜,這是因?yàn)橥该魈幚矶鄷r(shí)鐘域等問題。
TotalRecall技術(shù)的基本原理是在FPGA內(nèi)部復(fù)制邏輯,然后存儲(chǔ)該復(fù)制邏輯的激勵(lì),同時(shí)延遲其應(yīng)用。這稱為TotalRecall邏輯。圖3為整個(gè)設(shè)計(jì)應(yīng)用TotalRecall技術(shù)的例子。
圖3 TotalRecall的基本原理
從圖3中可以看出,主要輸入端的激勵(lì)信號(hào)直接饋入實(shí)際邏輯塊,器件主要輸出端的實(shí)時(shí)響應(yīng)由此邏輯塊產(chǎn)生。同時(shí),原始測試矢量也饋入,作為緩沖器的存儲(chǔ)區(qū)。假設(shè)該緩沖器的深度為1000字(words),則復(fù)制邏輯的激勵(lì)信號(hào)將跟蹤真實(shí)邏輯觸發(fā)信號(hào)1000個(gè)時(shí)鐘周期。
當(dāng)檢測到主要輸出端的斷言觸發(fā)或錯(cuò)誤響應(yīng)等問題時(shí),復(fù)制邏輯及其相應(yīng)存儲(chǔ)緩沖器將暫停。此時(shí),激勵(lì)存儲(chǔ)緩沖器內(nèi)容及復(fù)制邏輯內(nèi)容狀態(tài)由 FPGA器件的JTAG端口導(dǎo)出。TotalRecall技術(shù)提供極大測試矢量深度(與傳統(tǒng)的基于邏輯分析儀的宏技術(shù)相比)的原因在于存儲(chǔ)一次激勵(lì)信號(hào)后即無須存儲(chǔ)海量內(nèi)部信號(hào)。
當(dāng)然,復(fù)制邏輯的當(dāng)前狀態(tài)與其綜合后的門級(jí)表示相符。然而,設(shè)計(jì)人員及驗(yàn)證工程師更愿意使用他們最初的RTL級(jí),原因是這些表示易于理解,且在RTL級(jí)上工作可以大幅提升用戶的工作效率。因此,TotalRecall技術(shù)將當(dāng)前的門級(jí)表示映射為等同的RTL表示。
當(dāng)檢測到故障且以實(shí)時(shí)硬件速度運(yùn)行時(shí),用戶能夠馬上進(jìn)入他們熟悉的軟件模擬環(huán)境,初始化設(shè)計(jì)及Testbench將引導(dǎo)用戶輕松找到故障。已映射的內(nèi)部狀態(tài)信息用于對標(biāo)準(zhǔn)RTL模擬器的內(nèi)部狀態(tài)進(jìn)行初始化。同時(shí),激勵(lì)存儲(chǔ)器內(nèi)容則用于生成驅(qū)動(dòng)軟件模擬器的Testbench。
請注意,使用TotalRecall技術(shù)無須復(fù)制整個(gè)設(shè)計(jì),這一點(diǎn)很重要。驗(yàn)證工程師可能僅僅關(guān)注設(shè)計(jì)中包含的某個(gè)功能塊,就可以使用TotalRecall技術(shù)復(fù)制這些功能塊。將TotalRecall技術(shù)應(yīng)用到單個(gè)功能塊的實(shí)例如圖4所示。
圖4 TotalRecall技術(shù)應(yīng)用于設(shè)計(jì)中的子集
此例中,當(dāng)發(fā)現(xiàn)故障時(shí),TotalRecall技術(shù)能夠生成局部Testbench,專門用于測試掛起功能塊,然后設(shè)計(jì)人員或測試工程師對Testbench和掛起塊的初始狀態(tài)信息進(jìn)行詳細(xì)分析。
TotalRecall技術(shù)的優(yōu)勢很多,例如,除了提供所有內(nèi)部信號(hào)的觀察通道外,用戶還可以觀察到內(nèi)部存儲(chǔ)區(qū)的所有內(nèi)容。 TotalRecall技術(shù)可以在實(shí)時(shí)硬件速度下提供100%的可視性,其中包括寄存器、組合邏輯和存儲(chǔ)模塊等,使用戶輕松跟蹤、隔離并快速評(píng)估深藏在驗(yàn)證過程中的間發(fā)故障。當(dāng)某個(gè)故障被檢測出時(shí),TotalRecall技術(shù)可以定位到故障前數(shù)百次甚至上千個(gè)周期前的狀態(tài)值,并且用來對軟件仿真器進(jìn)行初始化設(shè)置。另外,TotalRecall還可以提供設(shè)計(jì)由初始狀態(tài)到故障狀態(tài)的測試序列。TotalRecall與各種設(shè)計(jì)驗(yàn)證技術(shù)的可視性對比如圖5所示。
圖5 各種設(shè)計(jì)驗(yàn)證技術(shù)的可視性對比
驗(yàn)證與調(diào)試的革新變化
TotalRecall技術(shù)對驗(yàn)證與調(diào)試技術(shù)將產(chǎn)生深遠(yuǎn)的影響,下面是幾個(gè)簡單例子。
斷言(Assertions):TotalRecall使斷言十分有用。由于斷言具有暫時(shí)性特點(diǎn),過去很難充分利用基于斷言的驗(yàn)證(ABV)的優(yōu)勢。采用TotalRecall技術(shù)則可采集足夠深度的測試矢量以便完全隔離第一個(gè)觸發(fā)斷言的動(dòng)作序列。
基于FPGA的ASIC/SoC原型設(shè)計(jì):TotalRecall技術(shù)使基于FPGA的ASIC/SoC原型設(shè)計(jì)在實(shí)時(shí)硬件速度下能夠提供 100%的可視性,尤其是TotalRecall技術(shù)具有檢測、跟蹤、隔離并調(diào)試間歇性及非確定性故障的能力,這對其他驗(yàn)證方法而言是難以實(shí)現(xiàn)的。
基于FPGA的在系統(tǒng)驗(yàn)證:在基于FPGA的系統(tǒng)中,由于對主電路板的改動(dòng)相對較少,因此該系統(tǒng)支持TotalRecall技術(shù)。在驗(yàn)證或燒片系統(tǒng)中,可能會(huì)將高容量FPGA與用以復(fù)制整個(gè)設(shè)計(jì)的TotalRecall技術(shù)配合使用。一旦系統(tǒng)驗(yàn)證完畢,F(xiàn)PGA可以用成本更低的、容量更小的 (僅能放置主要設(shè)計(jì)邏輯即可)的兼容器件替代。
遠(yuǎn)程軟件開發(fā):一旦基于FPGA的平臺(tái)上市,則可將備份分發(fā)給多個(gè)在不同地區(qū)的應(yīng)用軟件開發(fā)人員。過去,如果發(fā)生復(fù)雜的硬件-軟件互動(dòng)問題,則很難進(jìn)行調(diào)試解決?,F(xiàn)在,一旦出現(xiàn)故障,每個(gè)基于FPGA的開發(fā)系統(tǒng)均可配備TotalRecall技術(shù),這樣遠(yuǎn)程軟件開發(fā)人員就能夠立即將 Testbench及狀態(tài)信息發(fā)回“基地”,由設(shè)計(jì)、驗(yàn)證小組快速解決。
總結(jié)
TotalRecall技術(shù)與傳統(tǒng)驗(yàn)證技術(shù)的對比見表1。與傳統(tǒng)驗(yàn)證技術(shù)(包括軟件模擬、硬件模擬及基于FPGA的原型設(shè)計(jì)技術(shù))不同, TotalRecall能夠幫助用戶快速檢測、隔離、調(diào)試并解決深藏的偶發(fā)及間發(fā)故障。這些故障有時(shí)會(huì)出現(xiàn)在實(shí)時(shí)激勵(lì)的情況下或者由軟硬件之間復(fù)雜的非確定性互動(dòng)引起,解決這種問題非常困難,除非在一定速度下運(yùn)行(實(shí)時(shí)系統(tǒng)尤其要求如此)。
表1 傳統(tǒng)驗(yàn)證技術(shù)于TotalRecall技術(shù)對比
除了向以實(shí)時(shí)硬件速度運(yùn)行的設(shè)計(jì)提供了100%的可視性以外,TotalRecall技術(shù)還可幫助驗(yàn)證工程師在熟悉的RTL環(huán)境中跟蹤故障。另外,TotalRecall技術(shù)使斷言非常有用,當(dāng)一個(gè)斷言觸發(fā)時(shí),TotalRecall能夠提供一個(gè)觸發(fā)這個(gè)斷言的僅包含幾百或幾千個(gè)周期的測試序列。
評(píng)論