新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 提高ASIC驗(yàn)證的速度與可視性

提高ASIC驗(yàn)證的速度與可視性

作者: 時(shí)間:2008-01-24 來(lái)源: 收藏

  前言

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

  高性能、高容量/SoC原型設(shè)計(jì)及系統(tǒng)兩方面的應(yīng)用持續(xù)增長(zhǎng)。這些設(shè)計(jì)通常包括硬件及嵌入式軟件(也可能包括應(yīng)用軟件)的復(fù)雜組合,這給系統(tǒng)驗(yàn)證帶來(lái)了巨大負(fù)擔(dān),原因是檢測(cè)、隔離、調(diào)試及校正故障要比最初設(shè)計(jì)所花費(fèi)的時(shí)間、資金和工程資源多得多。

  由于軟硬件之間交互作用相當(dāng)復(fù)雜且無(wú)法預(yù)見,僅僅是找到深藏于系統(tǒng)中的故障就需要進(jìn)行長(zhǎng)時(shí)間的測(cè)試序列,而且隨后的調(diào)試過(guò)程還需要花費(fèi)更多的時(shí)間及精力。另外,如果驗(yàn)證測(cè)試使用視頻流等實(shí)際數(shù)據(jù)時(shí),那么間發(fā)故障將很難(如果并非不可能)重現(xiàn)。

  有多種驗(yàn)證方法可以選擇,如軟件模擬、硬件加速模擬、硬件仿真及基于的原型設(shè)計(jì)等,但這些方法各有利弊。而基于的原型設(shè)計(jì)驗(yàn)證方法則表現(xiàn)要好得多,能夠以實(shí)時(shí)硬件速度運(yùn)行。在/SoC設(shè)計(jì)中,基于FPGA的原型設(shè)計(jì)驗(yàn)證方法的成本比硬件加速及仿真解決方案低很多。但 FPGA驗(yàn)證的可視性差,無(wú)法監(jiān)控內(nèi)部狀態(tài)及信號(hào)。

  傳統(tǒng)驗(yàn)證方法概述

  首先以手機(jī)啟動(dòng)的設(shè)計(jì)為例,將各種軟件模擬技術(shù)與基于FPGA的原型設(shè)計(jì)的性能進(jìn)行對(duì)比,比較結(jié)果可參見圖1。

  

軟件模擬技術(shù)與基于FPGA的原型設(shè)計(jì)的性能對(duì)比

 

  圖1 軟件模擬技術(shù)與基于FPGA的原型設(shè)計(jì)的性能對(duì)比

  即使是高容量、高性能的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í),但其對(duì)系統(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),以便集成并測(cè)試真實(shí)系統(tǒng)內(nèi)容代碼。FPGA用于傳統(tǒng)驗(yàn)證環(huán)境的主要缺點(diǎn)是缺乏對(duì)內(nèi)部信號(hào)、狀態(tài)及存儲(chǔ)器內(nèi)容的可視性。

  前面提到,軟件模擬成本很低但全系統(tǒng)驗(yàn)證花費(fèi)時(shí)間長(zhǎng),而基于FPGA的原型設(shè)計(jì)驗(yàn)證方法不僅成本很低,而且速度很快。硬件加速模擬及仿真的速度比軟件模擬速度快很多,但比FPGA驗(yàn)證法慢很多,且其成本要比上述兩種方法高得多,所以基于FPGA的原型設(shè)計(jì)驗(yàn)證方法具有最高性價(jià)比,如圖2所示。

  

