各種流行驗證技術(shù)的特性比較和選擇標準
抽象級越高,設計就越容易;同理,抽象級越高,就越容易犯較大的錯誤。如果產(chǎn)生架構缺陷,就有可能損害整個(gè)芯片,這與發(fā)生在邏輯門(mén)連接表級上的導線(xiàn)誤連接是截然不同的(后者可通過(guò)重新連線(xiàn)的方法得到修復)。
以Verilog為例,它為設計者提供了一個(gè)較為簡(jiǎn)易的接口,以便在一個(gè)相當抽象的等級上進(jìn)行設計。然而,如果設計者并不知曉在多個(gè)設計周期中獲得的語(yǔ)言的細微差別,那么就非常容易犯錯。許多論文重點(diǎn)闡述了Verilog誤用的不良后果。當設計曾經(jīng)是瓶頸時(shí),Verilog獨立地使設計生產(chǎn)率取得了指數性的提高(如采用原理圖捕獲),并首先推進(jìn)了復雜芯片的開(kāi)發(fā)!在眾多的驗證技術(shù)和語(yǔ)言、檢驗成為瓶頸的今天,相同的爭議仍然存在。
驗證瓶頸
EDA行業(yè)通過(guò)引入工具來(lái)幫助提升設計生產(chǎn)率,進(jìn)而達到縮短產(chǎn)品時(shí)間的目的,并最終實(shí)現設計時(shí)間的縮減。設計時(shí)間與硅片復雜性之間存在某種函數關(guān)系。硅片復雜性指的是工藝精細度調整以及新型材料或新型架構的引入對器件互連的影響。在硅片結構中擁有復雜性的能力將導致系統復雜性的形成(由于特征尺寸的縮小以及消費者對增加功能的需求而在相同的面積之內壓縮進(jìn)更多晶體管的能力)。
隨著(zhù)設計方案構筑過(guò)程中所集成的晶體管數量的指數性增加,計算時(shí)間或工程師數量的線(xiàn)性增加已不足以縮短設計時(shí)間。系統復雜性繼續按照摩爾定律增加,而功能復雜性(一個(gè)系統所具有的不同狀態(tài)的數量)的增長(cháng)速度則更加迅猛。為解決這一問(wèn)題,EDA行業(yè)提出了通過(guò)自動(dòng)化來(lái)實(shí)現“設計抽象”(Design Abstraction)的概念。從能夠在多個(gè)電路層上捕獲設計的原理圖捕獲工具到基于語(yǔ)言的解決方案等均已面市。
這種追隨形勢需要的設計手法仍然是適當的。EDA界即將推出并給予支持的最新語(yǔ)言是SystemC和SystemVerilog,它們能夠解決一些由目前所采用的技術(shù)和工藝造成的系統復雜性問(wèn)題。我們可以說(shuō),就目前的技術(shù)工藝而言,設計復雜性已經(jīng)得到了很好的理解,而且,設計瓶頸也因為采用EDA工具所實(shí)現的生產(chǎn)率提高而在一定程度上得到了克服。
設計生產(chǎn)率的提升速度將繼續低于復雜性的增速,此時(shí)與之相關(guān)的瓶頸已并非設計時(shí)間,而是驗證時(shí)間
由于下列原因所導致的設計抽象級的提高是形成驗證瓶頸的罪魁禍首之一。
在一個(gè)較高的抽象級上進(jìn)行設計使得我們能夠輕松地構筑高度復雜的功能。設計復雜性的這種增加接著(zhù)會(huì )導致驗證工作量幾乎翻番(如果設計者考慮增加鎖存器和邏輯門(mén)的數量,這就等于功能復雜性將加倍,而且其驗證范圍也將因此翻番)。
在設計、變換以及至終端產(chǎn)品的最終映射中采用較高的抽象級總會(huì )存在信息損失和解釋錯誤的情況。比如,采用HDL級設計并將之變換為邏輯門(mén)級(映射至某一特定技術(shù))的綜合過(guò)程;在這一級上需要進(jìn)行驗證,以保證所實(shí)施的變換正確無(wú)誤,而且設計內容沒(méi)有丟失。提高抽象級還會(huì )帶來(lái)代碼解釋方面的問(wèn)題,代碼解釋是用來(lái)在仿真過(guò)程中對設計進(jìn)行描述的,用于確保所編寫(xiě)的代碼如實(shí)地反映了功能規范。
其他影響驗證問(wèn)題的因素包括:
由于當今設計的異類(lèi)特性(比如硬件-軟件、模擬-數字的共存等)所導致的功能復雜性的增加;
對較高的系統可靠性的要求迫使驗證工作必須確保芯片級功能可在系統環(huán)境中圓滿(mǎn)地執行,尤其是當某個(gè)芯片級缺陷具有多重影響時(shí)更應如此。
相關(guān)統計結果表明:驗證問(wèn)題是客觀(guān)存在的,并正在耗費有關(guān)的公司的巨額資金。
設計差錯導致的芯片缺陷:在由于邏輯和功能缺陷的緣故而導致需要進(jìn)行重新布線(xiàn)的設計當中,有82%存在著(zhù)設計差錯。這意味著(zhù)在驗證過(guò)程中并未考慮一些極端場(chǎng)合,而且一直到最后的檢查之前,bug都會(huì )隱匿在設計之中。
規范誤差導致的芯片缺陷:在由于邏輯和功能缺陷的緣故而導致需要進(jìn)行重新布線(xiàn)的設計當中,有47%存在著(zhù)規范不正確或不完整的情況。在由于邏輯和功能缺陷的緣故而導致需要進(jìn)行重新布線(xiàn)的設計當中,有32%對規范進(jìn)行了改動(dòng)。
采用復用IP和外來(lái)IP所引發(fā)的問(wèn)題:14%的缺陷芯片在復用單元或外來(lái)IP中存在bug。
重新布線(xiàn)的影響:重新布線(xiàn)有可能給公司帶來(lái)高達10萬(wàn)美元的損失。此外,它還會(huì )推遲產(chǎn)品面市,并因采用這些缺陷芯片的系統所發(fā)生的故障而導致費用的上揚。
為了對付驗證瓶頸問(wèn)題可以:1.提高設計師的生產(chǎn)率:這一領(lǐng)域大有優(yōu)化空間。設計生產(chǎn)率已經(jīng)通過(guò)改善計算機性能、采用諸如微軟公司的軟件工具(如Excel)等個(gè)人工具而得到了提高。雖然它們在捕獲測試和驗證計劃中大有助益,但大部分時(shí)間卻花在了測試場(chǎng)合的編碼、運行和調試上。2.提高驗證生產(chǎn)率:這種方法明顯具有用于提升生產(chǎn)率的潛力。

