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