各種設(shè)計(jì)驗(yàn)證方法的性價(jià)比

 

  圖2 各種設(shè)計(jì)驗(yàn)證方法的性價(jià)比

  傳統(tǒng)基于FPGA的原型設(shè)計(jì)系統(tǒng)的明顯缺點(diǎn)是對(duì)系統(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無(wú)剩余空間時(shí),最新數(shù)據(jù)將覆蓋舊數(shù)據(jù))。當(dāng)滿足用戶自定義條件,如到達(dá)斷點(diǎn)時(shí),宏將停止采集數(shù)據(jù)并通過(guò)設(shè)備的JTAG端口向外部傳輸已存儲(chǔ)的信號(hào)值。

  嵌入式邏輯分析儀技術(shù)的優(yōu)勢(shì)是能夠確保FPGA持續(xù)以實(shí)時(shí)硬件速度運(yùn)行,缺點(diǎn)是可監(jiān)控信號(hào)的數(shù)量及采集數(shù)據(jù)的“深度”(周期數(shù))有限。另外,該技術(shù)只能根據(jù)存儲(chǔ)器容量大小提供有限的可視性。

  如果對(duì)所有不同驗(yàn)證方法的整個(gè)可視性范圍(從無(wú)可視性到全可視性)進(jìn)行比較,可以發(fā)現(xiàn)軟件模擬居于榜首,硬件加速模擬及硬件仿真次之。而傳統(tǒng)基于FPGA的原型設(shè)計(jì)在使用嵌入式邏輯分析儀技術(shù)以確保其速度優(yōu)勢(shì)時(shí)的可視性非常差,使調(diào)試變得更加困難和耗時(shí)。

  可視性提高技術(shù)的不足之處

  盡管嵌入式邏輯分析儀能夠觀察FPGA內(nèi)部信號(hào)狀態(tài),但卻無(wú)法提供全信號(hào)可視性。為解決這一問(wèn)題,嵌入式邏輯分析儀“可視性增強(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(wú)法觀察與少量輸入測(cè)試矢量相關(guān)的大量?jī)?nèi)部數(shù)據(jù),從而限制了可采集數(shù)據(jù)的深度。如果用戶希望增加深度(輸入矢量的數(shù)量),則必須平衡監(jiān)控信號(hào)的數(shù)量。這可能需要進(jìn)行大量的驗(yàn)證運(yùn)行(verification run),以跟蹤問(wèn)題條件,每個(gè)驗(yàn)證運(yùn)行需要監(jiān)控不同的信號(hào)集。這意味著一些非確定性、間發(fā)故障可能“漏網(wǎng)”,原因是其并未出現(xiàn)在并發(fā)運(yùn)行中。

  基于門級(jí)信號(hào)值的可視性增強(qiáng)技術(shù)會(huì)帶來(lái)更多問(wèn)題,如果上述技術(shù)無(wú)法識(shí)別所有的綜合優(yōu)化處理,可視性增強(qiáng)信號(hào)就不能對(duì)應(yīng)為RTL信號(hào)。如果能夠觀測(cè)到斷言,則FPGA的門級(jí)信號(hào)與斷言的源代碼(RTL)數(shù)據(jù)之間的模糊相關(guān)性至少可以使調(diào)試過(guò)程略微有趣些。

  TotalRecall提供解決之道

  TotalRecall技術(shù)可以解決基于FPGA的原型設(shè)計(jì)及FPGA 系統(tǒng)的可視性問(wèn)題,該技術(shù)在提供100%可視性的同時(shí),還可確保FPGA以實(shí)時(shí)硬件速度運(yùn)行。TotalRecall從概念的角度看很簡(jiǎn)單,但實(shí)際執(zhí)行非常復(fù)雜,這是因?yàn)橥该魈幚矶鄷r(shí)鐘域等問(wèn)題。

  TotalRecall技術(shù)的基本原理是在FPGA內(nèi)部復(fù)制邏輯,然后存儲(chǔ)該復(fù)制邏輯的激勵(lì),同時(shí)延遲其應(yīng)用。這稱為TotalRecall邏輯。圖3為整個(gè)設(shè)計(jì)應(yīng)用TotalRecall技術(shù)的例子。

  

TotalRecall的基本原理

 

  圖3 TotalRecall的基本原理

  從圖3中可以看出,主要輸入端的激勵(lì)信號(hào)直接饋入實(shí)際邏輯塊,器件主要輸出端的實(shí)時(shí)響應(yīng)由此邏輯塊產(chǎn)生。同時(shí),原始測(cè)試矢量也饋入,作為緩沖器的存儲(chǔ)區(qū)。假設(shè)該緩沖器的深度為1000字(words),則復(fù)制邏輯的激勵(lì)信號(hào)將跟蹤真實(shí)邏輯觸發(fā)信號(hào)1000個(gè)時(shí)鐘周期。

  當(dāng)檢測(cè)到主要輸出端的斷言觸發(fā)或錯(cuò)誤響應(yīng)等問(wèn)題時(shí),復(fù)制邏輯及其相應(yīng)存儲(chǔ)緩沖器將暫停。此時(shí),激勵(lì)存儲(chǔ)緩沖器內(nèi)容及復(fù)制邏輯內(nèi)容狀態(tài)由 FPGA器件的JTAG端口導(dǎo)出。TotalRecall技術(shù)提供極大測(cè)試矢量深度(與傳統(tǒng)的基于邏輯分析儀的宏技術(shù)相比)的原因在于存儲(chǔ)一次激勵(lì)信號(hào)后即無(wú)須存儲(chǔ)海量?jī)?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)檢測(cè)到故障且以實(shí)時(shí)硬件速度運(yùn)行時(shí),用戶能夠馬上進(jìn)入他們熟悉的軟件模擬環(huán)境,初始化設(shè)計(jì)及Testbench將引導(dǎo)用戶輕松找到故障。已映射的內(nèi)部狀態(tài)信息用于對(duì)標(biāo)準(zhǔn)RTL的內(nèi)部狀態(tài)進(jìn)行初始化。同時(shí),激勵(lì)存儲(chǔ)器內(nèi)容則用于生成驅(qū)動(dòng)軟件模擬器的Testbench。

  請(qǐng)注意,使用TotalRecall技術(shù)無(wú)須復(fù)制整個(gè)設(shè)計(jì),這一點(diǎn)很重要。驗(yàn)證工程師可能僅僅關(guān)注設(shè)計(jì)中包含的某個(gè)功能塊,就可以使用TotalRecall技術(shù)復(fù)制這些功能塊。將TotalRecall技術(shù)應(yīng)用到單個(gè)功能塊的實(shí)例如圖4所示。

  