為了提高驗證生產(chǎn)率,EDA行業(yè)采用了一種與解決設計瓶頸問(wèn)題相似的“抽象”概念。諸如Verilog和VHDL等高級語(yǔ)言被用來(lái)驗證芯片;包括諸如任務(wù)、線(xiàn)程(分叉、連接)等以及諸如“while”等控制結構。這提供了對數據的進(jìn)一步控制,以便在所有的功能隅角上實(shí)現設計的全面執行。然而,這些構件過(guò)去是不可綜合的,因此未被設計師用作實(shí)際設計代碼的一部分。
隨著(zhù)復雜性的繼續提高,人們創(chuàng )建并引入了能夠在不同的抽象級上對復雜設計進(jìn)行驗證的新型驗證語(yǔ)言。伴隨著(zhù)這些新型語(yǔ)言的問(wèn)世又出現了對其提供支持的技術(shù)和工具。
驗證與確認(Validation)的比較
除了驗證問(wèn)題之外,芯片制造商還飽受確認時(shí)間的困擾。Kropf將“確認”定義為“通過(guò)檢查實(shí)現方案的工作行為來(lái)獲得對規范的信心的過(guò)程”。對驗證與確認的比較,觀(guān)點(diǎn)眾多。一種觀(guān)點(diǎn)是:“確認用于保證這是一種正確的設計,而驗證則用于保證設計是正確的”。另一種觀(guān)點(diǎn)是:“驗證是在硅片測試之前(Verilog/VHDL仿真等)進(jìn)行的,而確認則是在硅片測試之后(在實(shí)驗室中,在電路板上進(jìn)行硅片測試)進(jìn)行”。
不管是確認還是驗證,為了確保硅片滿(mǎn)足規范,有兩件事是必需做到的:
1)芯片規范得到了正確的解釋(一般是借助文檔資料,有時(shí)也采用建模的方法);
2)這種解釋被正確地捕獲和執行(一般采用VHDL)、綜合到硅片之中、并被封裝為芯片。
本文將第二步視作驗證,而把第一步看作確認。圖1給出了被業(yè)界用來(lái)確保上述兩個(gè)步驟得到滿(mǎn)足的常見(jiàn)設計流程的概況。
視被執行功能的復雜性的不同,可以跳過(guò)其中的某些步驟,也可以增加更多的步驟。例如,如果知道某個(gè)特定設計完全是面向硬件的,且不包括驅動(dòng)器或軟件,便可從抽象級3直接跳至抽象級1(無(wú)需進(jìn)行硬件-軟件折衷)。PLL(鎖相環(huán))設計似乎就是這樣的一個(gè)例子。
應該注意,當逐漸走向較低的抽象級時(shí),必須始終保持等效性,以確保最低的抽象級能夠滿(mǎn)足系統規范的要求。
當今的驗證技術(shù)和發(fā)展趨勢
1. 動(dòng)態(tài)功能驗證
使用最為普遍的功能驗證方法具有動(dòng)態(tài)特性。之所以將其冠名為“動(dòng)態(tài)”,原因在于輸入圖形/激勵信號是在一段時(shí)間內(若干個(gè)時(shí)鐘周期)生成并應用于設計的,而且,對應的結果被收集起來(lái)并與一個(gè)參考/黃金模型進(jìn)行比較,以便與規范相符。
一個(gè)仿真器被用來(lái)計算所有信號的全部數值,并將規定的預期值與計算值加以比較。目前,業(yè)界可以選用的仿真器有兩種。
1. 基于周期的仿真器:該仿真器完全不理會(huì )時(shí)鐘內部發(fā)生的事件,而是在每個(gè)周期中進(jìn)行一次信號評估。由于執行時(shí)間較短,這類(lèi)仿真器的運行速度往往較快。
2. 基于事件的仿真器:這些仿真器捕獲事件(在時(shí)鐘內部或在時(shí)鐘的邊界上)并通過(guò)設計進(jìn)行傳播,直到實(shí)現一個(gè)穩定狀態(tài)為止。
動(dòng)態(tài)仿真的一個(gè)主要的缺點(diǎn)是,在一個(gè)限時(shí)仿真行程當中,只能對芯片的典型(而不是所有可能的)工作特性進(jìn)行驗證。造成這種情況的主要原因在于芯片是針對已知測試空間(而不是未知測試環(huán)境)進(jìn)行測試的,采用的是定向測試法。EDA行業(yè)推出了諸如Open-VERA、E和SVL(SystemC Verification Library)等更加高級的驗證語(yǔ)言。這些語(yǔ)言引入了新的概念,比如約束隨機激勵、隨機激勵信號分配和電抗性測試臺。伴隨著(zhù)這些語(yǔ)言的運用出現了一些用于對其進(jìn)行解釋的工具,就本場(chǎng)合而言,它們有可能是VERA、Specman和OSCI內核(即CCSS)。
除了引入了隨機化功能之外,新型驗證語(yǔ)言和工具還通過(guò)減少公司在構筑各種用于激勵信號發(fā)生的測試場(chǎng)合/方案所花費的時(shí)間量而實(shí)現了生產(chǎn)率的提高。例如,測試方案可以采用最高的抽象級來(lái)編寫(xiě),并能夠通過(guò)采用功能強大的面向對象型結構而“擴展”至任何較低的抽象級。
當采用動(dòng)態(tài)驗證時(shí),設計者一般希望擁有一個(gè)以可量化項來(lái)覆蓋和捕獲的功能空間的估計值:
1. 被驗證的代碼行的數量(行覆蓋率);
2. 被驗證的邏輯表達式有多少?(表達式覆蓋率)
3. 在一個(gè)FSM設計中達到了多少種狀態(tài)(FSM覆蓋率);
4. 在一個(gè)仿真行程中進(jìn)行雙向變換的端口和寄存器的數量(變換覆蓋率);
5. 設計代碼中被覆蓋的邏輯通路的數量(通路覆蓋率);
這可以通過(guò)采用諸如代碼覆蓋和lint等工具來(lái)實(shí)現。
設計者將“斷言”用作一個(gè)占位符,用來(lái)描述與某項設計相關(guān)聯(lián)的假設和工作特性(包括暫時(shí)的特性)。如果設計滿(mǎn)足或未滿(mǎn)足規范或假設,則斷言將會(huì )在一個(gè)動(dòng)態(tài)仿真過(guò)程中被觸發(fā)。斷言也可在形式/靜態(tài)功能驗證環(huán)境中使用。
2. 混合功能驗證
在該方法中通常執行動(dòng)態(tài)仿真,仿真結果被捕獲并用作靜態(tài)驗證的輸入。在靜態(tài)驗證期間,邏輯方程/符號通過(guò)設計進(jìn)行傳播(而不象在動(dòng)態(tài)仿真中那樣傳播的是數值)。這種手法雖然不如形式驗證詳盡周全,但卻可以被證實(shí)具有比純動(dòng)態(tài)仿真更高的效率,因為它開(kāi)始于動(dòng)態(tài)仿真停止之時(shí)。
3.靜態(tài)功能驗證
在靜態(tài)功能驗證中,沒(méi)有向設計施加輸入激勵信號。而是將設計映射至一個(gè)采用BDD(雙擇判決圖)或其他數學(xué)表達式(它們規定了所有時(shí)間周期中的設計功能)來(lái)說(shuō)明其功能的圖形結構上。利用這種圖形結構來(lái)證實(shí)或反駁屬性將能夠驗證這些數學(xué)表達式。這是通過(guò)確定數學(xué)結構中的矛盾式(方法是順著(zhù)或逆著(zhù)信號流來(lái)傳遞數值)來(lái)完成的。
現有工具采用以下兩種方式來(lái)滿(mǎn)足靜態(tài)驗證市場(chǎng)的需求。
1. 采用斷言:這些是在模型/設計自身當中規定并公式化的設計約束(運用諸如SystemVerilog、Open-VERA、Verilog、VHDL等設計/驗證語(yǔ)言)。
2. 采用屬性:這些通過(guò)采用一種屬性語(yǔ)言(比如PSL、Sugar)提供了屬性的規范。
4. 等效性驗證

