眾所周知,功能驗(yàn)證在芯片的整個(gè)設(shè)計(jì)周期中占用的時(shí)間最多。盡管目前有許多技術(shù)可用于減少驗(yàn)證時(shí)間,但最終應(yīng)當(dāng)如何選擇?答案并不簡(jiǎn)單明了,而且經(jīng)常令人迷惑并要付出高昂的代價(jià)。 一個(gè)項(xiàng)目中需要使用的工具和技術(shù)必須在設(shè)計(jì)周期的初期就確定下來,以便獲得新驗(yàn)證方法費(fèi)用預(yù)算的準(zhǔn)確信息。經(jīng)常有公司因?yàn)殄e(cuò)誤估計(jì)了運(yùn)轉(zhuǎn)這些新型工具和技術(shù)所需的設(shè)計(jì)和技術(shù)的復(fù)雜性而浪費(fèi)大量的資金和資源。 產(chǎn)品的抽象級(jí)越高,越容易設(shè)計(jì);同樣的,抽象級(jí)越高,越容易犯嚴(yán)重的錯(cuò)誤。一個(gè)架構(gòu)上的缺陷可能會(huì)導(dǎo)致整個(gè)芯片的損害,而在門級(jí)網(wǎng)表中的連線錯(cuò)誤可以通過重制解決。 例如,Verilog為設(shè)計(jì)者提供了一種相對(duì)容易的接口,以便他們?cè)谙喈?dāng)抽象的層次上進(jìn)行設(shè)計(jì)。當(dāng)設(shè)計(jì)曾經(jīng)作為制約性的瓶頸時(shí),Verilog 為設(shè)計(jì)生產(chǎn)率帶來了指數(shù)增長,并且大大推動(dòng)了復(fù)雜芯片的發(fā)展。但是如果設(shè)計(jì)者不了解在復(fù)雜的設(shè)計(jì)周期中語言上的細(xì)微差別,就很容易犯錯(cuò)。在驗(yàn)證成為瓶頸的今天,同樣的觀點(diǎn)也適用于許多驗(yàn)證技術(shù)和語言。 本文將對(duì)時(shí)下流行的驗(yàn)證技術(shù)(形式驗(yàn)證、隨機(jī)、定向、有約束的隨機(jī)、斷言、屬性檢驗(yàn))與語言(SystemC、C/C++、SystemVerilog、Open-VERA、E等)進(jìn)行全面評(píng)述,還將分析在傳統(tǒng)的數(shù)字ASIC設(shè)計(jì)流程中應(yīng)當(dāng)在何時(shí)采用何種驗(yàn)證技術(shù)和語言。 1 驗(yàn)證瓶頸 盡管事實(shí)表明如今設(shè)計(jì)生產(chǎn)率的增長速度仍然低于芯片復(fù)雜度的增長速度,然而現(xiàn)在需要面對(duì)的瓶頸已不再是設(shè)計(jì)時(shí)間,而是驗(yàn)證時(shí)間。最近的統(tǒng)計(jì)數(shù)據(jù)表明,對(duì)一個(gè)復(fù)雜邏輯芯片而言,整個(gè)產(chǎn)品周期中 60_70% 的時(shí)間都用于驗(yàn)證工作。如何使用新的工具和技術(shù)對(duì)設(shè)計(jì)中的復(fù)雜功能進(jìn)行驗(yàn)證已經(jīng)成為縮短總體的產(chǎn)品時(shí)間所需要面對(duì)的挑戰(zhàn)。 由于以下原因,可以說驗(yàn)證瓶頸在某種程度上是設(shè)計(jì)抽象級(jí)逐步提高造成的結(jié)果: 1) 在較高的抽象水平上進(jìn)行設(shè)計(jì),易于構(gòu)建高度復(fù)雜的產(chǎn)品功能。設(shè)計(jì)復(fù)雜度的提高造成驗(yàn)證工作的成倍增加; 2) 在設(shè)計(jì)、轉(zhuǎn)換以及映射到最終產(chǎn)品的過程中,應(yīng)用更高的抽象級(jí)進(jìn)行設(shè)計(jì)會(huì)帶來信息損失和解釋錯(cuò)誤的問題。例如,采用HDL級(jí)設(shè)計(jì)并將其轉(zhuǎn)換到門級(jí)的綜合過程,需要進(jìn)行驗(yàn)證以確保轉(zhuǎn)換的正確性以及使設(shè)計(jì)意圖完全得到體現(xiàn)。提高抽象級(jí)還帶來了代碼解釋問題,在仿真時(shí)要通過這些代碼對(duì)設(shè)計(jì)進(jìn)行描述,以確保所寫的代碼真實(shí)反映了功能規(guī)范。 其它影響驗(yàn)證問題的因素還包括: 1) 由于設(shè)計(jì)中硬件與軟件、模擬與數(shù)字等共存而造成的功能復(fù)雜度增加; 2) 對(duì)系統(tǒng)可靠性的要求增高,使得對(duì)驗(yàn)證工作的要求也增加,以確保在系統(tǒng)環(huán)境下,芯片功能可以順利執(zhí)行。 統(tǒng)計(jì)數(shù)據(jù)表明,驗(yàn)證問題現(xiàn)實(shí)存在,而且讓公司付出了高昂的成本: 1)由于設(shè)計(jì)錯(cuò)誤造成的芯片缺陷:在需要進(jìn)行重制的芯片中,有82%是由于邏輯與功能缺陷設(shè)計(jì)錯(cuò)誤。這意味著驗(yàn)證過程沒有覆蓋邊角情況,缺陷一直隱藏在設(shè)計(jì)過程中直到流片。 2)由于規(guī)范錯(cuò)誤造成的芯片缺陷:在需要進(jìn)行重制的芯片中,有47%是由于邏輯與功能規(guī)范不正確或不完整,有32%是由于規(guī)范發(fā)生了改變。 3)重用IP和外來IP的問題:所有失敗的芯片中,有14%是由于在重用或外來的IP中存在錯(cuò)誤。 4)重制的后果:重制費(fèi)會(huì)高達(dá)10萬美元,還會(huì)延誤產(chǎn)品的推出,由于使用這些有缺陷的芯片而導(dǎo)致的系統(tǒng)失敗也會(huì)增加成本。 為了提高驗(yàn)證生產(chǎn)率,EDA行業(yè)提出了一個(gè)與解決設(shè)計(jì)瓶頸類似的解決方案——抽象化的理念。諸如 Verilog 和 VHDL 等高層次的語言被用于驗(yàn)證芯片,這些語言包括各種指令如任務(wù)指令和線程指令(fork/join 語句),以及控制結(jié)構(gòu)(while語句)。這提供了更強(qiáng)的數(shù)據(jù)控制力,以便對(duì)所有邊角設(shè)計(jì)進(jìn)行充分驗(yàn)證。然而,這些指令不能被綜合,因此不會(huì)被用作實(shí)際設(shè)計(jì)代碼的一部分。 隨著復(fù)雜度與日俱增,能夠驗(yàn)證具有不同抽象級(jí)的復(fù)雜設(shè)計(jì)的新語言被創(chuàng)建出來,支持這些新的驗(yàn)證語言的技術(shù)和工具也隨之誕生。 所有這一切意味著芯片廠商必須對(duì)新的工具作出評(píng)估,必須針對(duì)這些新的工具和技術(shù)對(duì)工程師進(jìn)行培訓(xùn),在公司的研發(fā)費(fèi)用成本結(jié)構(gòu)中必須包括新的工具和資源,公司在總體上必須在短時(shí)間內(nèi)克服學(xué)習(xí)曲線問題,另外,還需要對(duì)這些工具進(jìn)行風(fēng)險(xiǎn)評(píng)估,以及考慮新工具與已有技術(shù)的集成和協(xié)同工作的能力。 2 驗(yàn)證與確認(rèn)(Validation) 除了驗(yàn)證問題之外,芯片公司還要面對(duì)確認(rèn)時(shí)間問題。Kropf將“確認(rèn)”定義為“通過檢查實(shí)現(xiàn)行為以獲得對(duì)規(guī)范的信心的過程”。在驗(yàn)證和確認(rèn)之間,有一種觀點(diǎn)認(rèn)為,“確認(rèn)能夠確保這是正確的設(shè)計(jì),而驗(yàn)證則是確保這個(gè)設(shè)計(jì)是正確的”;另外一種觀點(diǎn)認(rèn)為,“驗(yàn)證指硅片成為成品之前的測(cè)試(Verilog/VHDL 仿真等),確認(rèn)指硅片成為成品之后的測(cè)試(在實(shí)驗(yàn)室里測(cè)試電路板上的芯片)”。 無論是確認(rèn)還是驗(yàn)證,若要保證硅片滿足規(guī)范要求,要完成以下兩個(gè)步驟:1)通過文件或建模,芯片規(guī)范得到了正確的解釋;2)以上解釋得到了正確的理解與實(shí)現(xiàn)(一般是通過 HDL),綜合入硅片,并封裝成為芯片。 本文認(rèn)為第二步是驗(yàn)證,第一步是確認(rèn)。目前業(yè)界流行的設(shè)計(jì)流程如圖1所示,此流程可保證以上兩個(gè)步驟的要求得以滿足。根據(jù)待實(shí)現(xiàn)功能的復(fù)雜程度不同,可以跳過一些步驟或者增加一些步驟。例如,如果某一項(xiàng)設(shè)計(jì)是純粹面向硬件的,不涉及驅(qū)動(dòng)或軟件,那么可以從抽象級(jí)3直接跳到抽象級(jí)1,鎖相環(huán)設(shè)計(jì)即為一例。 當(dāng)設(shè)計(jì)按照抽象級(jí)逐步推進(jìn)時(shí),要注意必須一直保持等效性,以確保最低層的抽象級(jí)能滿足系統(tǒng)規(guī)范的要求。例如: 1)當(dāng) C 模型被置于一個(gè)系統(tǒng)環(huán)境并能夠滿足規(guī)范中所描述的所有系統(tǒng)要求時(shí),芯片規(guī)范(一般是一個(gè)文本文件)與其 C 模型之間就達(dá)到了等效。這在實(shí)質(zhì)上是功能等效。 2)通過比較 C 模型與HDL 實(shí)現(xiàn)的輸出,可以在規(guī)范的C 模型與其 HDL 實(shí)現(xiàn)之間建立等效關(guān)系。在沒有 C 模型的情況下,可使用“期望數(shù)據(jù)模型”。這在實(shí)質(zhì)上也是功能等效。 3)HDL實(shí)現(xiàn)與門級(jí)(綜合后的)之間通過應(yīng)用“邏輯等效性檢驗(yàn)”可以建立等效關(guān)系。這時(shí),由于設(shè)計(jì)采取的形式是純粹的邏輯門,而且功能能夠被表示為邏輯表達(dá)式,因此,這在實(shí)質(zhì)上是邏輯等效。 3 現(xiàn)有驗(yàn)證技術(shù)及發(fā)展趨勢(shì) 目前可使用的驗(yàn)證方法及技術(shù)如圖2所示。 3.1 動(dòng)態(tài)功能驗(yàn)證 使用最為廣泛的功能驗(yàn)證方法是動(dòng)態(tài)的,之所以被稱為動(dòng)態(tài)是因?yàn)檩斎雸D形/激勵(lì)信號(hào)是在一段時(shí)間(幾個(gè)時(shí)鐘周期)內(nèi)生成并應(yīng)用于設(shè)計(jì)的,相應(yīng)結(jié)果會(huì)被用于與參考/黃金模型進(jìn)行比較,以檢驗(yàn)其與規(guī)范之間的一致性。 仿真器通常用于計(jì)算所有的信號(hào)值,并將其與指定的期望值進(jìn)行比較。目前,有兩類可供選擇的仿真器: 1)基于周期的仿真器:這類仿真器不管在時(shí)鐘周期內(nèi)發(fā)生了什么事情,它只是在每個(gè)周期內(nèi)對(duì)單脈沖信號(hào)進(jìn)行一次求值,由于執(zhí)行時(shí)間很短這類仿真器的速度通常很快。 2)基于事件的仿真器:這類仿真器在時(shí)鐘周期內(nèi)或者在時(shí)鐘邊界捕獲事件,并在設(shè)計(jì)中傳播這些事件,直到系統(tǒng)達(dá)到穩(wěn)態(tài)。 3.2 隨機(jī)/定向功能驗(yàn)證 在一個(gè)有時(shí)間限制的仿真過程中,動(dòng)態(tài)仿真器只能驗(yàn)證芯片的典型行為,而不能驗(yàn)證所有可能的行為,這是動(dòng)態(tài)仿真的主要缺陷。出現(xiàn)這個(gè)問題的主要原因是對(duì)芯片的定向測(cè)試是針對(duì)已知的測(cè)試空間,而不是未知的測(cè)試空間進(jìn)行的。即使是僅對(duì)已知測(cè)試空間的測(cè)試也要花費(fèi)很長時(shí)間。例如,假設(shè)推出每個(gè)運(yùn)算數(shù)需要一個(gè)時(shí)鐘,為了驗(yàn)證一個(gè)能對(duì)兩個(gè) 32 位操作數(shù)進(jìn)行加和運(yùn)算的簡(jiǎn)單加法器的測(cè)試空間就需要 232x232個(gè)時(shí)鐘周期。隨著邏輯運(yùn)算越來越復(fù)雜,驗(yàn)證空間也會(huì)相應(yīng)增加。因此出現(xiàn)了隨機(jī)動(dòng)態(tài)仿真,通過為設(shè)計(jì)提供隨機(jī)激勵(lì)信號(hào)來增加驗(yàn)證的測(cè)試空間,這樣能夠使驗(yàn)證覆蓋的功能空間最大化。但當(dāng)設(shè)計(jì)規(guī)模很大且非常復(fù)雜時(shí),隨機(jī)測(cè)試空間會(huì)變得無限。為了解決這個(gè)問題,更高級(jí)的驗(yàn)證語言,如 Open-VERA、E 與SVL (SystemC 驗(yàn)證庫)被推出。這些語言引入了諸如約束隨機(jī)激勵(lì)信號(hào)、隨機(jī)激勵(lì)信號(hào)分配與電抗性測(cè)試平臺(tái)等概念。伴隨著這些語言的運(yùn)用,出現(xiàn)了一些用于對(duì)其進(jìn)行解釋的工具,如VERA、Specman與 OSCI 內(nèi)核( Concentric System Studio ,CCSS)。 除了引入隨機(jī)化功能以外,新的驗(yàn)證語言和工具還通過減少公司在構(gòu)建不同測(cè)試場(chǎng)合/方案所花費(fèi)的時(shí)間,來提高生產(chǎn)率。例如,測(cè)試方案可以采用最高的抽象級(jí)來編寫,并能夠通過采用功能強(qiáng)大的面向?qū)ο笮徒Y(jié)構(gòu)而擴(kuò)展至任何較低的抽象級(jí)。 當(dāng)應(yīng)用動(dòng)態(tài)驗(yàn)證時(shí),通常需要估計(jì)所覆蓋的、可以量化的功能空間,包括:經(jīng)過驗(yàn)證的代碼行數(shù)(行覆蓋率),經(jīng)過測(cè)試的邏輯表達(dá)式個(gè)數(shù)(表達(dá)式覆蓋率),一個(gè) FSM 設(shè)計(jì)中能夠達(dá)到的狀態(tài)數(shù)(FSM 覆蓋率),在一個(gè)仿真運(yùn)行中可以雙向變換的端口及寄存器數(shù)目(變換覆蓋率),以及設(shè)計(jì)代碼中覆蓋的邏輯通道數(shù)目(通道覆蓋率)。以上可以使用 Code Coverage 及 Lint 工具來實(shí)現(xiàn)。 3.3 斷言 設(shè)計(jì)者將斷言用作一個(gè)占位符,用來描述與設(shè)計(jì)相關(guān)聯(lián)的假設(shè)及工作特性(包括暫時(shí)的特性)。如果設(shè)計(jì)滿足或未滿足規(guī)范或假設(shè),則斷言將會(huì)在一個(gè)動(dòng)態(tài)仿真過程中被觸發(fā)。斷言還可在形式/靜態(tài)功能驗(yàn)證環(huán)境中使用。 3.4 混合功能驗(yàn)證 在該方法中通常執(zhí)行動(dòng)態(tài)仿真,仿真結(jié)果被用作靜態(tài)驗(yàn)證的輸入。在靜態(tài)驗(yàn)證過程中,在設(shè)計(jì)中傳播的是邏輯方程式/符號(hào),而不象在動(dòng)態(tài)仿真中那樣傳遞數(shù)值。這種方法雖然不像形式驗(yàn)證詳盡周全,但卻具有比純動(dòng)態(tài)仿真更高的效率。 3.5 靜態(tài)功能驗(yàn)證 在靜態(tài)功能驗(yàn)證中,不向設(shè)計(jì)施加輸入激勵(lì),而是將設(shè)計(jì)映射在一個(gè)圖形結(jié)構(gòu)中,用雙擇判決圖(BDD)或其他數(shù)學(xué)表示方法來描述所有時(shí)間周期內(nèi)的設(shè)計(jì)功能。利用這種圖形結(jié)構(gòu)來證實(shí)或反駁屬性可以驗(yàn)證這些數(shù)學(xué)表達(dá)式,這是通過順著或逆著信號(hào)流來傳遞數(shù)值,以確定數(shù)學(xué)結(jié)構(gòu)中的矛盾式來完成的。 現(xiàn)有的工具通過以下兩種方式來滿足靜態(tài)驗(yàn)證市場(chǎng)的需求: 1) 使用斷言:這是在模型/設(shè)計(jì)當(dāng)中規(guī)范并公式化的設(shè)計(jì)約束(使用SystemVerilog、Open-VERA、Verilog和VHDL等設(shè)計(jì)/驗(yàn)證語言)。 2) 使用屬性:這允許使用屬性語言(如PSL和Sugar)對(duì)屬性進(jìn)行規(guī)范。 3.6 等效性驗(yàn)證 為了確認(rèn)門級(jí)表示法與HDL實(shí)現(xiàn)是相同的,需要實(shí)施等效性檢驗(yàn),使用匹配點(diǎn)并比較這些匹配點(diǎn)之間的邏輯。檢驗(yàn)中會(huì)生成一個(gè)數(shù)據(jù)結(jié)構(gòu)并比較在相同的輸入模式下得出的輸出數(shù)值模式,如果這些輸出數(shù)值模式不相同,那么表示法(這里指門級(jí)和RTL級(jí))就不是等效的。當(dāng)表示法中的一個(gè)經(jīng)過了某種類型的變換時(shí),等效性檢驗(yàn)有時(shí)會(huì)在兩個(gè)門級(jí)網(wǎng)表或兩個(gè)RTL級(jí)實(shí)現(xiàn)之間進(jìn)行。 造成設(shè)計(jì)表達(dá)式差異的一些實(shí)際原因包括: 1) 綜合算法/探索式方法:根據(jù)對(duì)綜合工具的約束條件(區(qū)域、時(shí)間、功率)不同,綜合工具會(huì)對(duì)邏輯運(yùn)算進(jìn)行優(yōu)化,以得到適當(dāng)?shù)拈T級(jí)表式。為此,綜合工具將采用探索式方法和邏輯最小化算法。 2) 抽象級(jí):在采用HDL來實(shí)現(xiàn)設(shè)計(jì)時(shí),由于語言的局限性或是缺乏(不具備)對(duì)綜合工具如何解釋特定語言結(jié)構(gòu)并將其變換為門級(jí)表式的預(yù)測(cè)能力,因此,HDL實(shí)現(xiàn)有可能與設(shè)計(jì)者意圖存在一定的差異。 4 影響驗(yàn)證技術(shù)的趨勢(shì)和力量 4.1 技術(shù)視角 設(shè)計(jì)錯(cuò)誤可能出現(xiàn)在模塊接口處或是在模塊內(nèi)部,它們最終會(huì)集成在一起形成芯片。舉例而言,那些在模塊級(jí)沒有被發(fā)現(xiàn)的缺陷在應(yīng)用動(dòng)態(tài)仿真時(shí)會(huì)在子系統(tǒng)或系統(tǒng)級(jí)上顯露出來。使用靜態(tài)功能驗(yàn)證,模塊開發(fā)的每一步都會(huì)得到詳盡的驗(yàn)證,從而確保子系統(tǒng)/系統(tǒng)質(zhì)量和可靠性從根本上得到提高。有人認(rèn)為,使用靜態(tài)/形式功能驗(yàn)證,能夠更快地找到更多的缺陷。 另一方面,使用靜態(tài)功能驗(yàn)證也存在以下缺陷: 1)現(xiàn)有的工具只能在模塊級(jí)運(yùn)行; 2)通常不能處理大型設(shè)計(jì)(一般只能處理100~150K的門電路); 3)不能處理高度復(fù)雜的設(shè)計(jì); 4)現(xiàn)有的形式驗(yàn)證工具有時(shí)會(huì)出現(xiàn)時(shí)間無限的問題(這主要是因?yàn)樗鼈兺腔谝惶滋剿鞒绦,而不是任一算?。這意味著形式功能驗(yàn)證在一些情況下可能會(huì)比動(dòng)態(tài)仿真花費(fèi)更長的時(shí)間; 5)設(shè)計(jì)必須被寫為可綜合的RTL形式。 除了上述技術(shù)上的挑戰(zhàn)外,基于斷言的形式功能驗(yàn)證的兩個(gè)競(jìng)爭(zhēng)標(biāo)準(zhǔn)(PSL對(duì)SystemVerilog)也帶來了額外的問題。目前傾向于將靜態(tài)功能驗(yàn)證方法用于驗(yàn)證足夠成熟以備綜合的模塊,動(dòng)態(tài)驗(yàn)證(隨機(jī)和定向)用于嚴(yán)格驗(yàn)證集成前的模塊。 目前,動(dòng)態(tài)仿真還將繼續(xù)主宰功能驗(yàn)證領(lǐng)域,直到形式驗(yàn)證工具提供一種更成熟的方法。 4.2 語言視角 可以觀察到這樣一個(gè)趨勢(shì),就是將設(shè)計(jì)和驗(yàn)證語言結(jié)合在一起。這將極大地促進(jìn)生產(chǎn)率,改進(jìn)系統(tǒng)可靠性以及提高設(shè)計(jì)質(zhì)量,因?yàn)槭褂枚喾N工具和語言引發(fā)的不明確和誤解問題將得到消除。 在這一結(jié)合實(shí)現(xiàn)之前,公司要繼續(xù)依賴現(xiàn)有的高級(jí)設(shè)計(jì)語言(Verilog和VHDL),并選擇是使用專有驗(yàn)證語言(Open-VERA、E等),還是過去流行的Verilog和VHDL 。 SystemC與其他高級(jí)設(shè)計(jì)描述語言在設(shè)計(jì)流程中扮演著重要角色,其中涉及硬/軟件折衷以及在硬件上運(yùn)行軟件的設(shè)計(jì)(如SoC)。另外,它們也可用于架構(gòu)建模及確認(rèn),當(dāng)可以為應(yīng)用事務(wù)模型的驗(yàn)證使用架構(gòu)模型組件時(shí),也可以使用 SystemC。 5 選擇正確的驗(yàn)證方法的標(biāo)準(zhǔn) 在當(dāng)前縮短上市時(shí)間和迫切要求低成本的環(huán)境下,工程師正在設(shè)法解決設(shè)計(jì)復(fù)雜性問題。那些在新技術(shù)上投入更多研發(fā)精力的公司,其研發(fā)費(fèi)用的使用更有效率,產(chǎn)品上市時(shí)間更短,公司成長更快,盈利更高。另外,公司必須在其特有需求與核心價(jià)值的基礎(chǔ)上評(píng)估方法和技術(shù)。在將新技術(shù)引進(jìn)其工具流程時(shí),它們應(yīng)當(dāng)考慮以下問題,并做出適當(dāng)?shù)臋?quán)衡。 1)在某個(gè)生產(chǎn)線中,公司是市場(chǎng)領(lǐng)先者還是追隨者? 2)基礎(chǔ)設(shè)施、工具和方法是集中式的還是分布式的? 3)新驗(yàn)證技術(shù)的評(píng)估是針對(duì)第一代產(chǎn)品進(jìn)行的嗎? 4)新驗(yàn)證技術(shù)對(duì)成本和產(chǎn)品上市時(shí)間有何直接和間接影響? 5)新的工具能否處理不同的設(shè)計(jì)能力? 6)工具的易用性如何? 7)可為新的工具提供什么水平的文檔和支持? 8)新的工具和方法與公司內(nèi)部現(xiàn)有的工具和方法之間是否具有互操作性? 9)新工具的投資回報(bào)率(ROI)如何?(包括在服務(wù)、培訓(xùn)、咨詢、計(jì)算和人力資源方面的投資) 10)新的工具是否能夠支持處于多個(gè)不同地理位置的設(shè)計(jì)? 11)公司需要考慮的問題中,最為重要的問題之一可能是:我們雇用的設(shè)計(jì)師和驗(yàn)證工程師是否對(duì)新的工具抱有成見?(即設(shè)計(jì)師不愿意學(xué)習(xí)和接受新的技術(shù)) 公司在做出關(guān)于工具、語言和方法的決策時(shí)可以采用以下介紹的簡(jiǎn)單權(quán)衡方法。 5.1 產(chǎn)品視角 主要從事存儲(chǔ)器芯片或存儲(chǔ)器密集型(相對(duì)于邏輯密集型而言)芯片生產(chǎn)的公司訝SRAM和DRAM公司可能根本不需要進(jìn)行大量的邏輯驗(yàn)證。這些芯片大多是定制的。雖然這些產(chǎn)品中有些規(guī)模會(huì)很大,但它們的邏輯復(fù)雜性并不高,因而不支持在公司內(nèi)部配備大量邏輯驗(yàn)證工具的計(jì)劃。不過,存儲(chǔ)器密集型設(shè)計(jì)在其他方面提出了挑戰(zhàn),例如布線、工藝變化以及功率等。 那些制造純ASIC芯片,在芯片上不運(yùn)行任何軟件的公司可能無須在硬件或是軟件實(shí)現(xiàn)上進(jìn)行權(quán)衡或是實(shí)施測(cè)試以捕獲運(yùn)行于硬件之上的軟件。例如,只具有硬件的SERDES芯片所要求的驗(yàn)證和建模方法與同時(shí)具有硬件和軟件的SoC是不同的。 對(duì)于擁有多種產(chǎn)品線的大公司來說,驗(yàn)證方法必須滿足各種產(chǎn)品的不同要求。 5.2 系統(tǒng)視角 過去,邏輯芯片供應(yīng)商不負(fù)責(zé)對(duì)芯片是否滿足參考系統(tǒng)的功能和性能要求進(jìn)行驗(yàn)證,而如今的系統(tǒng)廠商在批量訂貨之前都要求芯片供應(yīng)商實(shí)施系統(tǒng)參考驗(yàn)證。這就要求芯片公司在一個(gè)它們不熟悉的附加抽象級(jí)上對(duì)芯片進(jìn)行建模和驗(yàn)證,這需要架構(gòu)模型、參考模型、復(fù)雜應(yīng)用級(jí)的測(cè)試以及精細(xì)的測(cè)試平臺(tái)配置。面對(duì)這些不同類型的挑戰(zhàn),公司有兩種選擇,一是采用現(xiàn)有的語言、技術(shù)和方法,這將耗費(fèi)大量的時(shí)間和精力;另一種就是采用新技術(shù)(如VERA、Specman等)。此外,芯片供應(yīng)商還必須確保所使用的參考模型和驗(yàn)證套件是在一個(gè)與客戶的相應(yīng)模型和套件兼容的環(huán)境中完成的,例如,應(yīng)用客戶的軟件開發(fā)套件(SDK)和仿真器也能夠進(jìn)行同樣的測(cè)試。 5.3 方法學(xué)視角 在芯片集成之前,可以將靜態(tài)功能驗(yàn)證與動(dòng)態(tài)仿真結(jié)合起來,在一個(gè)高置信度水平上驗(yàn)證模塊級(jí)的功能。通過確認(rèn)動(dòng)態(tài)仿真正在持續(xù)驗(yàn)證功能空間的主要邊角,可以有效地實(shí)施系統(tǒng)級(jí)驗(yàn)證。 首先執(zhí)行隨機(jī)仿真可以在驗(yàn)證的初始階段發(fā)現(xiàn)大量的缺陷,然后對(duì)隨機(jī)模擬加以約束以確定測(cè)試空間已經(jīng)被完全覆蓋的做法或許相對(duì)容易一些。應(yīng)考慮在功能覆蓋度量上對(duì)約束驅(qū)動(dòng)型驗(yàn)證進(jìn)行細(xì)化。功能覆蓋率這一術(shù)語被用于描述對(duì)被覆蓋的功能空間進(jìn)行量化的參數(shù),相反地,代碼覆蓋率則被用于量化一個(gè)給定的測(cè)試套件對(duì)已實(shí)現(xiàn)的設(shè)計(jì)進(jìn)行覆蓋的程度。定向仿真隨后可被用于在驗(yàn)證周期末期覆蓋邊角測(cè)試空間。 斷言和屬性可在靜態(tài)功能驗(yàn)證期間起作用(在模塊級(jí)上),并可在動(dòng)態(tài)仿真環(huán)境中被重用(在模塊級(jí)和系統(tǒng)級(jí)上)。如果模塊轉(zhuǎn)變?yōu)镮P,那么斷言和屬性也是有用的,因?yàn)閿嘌詫⒃贗P被重用時(shí)持續(xù)不斷地檢查其屬性。 6 結(jié)語 隨著時(shí)間的推移,具有更小特征尺寸(90nm 和 65nm)的器件將投產(chǎn)。目前,公司正在致力于解決諸如布線、串?dāng)_和軟錯(cuò)誤的設(shè)計(jì)問題。一旦這些設(shè)計(jì)瓶頸得到了解決且隨著芯片廠商在越來越小的芯片上封裝越來越多的邏輯,驗(yàn)證問題的出現(xiàn)就是意料中的事了。新型工具和方法的不斷引進(jìn)提高了設(shè)計(jì)生產(chǎn)率。提高設(shè)計(jì)(SystemC和SystemVerilog)和驗(yàn)證(Open-VERA、E 和 SystemC)的抽象化程度以滿足日益增長的復(fù)雜度要求是不可避免的。目前從SystemVerilog 的推出能夠看到設(shè)計(jì)和驗(yàn)證語言的融合趨勢(shì)。 驗(yàn)證持續(xù)扮演著重要角色,它能夠提高產(chǎn)品質(zhì)量,使硅芯片一次成功,從而間接影響總體的產(chǎn)品時(shí)間。SystemC 和建模語言將繼續(xù)為邏輯密集型產(chǎn)品提供架構(gòu)驗(yàn)證。通過使用屬性、斷言以及推出形式驗(yàn)證工具,生產(chǎn)率得到了進(jìn)一步提高。但目前工程師仍舊依賴并信任動(dòng)態(tài)仿真,因?yàn)樗軌蝌?yàn)證大型和高度復(fù)雜的設(shè)計(jì)。最終的趨勢(shì)可能是:形式驗(yàn)證占據(jù)主要地位,動(dòng)態(tài)仿真仍用于完整性檢查。 |