TotalRecall技術(shù)應(yīng)用于設(shè)計(jì)中的子集

 

  圖4 TotalRecall技術(shù)應(yīng)用于設(shè)計(jì)中的子集

  此例中,當(dāng)發(fā)現(xiàn)故障時(shí),TotalRecall技術(shù)能夠生成局部Testbench,專門用于測(cè)試掛起功能塊,然后設(shè)計(jì)人員或測(cè)試工程師對(duì)Testbench和掛起塊的初始狀態(tài)信息進(jìn)行詳細(xì)分析。

  TotalRecall技術(shù)的優(yōu)勢(shì)很多,例如,除了提供所有內(nèi)部信號(hào)的觀察通道外,用戶還可以觀察到內(nèi)部存儲(chǔ)區(qū)的所有內(nèi)容。 TotalRecall技術(shù)可以在實(shí)時(shí)硬件速度下提供100%的可視性,其中包括寄存器、組合邏輯和存儲(chǔ)模塊等,使用戶輕松跟蹤、隔離并快速評(píng)估深藏在驗(yàn)證過(guò)程中的間發(fā)故障。當(dāng)某個(gè)故障被檢測(cè)出時(shí),TotalRecall技術(shù)可以定位到故障前數(shù)百次甚至上千個(gè)周期前的狀態(tài)值,并且用來(lái)對(duì)軟件仿真器進(jìn)行初始化設(shè)置。另外,TotalRecall還可以提供設(shè)計(jì)由初始狀態(tài)到故障狀態(tài)的測(cè)試序列。TotalRecall與各種設(shè)計(jì)驗(yàn)證技術(shù)的可視性對(duì)比如圖5所示。

  

各種設(shè)計(jì)驗(yàn)證技術(shù)的可視性對(duì)比

 

  圖5 各種設(shè)計(jì)驗(yàn)證技術(shù)的可視性對(duì)比

  驗(yàn)證與調(diào)試的革新變化

  TotalRecall技術(shù)對(duì)驗(yàn)證與調(diào)試技術(shù)將產(chǎn)生深遠(yuǎn)的影響,下面是幾個(gè)簡(jiǎn)單例子。

  斷言(Assertions):TotalRecall使斷言十分有用。由于斷言具有暫時(shí)性特點(diǎn),過(guò)去很難充分利用基于斷言的驗(yàn)證(ABV)的優(yōu)勢(shì)。采用TotalRecall技術(shù)則可采集足夠深度的測(cè)試矢量以便完全隔離第一個(gè)觸發(fā)斷言的動(dòng)作序列。

  基于FPGA的/SoC原型設(shè)計(jì):TotalRecall技術(shù)使基于FPGA的ASIC/SoC原型設(shè)計(jì)在實(shí)時(shí)硬件速度下能夠提供 100%的可視性,尤其是TotalRecall技術(shù)具有檢測(cè)、跟蹤、隔離并調(diào)試間歇性及非確定性故障的能力,這對(duì)其他驗(yàn)證方法而言是難以實(shí)現(xiàn)的。

  基于FPGA的在系統(tǒng)驗(yàn)證:在基于FPGA的系統(tǒng)中,由于對(duì)主電路板的改動(dòng)相對(duì)較少,因此該系統(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ā)人員。過(guò)去,如果發(fā)生復(fù)雜的硬件-軟件互動(dòng)問(wèn)題,則很難進(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ù)的對(duì)比見表1。與傳統(tǒng)驗(yàn)證技術(shù)(包括軟件模擬、硬件模擬及基于FPGA的原型設(shè)計(jì)技術(shù))不同, TotalRecall能夠幫助用戶快速檢測(cè)、隔離、調(diào)試并解決深藏的偶發(fā)及間發(fā)故障。這些故障有時(shí)會(huì)出現(xiàn)在實(shí)時(shí)激勵(lì)的情況下或者由軟硬件之間復(fù)雜的非確定性互動(dòng)引起,解決這種問(wèn)題非常困難,除非在一定速度下運(yùn)行(實(shí)時(shí)系統(tǒng)尤其要求如此)。

  表1 傳統(tǒng)驗(yàn)證技術(shù)于TotalRecall技術(shù)對(duì)比

  

傳統(tǒng)驗(yàn)證技術(shù)于TotalRecall技術(shù)對(duì)比

 

  除了向以實(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è)周期的測(cè)試序列。



關(guān)鍵詞: FPGA ASIC 模擬器

評(píng)論


相關(guān)推薦

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

關(guān)閉