為了確定邏輯門(mén)級表示與HDL實(shí)現是相同的,通過(guò)采用匹配點(diǎn)并比較這些點(diǎn)之間的邏輯來(lái)執行一種所謂的“等效性檢查”。生成一種數據結構,并將其與相同輸入特性曲線(xiàn)條件下的輸出數值特性曲線(xiàn)進(jìn)行比較。如果它們不同,則表示(在本場(chǎng)合為邏輯門(mén)和RTL)是不等效的。當其中一種表示經(jīng)過(guò)了某種類(lèi)型的變換時(shí),等效性檢查有時(shí)是在兩個(gè)連接表(邏輯門(mén)級)或兩個(gè)RTL實(shí)現之間執行的(圖2)。
造成設計表示出現差異的一些實(shí)際原因如下:
1. 合成算法/啟發(fā)式法:根據對合成工具的約束條件(區域、時(shí)間、功率)的不同,合成工具將對邏輯運算進(jìn)行優(yōu)化,以推導出適當的邏輯門(mén)級表示。為此,合成工具將采用啟發(fā)式法和邏輯最小化算法。
2. 抽象級:有時(shí)可以采用HDL來(lái)實(shí)現設計,它有可能與設計者的意圖存在一定的差異,原因是語(yǔ)言的局限性,抑或是缺乏(或不具備)對合成工具解釋特定語(yǔ)言結構并將其變換為邏輯門(mén)級表示的方式進(jìn)行預測的能力。
正確驗證方法的選擇標準
在準備將新技術(shù)引入自己的工具流程之前,芯片供應商應當考慮以下問(wèn)題并做出適當的折衷。
1. 在某個(gè)特定的產(chǎn)品線(xiàn)中,我們是市場(chǎng)的領(lǐng)先者還是追隨者?
2. CAD基礎設施、工具和方法是集中式的還是分布式的?
3. 新型驗證技術(shù)的評估是針對第一代產(chǎn)品進(jìn)行的嗎?
4. 新型驗證技術(shù)對成本和產(chǎn)品面市時(shí)間的直接影響和間接影響是什么?
5. 新型工具能否處理變動(dòng)的設計能力?
6. 工具的易用性如何?
7. 可為新型工具提供什么水平的文檔和支持?
8. 新型工具和方法與公司內部現有的工具和方法之間是否具有互操作性?
9. 新型工具的ROI(投資回報)是什么(包括服務(wù)、培訓、咨詢(xún)、計算和人力資源)?
10. 新型工具能否支持處于多個(gè)不同地理位置的設計?
11. 對于有關(guān)公司而言,他們所需關(guān)注的最為重要的問(wèn)題或許是:我們雇用的設計師和驗證工程師對新型工具是否有成見(jiàn)(設計師不愿意學(xué)習和采用新技術(shù))?
1.產(chǎn)品角度
主要從事存儲器芯片或存儲器密集型(而不是邏輯密集型)芯片生產(chǎn)的公司――比如SRAM和DRAM公司或許根本不需要進(jìn)行大量的邏輯驗證。這些器件大多是定制的。雖然此類(lèi)產(chǎn)品中有些規模會(huì )很大,但它們的邏輯復雜性并不高,因而不支持在公司內部配備大量邏輯驗證工具的計劃。不過(guò),存儲器密集型設計提出了其他的挑戰,比如布線(xiàn)、工藝調整和功耗。
那些制造純ASIC芯片(其上不運行軟件)的公司可能無(wú)須進(jìn)行硬件-軟件折衷,或者也許不必實(shí)施用于捕獲運行于硬件之上的軟件的測試。例如,只具有硬件的SERDES(并串/串并變換器)芯片所要求的驗證和建模方法與同時(shí)具有硬件和軟件的SoC是不同的。
對于擁有門(mén)類(lèi)寬泛的產(chǎn)品線(xiàn)的大型公司來(lái)說(shuō),驗證方法必須包含不同產(chǎn)品的各種要求。
2.系統角度
過(guò)去,邏輯芯片供應商不負責對芯片是否滿(mǎn)足某一參考系統上的功能和性能要求進(jìn)行驗證。如今的系統廠(chǎng)商在批量訂貨之前都要求芯片制造商進(jìn)行系統參考驗證。這就要求芯片公司采用一種他們所不熟悉的附加抽象級來(lái)對芯片進(jìn)行建模和驗證。這需要架構模型、參考模型、制定復雜的應用級測試和精細的測試臺配置。面對這些類(lèi)型的難題,有關(guān)公司有兩種選擇,一是采用現有的語(yǔ)言、技術(shù)和方法(這樣做將耗費大量的時(shí)間和精力),另一種就是大量采用新技術(shù)(如VERA、Specman等)。此外,芯片銷(xiāo)售商還必須確保所采用的參考模型和驗證套件是在一個(gè)與客戶(hù)兼容的環(huán)境中執行的(比如,測試場(chǎng)合應該能夠使用客戶(hù)的軟件開(kāi)發(fā)套件SDK以及客戶(hù)所用的仿真器)。
3.方法角度
在芯片集成之前,可以按照一個(gè)高置信度將靜態(tài)功能驗證和動(dòng)態(tài)仿真結合起來(lái)用于驗證模塊級功能度。采用動(dòng)態(tài)仿真能夠高效執行系統級驗證,借助的方法是確定我們正在連續不斷地驗證功能空間的主要隅角。
首先執行隨機仿真(以便在驗證的初始階段捕捉到大量的缺陷),并隨后對隨機仿真加以約束(以確定在測試計劃中所規定的測試空間已經(jīng)在器件上被完全覆蓋)的做法或許相對容易一些。應考慮將約束驅動(dòng)型驗證在功能覆蓋量度上進(jìn)行細化。“功能覆蓋率”這一術(shù)語(yǔ)被用來(lái)描述一個(gè)對所覆蓋的功能空間進(jìn)行量化的參數,相反,“代碼覆蓋率”則被用來(lái)對已經(jīng)實(shí)現的設計被某一給定的測試套件所覆蓋的程度進(jìn)行量化。定向仿真隨后可被用來(lái)在驗證周期的末端覆蓋隅角測試空間。
斷言和屬性可在靜態(tài)功能驗證期間的背景中起作用(在模塊級上),并可在動(dòng)態(tài)仿真環(huán)境中被重用(在模塊和系統級上)。如果模塊將被轉變成IP,則它們也是有用的,因為斷言將在IP被重用時(shí)持續不斷地檢查其屬性。
評論