前 言 文章主要介紹《VMM for SystemVerilog》一書描述的如何利用SystemVerilog語(yǔ)言,采用驗(yàn)證方法學(xué)以及驗(yàn)證庫(kù)開發(fā)出先進(jìn)驗(yàn)證環(huán)境。文章分為四部分,第一部分概述了用SystemVerilog語(yǔ)言驗(yàn)證復(fù)雜SoC的基本方法。第二部分主要介紹使用先進(jìn)驗(yàn)證技術(shù)進(jìn)行RTL驗(yàn)證并定義一個(gè)能在項(xiàng)目之間進(jìn)行驗(yàn)證單元重用的分層驗(yàn)證平臺(tái)結(jié)構(gòu)。第三部分將涉及到系統(tǒng)級(jí)驗(yàn)證,包括SystemVerilog 與SystemC交互等方面。當(dāng)與一個(gè)合適方法相結(jié)合,SystemVerilog提供了建立一個(gè)完整RTL以及系統(tǒng)級(jí)(ESL)驗(yàn)證環(huán)境需要的所有結(jié)構(gòu)及特性。同時(shí)完全支持與System C或與一個(gè)以C為基礎(chǔ)的軟件測(cè)試環(huán)境交互。第四部分討論驗(yàn)證所采用的驗(yàn)證策略,VMM方法學(xué),以及利用《VMM for SystemVerilog》中定義的標(biāo)準(zhǔn)庫(kù)來支持方法學(xué)。這些庫(kù)涉及到文章中討論的基本方法,XVC,XVC管理器,軟件驗(yàn)證等方面。 采用《VMM for SystemVerilog》書中提供的方法學(xué)是應(yīng)對(duì)目前復(fù)雜芯片而帶來驗(yàn)證挑戰(zhàn)的有用方法。此書基于業(yè)界多年領(lǐng)先的Synopsys公司以及ARM公司專家,及其客戶提供經(jīng)驗(yàn)編寫而成,因而對(duì)開發(fā)團(tuán)隊(duì)有益。采用此方法學(xué)將提高驗(yàn)證效率,為一次投片成功提供更大可能。此文章全面介紹關(guān)于用SystemVerilog驗(yàn)證復(fù)雜SoC。更多書中信息可在www.vmm-sv.com中找到。事實(shí)上業(yè)界已經(jīng)認(rèn)可VMM驗(yàn)證方法,此書日文版已經(jīng)發(fā)行,與VMM相關(guān)書籍也已誕生,除Synopsys之外的幾個(gè)EDA廠家也提供相關(guān)練習(xí),甚至在California Extension Santa Cruz大學(xué)開展了VMM課程。http://www./提供了更多業(yè)界對(duì)VMM驗(yàn)證方法支持信息。 目 錄 1 SystemVerilog驗(yàn)證方法學(xué)介紹....................................................................................4 1.1 驗(yàn)證面臨挑戰(zhàn)..........................................................................................................4 1.2 SystemVerilog驗(yàn)證技術(shù).........................................................................................4 1.3 產(chǎn)生帶約束隨機(jī)仿真..............................................................................................4 1.4 覆蓋率驅(qū)動(dòng)驗(yàn)證......................................................................................................5 1.5 斷言..........................................................................................................................6 1.6 小結(jié)..........................................................................................................................8 2 SystemVerilog驗(yàn)證方法學(xué):RTL................................................................................8 2.1 分層測(cè)試平臺(tái)結(jié)構(gòu)..................................................................................................8 2.2 自頂向下和自底向上..............................................................................................9 2.3 結(jié)果檢查................................................................................................................10 2.4 覆蓋率驅(qū)動(dòng)驗(yàn)證執(zhí)行............................................................................................10 2.5 使用形式分析........................................................................................................11 2.6 產(chǎn)生可重用驗(yàn)證IP...............................................................................................11 2.7 小結(jié)........................................................................................................................12 3 SystemVerilog驗(yàn)證方法學(xué):ESL...............................................................................12 3.1 系統(tǒng)級(jí)驗(yàn)證介紹....................................................................................................12 3.2 可擴(kuò)展的驗(yàn)證單元................................................................................................13 3.3 XVC管理器(XVC manager)................................................................................13 3.4 系統(tǒng)級(jí)驗(yàn)證環(huán)境....................................................................................................14 3.5 事務(wù)級(jí)模型(Transaction-level models)...........................................................16 3.6 小結(jié)........................................................................................................................17 4 SystemVerilog驗(yàn)證方法學(xué):采用VMM...................................................................17 4.1 采用驗(yàn)證方法學(xué)....................................................................................................17 4.2 VMM提供四類庫(kù).................................................................................................18 4.2.1 VMM標(biāo)準(zhǔn)庫(kù)..................................................................................................18 4.2.2 VMM Checker庫(kù)...........................................................................................19 4.2.3 XVC標(biāo)準(zhǔn)庫(kù)...................................................................................................20 4.2.4 軟件測(cè)試架構(gòu).................................................................................................21 4.3 小結(jié)........................................................................................................................21 結(jié)束語(yǔ):...........................................................................................................................21 Figure 1 自動(dòng)測(cè)試相對(duì)于直接測(cè)試有更高效率.............................................................5 Figure 2 自動(dòng)及人工驗(yàn)證技術(shù)運(yùn)用在驗(yàn)證不同階段.....................................................6 Figure 3 斷言是驗(yàn)證重要組成部分................................................................................7 Figure 4 多層測(cè)試平臺(tái)方便驗(yàn)證重用.............................................................................9 Figure 5 高層次測(cè)試平臺(tái)單元更早驗(yàn)證事務(wù)級(jí)模型...................................................10 Figure 6 具有通用接口協(xié)議驗(yàn)證IP重用到新項(xiàng)目......................................................12 Figure 7 XVC結(jié)構(gòu)分為兩層:發(fā)生器和驅(qū)動(dòng)器..........................................................13 Figure 8 XVC 管理器控制并使測(cè)試平臺(tái)中其他XVC協(xié)調(diào)工作...............................14 Figure 9 系統(tǒng)確認(rèn)環(huán)境必須高效度量系統(tǒng)執(zhí)行...........................................................16 Figure 10 vmm_env類定義一系列virtual methods用于執(zhí)行測(cè)試用例.....................18 Figure 11 VMM檢查庫(kù)擴(kuò)展了OVL斷言內(nèi)容.............................................................20 Figure 12 用XVC標(biāo)準(zhǔn)庫(kù)和VMM標(biāo)準(zhǔn)庫(kù)中類建立XVC...........................................20 1 SystemVerilog驗(yàn)證方法學(xué)介紹 芯片驗(yàn)證中雖然傳統(tǒng)驗(yàn)證方法盡力保持技術(shù)更新步伐以適應(yīng)設(shè)計(jì)尺寸以及復(fù)雜度的增加,但驗(yàn)證依然是當(dāng)前SoC以及可重用IP模塊設(shè)計(jì)中面臨的最大挑戰(zhàn)。解決這個(gè)問題的方法是采用有豐富語(yǔ)義支持的標(biāo)準(zhǔn)語(yǔ)言,以及可重用,覆蓋率為驅(qū)動(dòng)的驗(yàn)證方法學(xué)。 這是文章中的第一部分:介紹由SystemVerilog硬件設(shè)計(jì)驗(yàn)證標(biāo)準(zhǔn)語(yǔ)言支持的驗(yàn)證方法學(xué)。此方法學(xué)在《VMM for SystemVerilog》 一書中有全面介紹。 《VMM for SystemVerilog》致力于如何建立一個(gè)可升級(jí),可預(yù)期,可重用的驗(yàn)證環(huán)境,使得用戶能充分利用斷言性,重用性,驗(yàn)證平臺(tái)自動(dòng)生成,覆蓋率,形式分析以及其他先進(jìn)驗(yàn)證技術(shù)特點(diǎn),從而幫助解決RTL以及系統(tǒng)級(jí)中驗(yàn)證技術(shù)問題。如此一個(gè)環(huán)境能在芯片邁出成功第一步時(shí)增加用戶驗(yàn)證信心?!禫MM for SystemVerilog》目的是針對(duì)所有SoC,IP項(xiàng)目建立一個(gè)高效,可控驗(yàn)證過程?!禫MM for SystemVerilog》來源于業(yè)界領(lǐng)先的ARM公司,Synopsys公司(新思科技)及其客戶經(jīng)驗(yàn)。 1.1 驗(yàn)證面臨挑戰(zhàn) 隨著SoC,IP驗(yàn)證復(fù)雜度持續(xù)增加,有相應(yīng)的新驗(yàn)證技術(shù)產(chǎn)生,但設(shè)計(jì)能力與驗(yàn)證所能提供信心之間鴻溝仍然巨大。多次調(diào)查顯示有一半到三分之二的SoC項(xiàng)目在第一次流片失敗,而功能缺陷的存在是其中主要原因。 這些統(tǒng)計(jì)顯示了要驗(yàn)證當(dāng)今設(shè)計(jì)所具有的固有難度。復(fù)雜模塊,尤其在集成到一起后,很難在驗(yàn)證中將芯片實(shí)際運(yùn)用可能遇到的所有條件模擬執(zhí)行。預(yù)期到所有可能邊界條件(corner cases),以及發(fā)現(xiàn)設(shè)計(jì)中深層次設(shè)計(jì)缺陷是驗(yàn)證面臨的關(guān)鍵挑戰(zhàn)之一。非常緊迫的是在規(guī)定項(xiàng)目資源以及time-to-market需求情況下,項(xiàng)目過程中花費(fèi)最小代價(jià)盡可能早發(fā)現(xiàn)設(shè)計(jì)缺陷。 1.2 SystemVerilog驗(yàn)證技術(shù) 對(duì)用戶來說有多種方法編寫驗(yàn)證平臺(tái),搭建驗(yàn)證環(huán)境。通常方法包括全手工編寫代碼進(jìn)行獨(dú)立直接驗(yàn)證,或生成帶約束隨機(jī)仿真激勵(lì),能自動(dòng)產(chǎn)生新測(cè)試用例先進(jìn)的驗(yàn)證平臺(tái)。最有效技術(shù)包括利用功能覆蓋率統(tǒng)計(jì)更進(jìn)一步加強(qiáng)自動(dòng)驗(yàn)證效率。一些驗(yàn)證技術(shù)還包括應(yīng)用斷言檢查設(shè)計(jì)意圖,診斷設(shè)計(jì)缺陷。 《VMM for SystemVerilog》 覆蓋了多種驗(yàn)證技術(shù),并詳細(xì)介紹如何將他們有機(jī)結(jié)合在一起。多種先進(jìn)驗(yàn)證技術(shù)的有效融合能徹底改進(jìn)驗(yàn)證,增加驗(yàn)證產(chǎn)量,加速開發(fā)進(jìn)程,盡早結(jié)束項(xiàng)目。相對(duì)于傳統(tǒng)方法消耗更少資源?!禫MM for SystemVerilog》既能提升現(xiàn)有驗(yàn)證方法,也能充分利用驗(yàn)證過程自動(dòng)化,功能覆蓋,斷言這些特點(diǎn)建立一個(gè)全面通用驗(yàn)證環(huán)境。 1.3 產(chǎn)生帶約束隨機(jī)仿真 傳統(tǒng)驗(yàn)證依賴于直接測(cè)試(directed tests),此時(shí)測(cè)試平臺(tái)包含產(chǎn)生特定情節(jié)的代碼,對(duì)設(shè)計(jì)提供激勵(lì),仿真結(jié)束時(shí)檢查(手工或自測(cè)方式)結(jié)果。直接測(cè)試平臺(tái)也可以采用有限的隨機(jī)方式。通常是產(chǎn)生隨機(jī)數(shù),而不是在每個(gè)數(shù)據(jù)單元簡(jiǎn)單寫入預(yù)先設(shè)定值。直接測(cè)試方法適合于小設(shè)計(jì),但一個(gè)典型SoC設(shè)計(jì)需要上千個(gè)測(cè)試用例。樂觀估計(jì)用三天時(shí)間產(chǎn) 生并調(diào)試一個(gè)測(cè)試,一個(gè)有十驗(yàn)證工程師的團(tuán)隊(duì)(也是一個(gè)樂觀估計(jì))將花費(fèi)超過一年完成所有測(cè)試。因此提升驗(yàn)證產(chǎn)量的唯一方法是減少產(chǎn)生測(cè)試所消耗時(shí)間。 SysemVerilog具有豐富語(yǔ)言能力,能描述復(fù)雜驗(yàn)證環(huán)境,包括帶約束隨機(jī)激勵(lì)產(chǎn)生,面向?qū)ο缶幊?,功能覆蓋統(tǒng)計(jì)。這些特點(diǎn)使用戶開發(fā)出能自動(dòng)產(chǎn)生大量驗(yàn)證情節(jié)的測(cè)試平臺(tái)。 《VMM for SystemVerilog》展示了如何用SysemVerilog語(yǔ)言功能構(gòu)建一個(gè)自動(dòng)化驗(yàn)證平臺(tái)。建立一個(gè)驗(yàn)證環(huán)境時(shí),采用正確策略,充分利用自動(dòng)化特點(diǎn),產(chǎn)生一個(gè)新測(cè)試所消耗時(shí)間將顯著減少。應(yīng)用帶約束隨機(jī)激勵(lì)產(chǎn)生方法,在可控制規(guī)則,或用戶自定義約束下以自動(dòng)方式產(chǎn)生測(cè)試情節(jié)。驗(yàn)證中很重要一點(diǎn)在于測(cè)試平臺(tái)質(zhì)量,這樣附加的測(cè)試可在對(duì)一系列基本測(cè)試用例基礎(chǔ)上進(jìn)行簡(jiǎn)單調(diào)整測(cè)試參數(shù)或加入定義好的約束而產(chǎn)生。通過這種方法獲得好處在圖1中說明。 Figure 1 自動(dòng)測(cè)試相對(duì)于直接測(cè)試有更高效率 用直接測(cè)試方法,產(chǎn)生一個(gè)新測(cè)試所需要時(shí)間相對(duì)固定,因此功能驗(yàn)證質(zhì)量提高與時(shí) 間基本成線型關(guān)系。而一個(gè)帶約束隨機(jī)驗(yàn)證環(huán)境,在第一次能正常測(cè)試之前有一個(gè)前期投入消耗。此投入用于建立驗(yàn)證環(huán)境中參數(shù)化配置能力,以及約束測(cè)試中相關(guān)部分,使得之后測(cè)試更容易基于約束驅(qū)動(dòng)。 測(cè)試情節(jié)類型中建立隨機(jī)化,不僅僅是產(chǎn)生新數(shù)據(jù)值,更增加了測(cè)試擊中邊界條件(corner case)可能性,從而發(fā)現(xiàn)更多設(shè)計(jì)缺陷。下一部分還將討論,這樣的測(cè)試用例也能擊中更多覆蓋點(diǎn),加速驗(yàn)證收斂。 SystemVerilog提供了帶約束隨機(jī)激勵(lì)測(cè)試所需要的所有驗(yàn)證語(yǔ)言結(jié)構(gòu)?!禫MM for SystemVerilog》提供了如何建立一個(gè)帶約束隨機(jī)環(huán)境,如何運(yùn)用面向?qū)ο缶幊碳夹g(shù)編寫可重用驗(yàn)證單元,如何在整個(gè)項(xiàng)目驗(yàn)證,或跨項(xiàng)目之間重用驗(yàn)證單元的整套方法。 1.4 覆蓋率驅(qū)動(dòng)驗(yàn)證 貫穿驗(yàn)證過程中的覆蓋率測(cè)量數(shù)據(jù)有兩方面重要作用。一方面能明確指出設(shè)計(jì)中還沒有被充分驗(yàn)證到的部分,確定驗(yàn)證過程中空洞。通過回答下一步如何去做這樣的關(guān)鍵問題,有助于指引驗(yàn)證需要努力的方向。比如,需要補(bǔ)充編寫哪些直接測(cè)試用例,如何改變參數(shù)用于帶約束的隨機(jī)測(cè)試。 另一方面,覆蓋率測(cè)量是驗(yàn)證已經(jīng)足夠充分,可進(jìn)行流片的指示器。覆蓋率不僅僅簡(jiǎn)單提供是或否這樣結(jié)果。覆蓋率增量提升,用于評(píng)估驗(yàn)證進(jìn)度,增加開發(fā)團(tuán)隊(duì)進(jìn)行流片時(shí) 驗(yàn)證環(huán)境中可增加斷言來加強(qiáng)驗(yàn)證環(huán)境能力。斷言描述了設(shè)計(jì)意圖。理想情況下,當(dāng)設(shè)計(jì)者編寫RTL時(shí),用斷言來證明設(shè)計(jì)行為如何達(dá)到需求,研發(fā)人員用斷言描述設(shè)計(jì)行為及相鄰連接模塊接口需求。斷言能用于對(duì)設(shè)計(jì)單元低層次描述,規(guī)范其應(yīng)該具有的行為,也能用于貫穿整個(gè)設(shè)計(jì)中端到端所規(guī)范的信息。 斷言可通過多種方法指定,包括用普通RTL表達(dá)式,在硬件驗(yàn)證語(yǔ)言中專門的陳述。SystemVerilog中內(nèi)置有斷言結(jié)構(gòu),可以在驗(yàn)證環(huán)境或RTL設(shè)計(jì)本身中聲明。 SystemVerilog斷言通過三個(gè)重要方面加強(qiáng)驗(yàn)證: · 提供最初設(shè)計(jì)者功能意圖文檔。如果設(shè)計(jì)被另一個(gè)設(shè)計(jì)者重用,這將非常有 用,可置于一個(gè)設(shè)計(jì)庫(kù)中供以后使用,或作為商業(yè)IP產(chǎn)品。 · 直接測(cè)試或隨機(jī)測(cè)試中,仿真器支持SystemVerilog斷言結(jié)構(gòu),仿真中運(yùn)行斷 言。仿真中斷言增加了內(nèi)部行為可觀測(cè)性,提高調(diào)試效率。 · 形式分析工具能讀SystemVerilog斷言,通過數(shù)學(xué)方法證明每個(gè)斷言從不告 警,或者發(fā)現(xiàn)一個(gè)反例說明斷言如何會(huì)失敗。這將使仿真中斷言很容易轉(zhuǎn)換 到更廣泛驗(yàn)證,通過形式分析增加tape out的信心。 通過圖3說明,斷言對(duì)驗(yàn)證過程中很多部分都有影響。斷言除了在仿真中運(yùn)行或用于形式驗(yàn)證,一些形式斷言能夠被映射到硬件中,在仿真加速器,emulators,基于FPGA原型,或者最終SoC中運(yùn)行。斷言也能提供覆蓋率測(cè)量,并能與其他形式覆蓋率相結(jié)合。 Figure 3 斷言是驗(yàn)證重要組成部分 SystemVerilog提供單一斷言規(guī)范機(jī)制,與多種工具工作,使斷言成為驗(yàn)證方法學(xué)中重要一部分?!禫MM for SystemVerilog》提供了用于仿真(simulation,),模擬 (emulation),形式分析中斷言的編寫指導(dǎo)方法,同時(shí)指導(dǎo)如何在多種驗(yàn)證工具中最大化利用斷言優(yōu)點(diǎn)。 1.6 小結(jié) SystemVerilog語(yǔ)言提供了建立一個(gè)成熟驗(yàn)證環(huán)境所需要的所有結(jié)構(gòu)及特點(diǎn)。這樣的驗(yàn)證環(huán)境應(yīng)該包括帶約束的隨機(jī)激勵(lì)產(chǎn)生,覆蓋率驅(qū)動(dòng)驗(yàn)證,以及斷言?!禫MM for SystemVerilog》描述了如何用SystemVerilog語(yǔ)言開發(fā)先進(jìn)驗(yàn)證環(huán)境。同時(shí)對(duì)有經(jīng)驗(yàn)驗(yàn)證工程師或那些初次接觸驗(yàn)證,而又不僅僅只準(zhǔn)備進(jìn)行直接測(cè)試的驗(yàn)證工程師提供了全面編碼及方法學(xué)指導(dǎo)。 文章第二部分主要介紹使用先進(jìn)驗(yàn)證技術(shù)進(jìn)行RTL驗(yàn)證并定義一個(gè)能在項(xiàng)目之間進(jìn)行驗(yàn)證單元重用的分層驗(yàn)證平臺(tái)結(jié)構(gòu)。 2 SystemVerilog驗(yàn)證方法學(xué):RTL 當(dāng)前SoC設(shè)計(jì)及其相關(guān)可重用IP模塊使用中面臨的挑戰(zhàn)就是驗(yàn)證。當(dāng)設(shè)計(jì)在規(guī)模和復(fù)雜度方面持續(xù)增加時(shí),新技術(shù)的出現(xiàn)必須要采用有效驗(yàn)證方法學(xué)。SoC要求有一個(gè)以可重用為導(dǎo)向,覆蓋率驅(qū)動(dòng),并有豐富語(yǔ)義標(biāo)準(zhǔn)語(yǔ)言支持的驗(yàn)證方法學(xué)。 這是概括介紹由SystemVerilog硬件設(shè)計(jì)及驗(yàn)證標(biāo)準(zhǔn)語(yǔ)言支持的驗(yàn)證方法學(xué)文章中第二部分。此方法學(xué)在由ARM 和Synopsys編寫的 Verification Methodology Manual (VMM) for SystemVerilog書中做了全面介紹。此文章概述了《VMM for SystemVerilog》書中推薦的用于建立一個(gè)可升級(jí),可預(yù)期,以及可重用環(huán)境所需要的關(guān)鍵點(diǎn)。要求用戶充分利用斷言,重用性,自動(dòng)測(cè)試平臺(tái)生成,覆蓋,形式分析,及其他先進(jìn)驗(yàn)證技術(shù)。 《VMM for SystemVerilog》意圖包括兩部分。第一,教育用戶高效集成一個(gè)可重復(fù)使用,多產(chǎn),靈活的驗(yàn)證方法學(xué)。使得用戶能充分利用相同語(yǔ)言性能,工具性能,以及驗(yàn)證專家使用推薦的方法學(xué)。第二,使得驗(yàn)證工具提供商能提供相關(guān)文檔,如SystemVerilog代碼事例及模版,使用戶通過最小代碼開發(fā),快捷利用好此方法學(xué)。 2.1 分層測(cè)試平臺(tái)結(jié)構(gòu) 為了有一個(gè)通用驗(yàn)證環(huán)境方便重用,充分利用擴(kuò)展自動(dòng)化特點(diǎn),需要有分層驗(yàn)證平臺(tái)結(jié)構(gòu)。這種方法支持項(xiàng)目中自頂向下和自底向上驗(yàn)證,同時(shí)使項(xiàng)目之間共用通用單元更加容易?!禫MM for SystemVerilog》測(cè)試平臺(tái)結(jié)構(gòu)在DUT周圍包括五層。如圖4所示。 Figure 4 多層測(cè)試平臺(tái)方便驗(yàn)證重用 分層驗(yàn)證平臺(tái)是整個(gè)驗(yàn)證環(huán)境核心。 · 最底層為信號(hào)層,連接測(cè)試平臺(tái)及RTL設(shè)計(jì)。包括接口,時(shí)鐘,modport結(jié)構(gòu)。 · 命令層包含底層驅(qū)動(dòng)和單元監(jiān)控,如斷言(properties)檢查設(shè)計(jì)意圖。此層提供一 個(gè)事務(wù)級(jí)接口上層,同時(shí)經(jīng)過信號(hào)層驅(qū)動(dòng)物理管腳。 · 功能層包含高層驅(qū)動(dòng)及監(jiān)控單元,判斷測(cè)試通過或失敗自檢查結(jié)構(gòu)。額外的檢查, 比如跨越命令層及功能層協(xié)議檢查器。 · 情節(jié)層用產(chǎn)生器(generator)產(chǎn)生應(yīng)用于功能層事務(wù)(transactions)流或序列。產(chǎn) 生器有一套由測(cè)試層指定的包含權(quán)重,約束測(cè)試情節(jié)。帶約束隨機(jī)測(cè)試在此層引 入。 · 測(cè)試用例位于測(cè)試層。測(cè)試中用情節(jié)層定義新事務(wù)級(jí)序列,同步多事務(wù)流,通過與 功能層或命令層直接交互產(chǎn)生序列,或者直接到命令層補(bǔ)充定向激勵(lì)。 雖然分層測(cè)試平臺(tái)主要用于帶約束隨機(jī)激勵(lì)產(chǎn)生,也支持人工定向測(cè)試。圖4上部左邊部分展示了從測(cè)試到驅(qū)動(dòng)直接運(yùn)行路徑,完全繞過生成器。這樣允許驗(yàn)證工程師直接產(chǎn)生事務(wù)級(jí)而不需要設(shè)置帶約束隨機(jī)情節(jié)。 2.2 自頂向下和自底向上 《VMM for SystemVerilog》支持在分層方法中用自頂向下或自底向上方式建立驗(yàn)證環(huán)境。對(duì)于自底向上方式,設(shè)計(jì)者可以主要對(duì)信號(hào)層操作開發(fā)簡(jiǎn)單驗(yàn)證平臺(tái)。隨著獨(dú)立模塊連接集成到子系統(tǒng),完成芯片甚至多芯片系統(tǒng),驗(yàn)證團(tuán)隊(duì)增加更高層次的測(cè)試平臺(tái)單元完成全部的驗(yàn)證環(huán)境。對(duì)于自頂向下方式,驗(yàn)證團(tuán)隊(duì)用SystemVerilog 或 SystemC編寫事務(wù)級(jí)模型建立完整設(shè)計(jì),如圖5,并在這些模型上運(yùn)行測(cè)試。自頂向下方式使得驗(yàn)證團(tuán)隊(duì)能在開發(fā)過程中,甚至在RTL代碼開發(fā)前更早建立一個(gè)完整驗(yàn)證環(huán)境。這個(gè)環(huán)境可作為驗(yàn)證其他驗(yàn)證單元和RTL設(shè)計(jì)的“黃金參考”。 Figure 5 高層次測(cè)試平臺(tái)單元更早驗(yàn)證事務(wù)級(jí)模型 當(dāng)開發(fā)人員完成RTL設(shè)計(jì),將RTL設(shè)計(jì)置入驗(yàn)證環(huán)境代替事務(wù)級(jí)模型,從而驗(yàn)證設(shè)計(jì)在功能方面是否與事務(wù)級(jí)模型等價(jià)。此方法建立了一個(gè)可繼承過程,此過程中可綜合的RTL代碼甚至(如果需要)門級(jí)網(wǎng)表能代替事務(wù)級(jí)模型,重用系統(tǒng)級(jí)環(huán)境來驗(yàn)證設(shè)計(jì)本身。同時(shí)也提供一種解決當(dāng)前很重要驗(yàn)證面臨挑戰(zhàn)的一種解決辦法――如同RTL一樣檢查事務(wù)級(jí)模型行為。 分層方法通過幾種其他途徑而方便重用。結(jié)構(gòu)方面或系統(tǒng)行為分析時(shí)移出低層次,用事務(wù)級(jí)模型代替。當(dāng)清楚定義各層間交互時(shí),各層能在不同項(xiàng)目間重用。最基本的,既然只有測(cè)試層在產(chǎn)生新測(cè)試時(shí)需要調(diào)整修改,全部的測(cè)試平臺(tái)不考慮測(cè)試部分,都可重用。 2.3 結(jié)果檢查 雖然帶約束隨機(jī)激勵(lì)產(chǎn)生方式能快速生成很多測(cè)試情況,還需要對(duì)結(jié)果進(jìn)行檢查以確保設(shè)計(jì)對(duì)所有用例執(zhí)行結(jié)果正確。結(jié)果檢查分為數(shù)據(jù)檢查和協(xié)議檢查。數(shù)據(jù)檢查依賴于測(cè)試平臺(tái)能力。需要測(cè)試平臺(tái)記錄被測(cè)試設(shè)計(jì)輸出結(jié)果順序 變化情況。對(duì)于要覆蓋所有可能的情節(jié)來說,可變性相當(dāng)重要。 測(cè)試平臺(tái)中建立結(jié)果檢查功能,是產(chǎn)生測(cè)試平臺(tái)中遇到的一個(gè)難點(diǎn)。SystemVerilog 本身具有的語(yǔ)言結(jié)構(gòu)能有助于測(cè)試平臺(tái)檢查中激勵(lì)與響應(yīng)通信執(zhí)行。通過這種方法統(tǒng)計(jì)可能輸出的變化,從而幫助管理預(yù)期結(jié)果。 對(duì)于所有輸入數(shù)據(jù)組合,響應(yīng)檢查器中包括數(shù)據(jù)覆蓋記錄,確保合適輸出組合被接收到。驗(yàn)證工程師分析覆蓋數(shù)據(jù)并評(píng)估當(dāng)前產(chǎn)生輸入激勵(lì)組合是否驗(yàn)證了所有可能輸出。協(xié)議檢查主要在驗(yàn)證中對(duì)行為監(jiān)控,以及時(shí)序關(guān)系的建立。一些高層次協(xié)議主要在 SystemVerilog驗(yàn)證結(jié)構(gòu)中進(jìn)行規(guī)范定義并在驗(yàn)證平臺(tái)中監(jiān)控。其他關(guān)于設(shè)計(jì)意圖方面應(yīng)用規(guī)范協(xié)議檢查主要通過設(shè)計(jì)中及其接口定義的SystemVerilog斷言進(jìn)行檢查。 當(dāng)斷言違反時(shí),大部分驗(yàn)證工程師認(rèn)為報(bào)告一個(gè)直接或帶約束的隨機(jī)測(cè)試通過是不合適的。因此,《VMM for SystemVerilog》討論如何訪問驗(yàn)證環(huán)境中被檢查單元結(jié)果的方法。這種方法提供了斷言與所有驗(yàn)證環(huán)境之間連接。 2.4 覆蓋率驅(qū)動(dòng)驗(yàn)證執(zhí)行 每一個(gè)驗(yàn)證方法學(xué)在運(yùn)用中至少都會(huì)包含一些覆蓋率驅(qū)動(dòng)。總有一些目標(biāo)必須達(dá)到,如果一些特殊目標(biāo)測(cè)試無(wú)法執(zhí)行,要么調(diào)整測(cè)試用例,要么產(chǎn)生新測(cè)試用例。甚至通過觀 察波形來進(jìn)行簡(jiǎn)單手工測(cè)試。雖然這樣測(cè)試覆蓋率記錄和分析比較盲目,可信度不高,但也是基于覆蓋率驅(qū)動(dòng)。 《VMM for SystemVerilog》能夠讓用戶建立一個(gè)高效驗(yàn)證環(huán)境,此環(huán)境主要依賴于測(cè)試平臺(tái)自動(dòng)化,斷言和覆蓋率測(cè)量從而提高驗(yàn)證生產(chǎn)力。驗(yàn)證生產(chǎn)力主要包括迅速產(chǎn)生更多測(cè)試用例能力及避免產(chǎn)生冗余測(cè)試情況的能力。 如果一個(gè)新產(chǎn)生測(cè)試用來測(cè)試以前已經(jīng)測(cè)試過的相同功能(由此會(huì)有相同的功能覆蓋率),那么這樣測(cè)試用例不值得加入到驗(yàn)證中。功能覆蓋率能讓用戶知道哪些功能還沒有被執(zhí)行到,從而調(diào)整測(cè)試用例,集中精力在未覆蓋到部分?!禫MM for SystemVerilog》描述如何通過功能覆蓋率更快達(dá)到驗(yàn)證目標(biāo)。 SystemVerilog非常適合于功能覆蓋率。功能類似于SystemVerilog斷言時(shí)序 (Temporal)覆蓋特性能用于抓住設(shè)計(jì)中深層次corner-case條件。高層次覆蓋點(diǎn)能通過覆蓋組(cover groups)進(jìn)行定義規(guī)范。這種方法能跟蹤定義值范圍以及不同定義值之間組合情況。此能力尤其適合于監(jiān)控存儲(chǔ)器地址范圍,數(shù)據(jù)包內(nèi)容,以及設(shè)計(jì)或驗(yàn)證平臺(tái)中其他多比特信號(hào) 《VMM for SystemVerilog》描述了很多使用,包括:temporal覆蓋特性;覆蓋組 (cover groups),用交叉覆蓋指定覆蓋點(diǎn),以及用傳統(tǒng)代碼覆蓋測(cè)量方法跟蹤這些點(diǎn)。SystemVerilog通過統(tǒng)一語(yǔ)言方法,將代碼覆蓋,功能覆蓋,斷言覆蓋用一種語(yǔ)言進(jìn)行定義。 2.5 使用形式分析 《VMM for SystemVerilog》不僅僅涉及到以仿真為基礎(chǔ)的驗(yàn)證技術(shù),還包括形式分析驗(yàn)證技術(shù)。豐富的SystemVerilog斷言結(jié)構(gòu)能將斷言目標(biāo)用于仿真,形式分析,或包括這兩者的規(guī)范定義?!禫MM for SystemVerilog》提供了在這些仿真或形式分析驗(yàn)證中編寫斷言的方法。 形式工具能分析每個(gè)斷言,并盡力證明此斷言安全,任何測(cè)試情節(jié)下都不會(huì)發(fā)生告警。這一步驟不需要編寫任何仿真測(cè)試用例。由于以后RTL設(shè)計(jì)改變而引入缺陷使證明無(wú)效,斷言都不應(yīng)該被刪除。被證明的斷言通常不需要進(jìn)行仿真。如果斷言失敗,形式工具產(chǎn)生一個(gè)反例說明斷言如何失敗。反例展示一個(gè)設(shè)計(jì)或斷言中缺陷,或證明輸入的約束不充分,而限制了合法仿真序列分析。 一些形式分析也能用于統(tǒng)計(jì)直接或隨機(jī)仿真測(cè)試中無(wú)法擊中的temporal覆蓋點(diǎn)。此形式工具首先盡力測(cè)定覆蓋目標(biāo)是否曾經(jīng)達(dá)到。如果沒有,將指示出設(shè)計(jì)中冗余或無(wú)法達(dá)到的邏輯,并更新覆蓋率數(shù)據(jù)庫(kù)結(jié)果。如果能達(dá)到,一個(gè)輸入測(cè)試用例將產(chǎn)生。如果此測(cè)試符合合法激勵(lì)(因?yàn)檩斎爰s束充分),則帶斷言的測(cè)試用例被執(zhí)行,驗(yàn)證設(shè)計(jì)行為同時(shí)覆蓋率數(shù)據(jù)結(jié)果被更新。 2.6 產(chǎn)生可重用驗(yàn)證IP 分層驗(yàn)證平臺(tái)結(jié)構(gòu)以及《VMM for SystemVerilog》其他特點(diǎn)自然適合產(chǎn)生可重用VIP(verification intellectual property)。VIP包括比如事務(wù)級(jí)模塊,發(fā)生器(generators),處理器(transactors),檢查器(checkers),斷言(assertions),以及分層驗(yàn)證平臺(tái)中其他部分。必須很方便用于其他不同項(xiàng)目中?!禫MM for SystemVerilog》指導(dǎo)方針是讓開發(fā)者輸出項(xiàng)目?jī)?nèi)可重用或能商用的VIP。 具有與《VMM for SystemVerilog》相適應(yīng)的驗(yàn)證環(huán)境SOC開發(fā)團(tuán)隊(duì)能非常方便快捷采用項(xiàng)目?jī)?nèi)或外部VIP,從而在項(xiàng)目中節(jié)省大量時(shí)間及資源。圖6是分層驗(yàn)證平臺(tái)中如何使 對(duì)一個(gè)系統(tǒng)設(shè)計(jì)團(tuán)隊(duì)來說,最大挑戰(zhàn)不在于許多設(shè)計(jì)模塊規(guī)范定義及集成,更重要是于對(duì)最終設(shè)計(jì)正確性所能獲取的信心度。此篇文章描述了在系統(tǒng)級(jí)驗(yàn)證中應(yīng)用方法學(xué)及驗(yàn)證任務(wù)。關(guān)注系統(tǒng)級(jí)集成驗(yàn)證模塊,系統(tǒng)級(jí)架構(gòu)人員,驗(yàn)證工程師將對(duì)此感興趣。 3.2 可擴(kuò)展的驗(yàn)證單元 分層驗(yàn)證平臺(tái)方法所產(chǎn)生的獨(dú)立處理器(transctors)能在模塊級(jí)到系統(tǒng)級(jí)環(huán)境中被重用。從系統(tǒng)級(jí)角度考慮這些處理器,他們可能需要擴(kuò)展或結(jié)合(combine)在模塊級(jí)的能到系統(tǒng)級(jí)功能。獨(dú)立處理器被集成到系統(tǒng)級(jí)處理器,被稱為可擴(kuò)展的驗(yàn)證單元(XVC)。 XVC提供系統(tǒng)級(jí)驗(yàn)證環(huán)境中可重用,可升級(jí),標(biāo)準(zhǔn)形式的基本單元結(jié)構(gòu)。目的是使測(cè)試建立開銷最小化。XVC能用于驅(qū)動(dòng)模塊互聯(lián)結(jié)構(gòu)或外部接口。也能通過監(jiān)控系統(tǒng)狀態(tài),提供提示信息支持其他XVC單元。 XVC意圖是支持系統(tǒng)級(jí)集成和在統(tǒng)一方法學(xué)指引下通過直接和帶約束隨機(jī)測(cè)試進(jìn)行功能驗(yàn)證。XVC結(jié)構(gòu)對(duì)不同系統(tǒng)級(jí)設(shè)計(jì)來說是非常方便。一個(gè)XVC將成熟的驗(yàn)證或系統(tǒng)級(jí)功能壓縮成標(biāo)準(zhǔn)模式。不論功能方面可能有如何大的變化,XVC用戶在驗(yàn)證平臺(tái)級(jí)別的感受不會(huì)因此而改變。這樣有助于減少學(xué)習(xí)過程,并使系統(tǒng)級(jí)驗(yàn)證平臺(tái)控制機(jī)制連續(xù)一致。 一個(gè)XVC對(duì)驗(yàn)證IP來說是一個(gè)容器,分為兩個(gè)層次,如圖7所示。發(fā)生器 (generator)層用戶對(duì)測(cè)試行為可擴(kuò)展庫(kù),XVC可通過集成到驗(yàn)證環(huán)境中定義好的行為接口而對(duì)此執(zhí)行。驅(qū)動(dòng)層集成了各個(gè)獨(dú)立的處理器,用于執(zhí)行連接到DUT接口的物理層或事務(wù)層的行為。發(fā)生器層控制驅(qū)動(dòng)層的處理器。 Figure 7 XVC結(jié)構(gòu)分為兩層:發(fā)生器和驅(qū)動(dòng)器 發(fā)生器層的行為接口容許測(cè)試激勵(lì)一致。XVC發(fā)生器驗(yàn)證環(huán)境接口能直接連接到一個(gè)XVC管理器。一個(gè)XVC管理器能同時(shí)支持多個(gè)XVC,通過接口調(diào)度給定XVC各自行為執(zhí)行。XVC也能傳遞數(shù)據(jù),狀態(tài)底層的測(cè)試控制部分與相同環(huán)境中的其他XVC進(jìn)行通信交流。 經(jīng)驗(yàn)表明大部分系統(tǒng)驗(yàn)證執(zhí)行中,當(dāng)模塊因?yàn)橄到y(tǒng)公共資源發(fā)生沖突時(shí),都可觀察。通過執(zhí)行一個(gè)單線程的測(cè)試無(wú)法有效產(chǎn)生競(jìng)爭(zhēng)的測(cè)試情節(jié)。類似的,通過獨(dú)立的激勵(lì)流到互不相關(guān)的外部接口上,也無(wú)法可靠的產(chǎn)生這種需要 的測(cè)試情節(jié)。因此驗(yàn)證單元產(chǎn)生的激勵(lì)能夠與實(shí)際需求激勵(lì)一致。當(dāng)有一個(gè)以單一,中心的XVC管理器協(xié)同多個(gè)XVC執(zhí)行時(shí),這樣的需求很容易實(shí)現(xiàn)。 3.3 XVC管理器(XVC manager) XVC管理器是一個(gè)用于高層次XVC之間同步而可選的驗(yàn)證單元。用戶可根據(jù)系統(tǒng)或一個(gè)具體測(cè)試對(duì)同步或XVC控制機(jī)制進(jìn)行定義。驗(yàn)證環(huán)境中只能例化XVC管理器一次;當(dāng)需要運(yùn)用多個(gè)管理器時(shí)則需要在另外一個(gè)層次中對(duì)他們進(jìn)行協(xié)調(diào)管理。 《VMM for SystemVerilog》規(guī)范了一個(gè)預(yù)定義XVC管理器。它用純文本格式外部配置文件描述測(cè)試情節(jié)。這些文件重用或根據(jù)新的相關(guān)需求很方便進(jìn)行調(diào)整。這種通過簡(jiǎn)單文本輸入文件指導(dǎo)測(cè)試的能力方式,能使用戶在不需要明白驗(yàn)證環(huán)境細(xì)節(jié)情況下快速獲得高效測(cè)試結(jié)果。 對(duì)一些重編輯(re-compilation)測(cè)試平臺(tái)單元或運(yùn)行不同測(cè)試情節(jié)設(shè)計(jì)來說,用外部文件對(duì)測(cè)試情節(jié)進(jìn)行規(guī)范的方式減輕了相應(yīng)需求。有序的規(guī)格在復(fù)雜系統(tǒng)設(shè)計(jì)中能有助于減少測(cè)試回歸(turnaround)次數(shù)。圖8展示了預(yù)定義的XVC管理器結(jié)構(gòu)。 Figure 8 XVC 管理器控制并使測(cè)試平臺(tái)中其他XVC協(xié)調(diào)工作 測(cè)試情節(jié)的概念基于預(yù)定義XVC管理器功能。預(yù)定義的XVC管理器指導(dǎo)一個(gè)測(cè)試情節(jié)范圍內(nèi)XVC。一個(gè)系統(tǒng)級(jí)測(cè)試程序能包括一個(gè)或更多測(cè)試情節(jié)。測(cè)試情節(jié)用于測(cè)試一個(gè)或多個(gè)驗(yàn)證需求。 一個(gè)測(cè)試程序可以由許多測(cè)試情節(jié)組成,用于完成一個(gè)DUT幾個(gè)測(cè)試需求。測(cè)試情節(jié)能被用于普通行為序列壓縮從而被不同測(cè)試程序重用。比如:需要許多XVC配置一個(gè)系統(tǒng)的操作能夠包含在一個(gè)情節(jié)中。 用于預(yù)定義XVC管理器的測(cè)試情節(jié)文件在測(cè)試運(yùn)行前就固定了,不能進(jìn)行動(dòng)態(tài)調(diào)整。一個(gè)測(cè)試程序包括測(cè)試情節(jié)描述以及關(guān)于每個(gè)情節(jié)執(zhí)行的順序信息。情節(jié)可能在多種順序下重復(fù)多次。測(cè)試程序中執(zhí)行的每個(gè)測(cè)試行為在執(zhí)行第一次行為前由它的目標(biāo)XVC檢查。這個(gè)檢查主要是防止由于情節(jié)文件中的語(yǔ)義或語(yǔ)法錯(cuò)誤而在一個(gè)長(zhǎng)時(shí)間運(yùn)行后而引起仿真終止。 3.4 系統(tǒng)級(jí)驗(yàn)證環(huán)境 對(duì)完整驗(yàn)證而言,為達(dá)到測(cè)試需求的目標(biāo),通常習(xí)慣是模塊或系統(tǒng)是建立一個(gè)定制測(cè)試平臺(tái)。然而除非使用一個(gè)標(biāo)準(zhǔn)方法,模塊級(jí)測(cè)試平臺(tái)單元或功能覆蓋元素在系統(tǒng)級(jí)并不能被方便的重用。 進(jìn)行系統(tǒng)級(jí)驗(yàn)證時(shí)一個(gè)能較好工作方法是用transactor代替processor (CPU or DSP)。transactor 直接基于周期精度的機(jī)制將激勵(lì)驅(qū)動(dòng)給系統(tǒng),而避免程序處理器執(zhí)行此任務(wù)的消耗。transactor 提供了一個(gè)易控總線主方式。這種方法也避免了一個(gè)環(huán)境中由于對(duì)條件測(cè)試 而引起錯(cuò)誤的主,從總線agent驗(yàn)證。比如:如果一個(gè)主(master)或從(slave) 總線agent連接有錯(cuò)誤,任意一個(gè)能屏蔽連接的執(zhí)行。transactor更容易將系統(tǒng)設(shè)計(jì)或驗(yàn)證環(huán)境中其他事件進(jìn)行同步。最后,可通過寫一個(gè)transactor,在一定總線周期范圍內(nèi),產(chǎn)生更廣范圍協(xié)議值和行為,因而能獲得更好功能覆蓋。另一方面,transactor不能直接執(zhí)行編寫的CPU或DSP嵌入式代碼。因此詳細(xì)處理器模式通常用于軟件驅(qū)動(dòng),系統(tǒng)級(jí)驗(yàn)證環(huán)境?!禫MM for SystemVerilog》提供用于設(shè)立執(zhí)行軟件集成和驗(yàn)證軟硬件交互驗(yàn)證環(huán)境。 實(shí)際上一個(gè)典型SoC項(xiàng)目有幾個(gè)不同驗(yàn)證環(huán)境。對(duì)一個(gè)給定系統(tǒng)設(shè)計(jì),功能驗(yàn)證計(jì)劃的規(guī)范與系統(tǒng)級(jí)驗(yàn)證需求一致。用多個(gè)不同驗(yàn)證環(huán)境達(dá)到這些需求相對(duì)容易。每個(gè)環(huán)境與一系列特殊功能驗(yàn)證目標(biāo)相聯(lián)系,并為有效的覆蓋這些需求而設(shè)計(jì)。系統(tǒng)級(jí)需求的獨(dú)特正交性(orthogonality)使得用一個(gè)單一環(huán)境會(huì)不必要復(fù)雜,由于正交性,不同驗(yàn)證環(huán)境實(shí)際上可以屏蔽掉一定系統(tǒng)錯(cuò)誤配置。 除軟件測(cè)試環(huán)境外,《VMM for SystemVerilog》定義了四種類型驗(yàn)證環(huán)境: · “模塊互聯(lián)底層結(jié)構(gòu)環(huán)境”預(yù)驗(yàn)證模塊互聯(lián)底層結(jié)構(gòu)。驗(yàn)證單元替換與總線接口的 外圍,主,從設(shè)備。這個(gè)環(huán)境目的是檢查數(shù)據(jù)傳輸,協(xié)議規(guī)則,總線執(zhí)行需求方 面,比如時(shí)間延遲(latency),帶寬等功能的正確性。 · “基本集成環(huán)境”檢查系統(tǒng)中所有I/O口連接關(guān)系,翻轉(zhuǎn)正確性。應(yīng)用集成激勵(lì)中 的首選方法是用驗(yàn)證單元代替大量系統(tǒng)單元來驅(qū)動(dòng)總線事務(wù)。集成測(cè)試需要明確記錄,確保每個(gè)模塊被正確集成到系統(tǒng)級(jí)層次中。系統(tǒng)單元內(nèi)部功能行為不被驗(yàn)證。 · “低層次系統(tǒng)功能環(huán)境”覆蓋在用處理器(transactor)替代CPU/DSP時(shí)不容易觀 測(cè)的功能。這些功能可能包括控制信號(hào)監(jiān)控,復(fù)位方式檢查,或其他一些對(duì) CPU/DSP來說不容易回讀,控制的一些功能。與基本集成環(huán)境一樣,不驗(yàn)證系統(tǒng)單元內(nèi)部功能行為。 · “系統(tǒng)確認(rèn)環(huán)境”確保全面執(zhí)行需求,比如系統(tǒng)能達(dá)到時(shí)間延遲(latency) 和帶 寬。這個(gè)環(huán)境中驗(yàn)證單元驅(qū)動(dòng)或監(jiān)控系統(tǒng)中所有模塊外部接口。如圖9所示,只有CPU/DSP由一個(gè)處理器(transactor)代替。這個(gè)環(huán)境中需要提取一個(gè)系統(tǒng)級(jí)模型進(jìn)行高效仿真以及一定程度精確性使測(cè)試回歸時(shí)間最小化。 Figure 9 系統(tǒng)確認(rèn)環(huán)境必須高效度量系統(tǒng)執(zhí)行 系統(tǒng)級(jí)驗(yàn)證環(huán)境應(yīng)該重用模塊級(jí)中正確使用過的驗(yàn)證單元?!禫MM for SystemVerilog》中驗(yàn)證方法指導(dǎo)方針使得模塊和系統(tǒng)級(jí)驗(yàn)證環(huán)境架構(gòu)成為可能。所以產(chǎn)生不同模塊級(jí)驗(yàn)證單元所花費(fèi)的努力在移植到系統(tǒng)級(jí)時(shí)就不會(huì)白費(fèi)。 驗(yàn)證單元都按照指導(dǎo)方針進(jìn)行構(gòu)造,需要時(shí)將很容易在系統(tǒng)級(jí)重用。模塊級(jí)單元在系統(tǒng)級(jí)被重新配置,使得他們能在系統(tǒng)級(jí)進(jìn)行相關(guān)得更多操作執(zhí)行。驗(yàn)證單元重配置在模塊級(jí)和系統(tǒng)級(jí)驗(yàn)證中達(dá)到不同目的。 3.5 事務(wù)級(jí)模型(Transaction-level models) 文章中描述的系統(tǒng)級(jí)驗(yàn)證方法在事務(wù)級(jí)中經(jīng)常需要承擔(dān)對(duì)DUT部分進(jìn)行建模任務(wù)。編寫一個(gè)完整設(shè)計(jì)事務(wù)級(jí)模型是現(xiàn)代驗(yàn)證方法學(xué)一部分。 對(duì)一些情況,設(shè)計(jì)中第一個(gè)模塊是在RTL級(jí)編寫,設(shè)計(jì)中事務(wù)級(jí)模塊編寫似乎是花費(fèi)昂貴的行為,因此實(shí)際設(shè)計(jì)中常貶低這種做法。但是如果RTL代碼不可用,編寫一個(gè)事務(wù)級(jí)模型,不僅不會(huì)增加消耗,還有利可圖的,將節(jié)省整個(gè)項(xiàng)目大量時(shí)間。 編寫一個(gè)合適事務(wù)級(jí)模型相對(duì)于編寫一個(gè)RTL模型只耗費(fèi)很少一部分時(shí)間,因此讓設(shè)計(jì)和驗(yàn)證團(tuán)隊(duì)并行工作。事務(wù)級(jí)模型運(yùn)行速度也比RTL模型以數(shù)量級(jí)快很多。使得驗(yàn)證環(huán)境,測(cè)試開發(fā)及調(diào)試更快。 當(dāng)RTL模型最后有效可用時(shí)(available),驗(yàn)證環(huán)境中所有單元已經(jīng)處于非常成熟水平。他們將立即驗(yàn)證設(shè)計(jì)中各方面功能,針對(duì)這些方面達(dá)到高功能覆蓋。事務(wù)級(jí)模型的編寫及仿真速度更快,因?yàn)樗麄儾挥锰幚?復(fù)雜物理信號(hào)及協(xié)議。他們能用更高層次事務(wù)描述接收,執(zhí)行并相應(yīng)事務(wù)。他們不需要在事務(wù)中交換或處理物理wire中比特搜集序列。但是有能力在系統(tǒng)中用一個(gè)pin-accurate事務(wù)級(jí)模型代替RTL設(shè)計(jì)模塊,使得仿真運(yùn)行消耗更少的仿真資源,仿真運(yùn)行更快。 設(shè)計(jì)方法學(xué)中需要或產(chǎn)生一個(gè)設(shè)計(jì)的事務(wù)級(jí)模型通常用SystemC作為建模語(yǔ)言。這是一個(gè)非常好選擇,沒有理由選用其他建模語(yǔ)言,因?yàn)镾ystemC模型相對(duì)于執(zhí)行功能驗(yàn)證,能用于其他contexts中。但是對(duì)這些設(shè)計(jì)方法學(xué)而言,編寫一個(gè)事務(wù)級(jí)模型僅僅是加速驗(yàn)證環(huán)境的開發(fā),而不需要在其他context中重用這些模型,SystemVerilog同樣也是一個(gè)優(yōu)秀建模語(yǔ)言選擇。SystemVerilog提供了高層構(gòu)造的所有需求,使得事務(wù)級(jí)模型編寫更加高效。 3.6 小結(jié) 當(dāng)與一個(gè)合適的方法學(xué)相結(jié)合,SystemVerilog提供了建立一個(gè)完整系統(tǒng)級(jí)ESL驗(yàn)證環(huán)境所需要所有constructs 和features?!禫MM for SystemVerilog》描述了幾種不同形式環(huán)境,能用于驗(yàn)證設(shè)計(jì)的事務(wù)級(jí)模型,RTL設(shè)計(jì),以及嵌入式軟件。幾乎上100條用于系統(tǒng)級(jí)和軟件驗(yàn)證的建議和指導(dǎo)方針將作者的專家意見轉(zhuǎn)換成通往成功的具體步驟。 文章最后部分將討論采用推薦的驗(yàn)證方法學(xué)策略,包括《VMM for SystemVerilog》中定義的標(biāo)準(zhǔn)模塊建立,斷言庫(kù)使用。這些庫(kù)涉及到文章中討論的基本方法,包括XVC,XVC管理器,軟件驗(yàn)證。 4 SystemVerilog驗(yàn)證方法學(xué):采用VMM 4.1 采用驗(yàn)證方法學(xué) 先進(jìn)驗(yàn)證技術(shù)并非總是容易采用的;驗(yàn)證團(tuán)隊(duì)不能因?yàn)橹灰切聳|西就去盲目嘗試。事實(shí)上,隨著設(shè)計(jì)規(guī)模及復(fù)雜度不斷增加,舊方法因不再實(shí)用而淘汰?;诖爽F(xiàn)象帶約束隨機(jī)激勵(lì)產(chǎn)生,覆蓋率驅(qū)動(dòng)驗(yàn)證,斷言,形式分析等技術(shù)從理論上轉(zhuǎn)向?qū)嶋H應(yīng)用。實(shí)際項(xiàng)目中這些技術(shù)也成為必需。 當(dāng)大部分SoC項(xiàng)目存在大量設(shè)計(jì)缺陷時(shí),許多驗(yàn)證團(tuán)在可能出現(xiàn)問題之前就已經(jīng)清楚認(rèn)識(shí)到項(xiàng)目挑戰(zhàn)性以及舊驗(yàn)證方法缺陷。解決方法是盡可能快采用VMM方法學(xué)。SystemVerilogVMM驗(yàn)證方法學(xué)應(yīng)運(yùn)而生。 通過此書可知,在驗(yàn)證中將涉及到兩種形式的驗(yàn)證手段。一是參考方法學(xué)支持普通驗(yàn)證方法學(xué)。比如:工程師在不熟悉加入斷言(assertions)概念下,能 不依賴于他們可用的任何assertion語(yǔ)言或庫(kù)而熟悉此方法。不論用哪種語(yǔ)言,類似采用帶約束隨機(jī)激勵(lì)生成需要熟悉約束的角色,內(nèi)容。 VMM方法學(xué)中面向?qū)ο筇攸c(diǎn),對(duì)某些想用此方法學(xué)工程師來說是很大障礙。封裝,類,繼承,擴(kuò)展,以及面向?qū)ο缶幊痰闰?yàn)證環(huán)境的考慮遠(yuǎn)大于傳統(tǒng)驗(yàn)證平臺(tái)。幸運(yùn)的是,很多工程師有諸如C++,Java語(yǔ)言方面經(jīng)驗(yàn),因此對(duì)他們來說只需要將高級(jí)語(yǔ)言中面向?qū)ο蟾拍顟?yīng)用于驗(yàn)證領(lǐng)域。 另一種采用形式是用此書中對(duì)SystemVerilog規(guī)范技術(shù)方法。使用書附錄中定義的模塊庫(kù)而非常方便自動(dòng)化。當(dāng)然明白普通驗(yàn)證概念有助于SystemVerilog方法學(xué)使用。同時(shí)SystemVerilog庫(kù)提供的范例也能幫助用戶明白這些概念。比如:斷言檢查(assertion-checker)庫(kù);基類(base-class)庫(kù)提供了面向?qū)ο篁?yàn)證很好范例。 SystemVerilog VMM例出了四個(gè)庫(kù),使其使用更加方便快捷。 · VMM標(biāo)準(zhǔn)庫(kù),一套SystemVerilog驗(yàn)證平臺(tái)及有用的類。 · VMMchecker庫(kù),一套SystemVerilog斷言檢查。 · XVC標(biāo)準(zhǔn)庫(kù),一套SystemVerilog系統(tǒng)級(jí)驗(yàn)證單元及有用的類。 · 仿真器信息處理(continue,abort,invoke debugger等) vmm_data基類是驗(yàn)證平臺(tái)中所有事務(wù)(transaction)描述以及數(shù)據(jù)建模的基礎(chǔ)。這個(gè)類能夠被擴(kuò)展建立適合與平臺(tái)需要的任何模型,比如一個(gè)以太網(wǎng)MAC幀數(shù)據(jù)模型,或者描述一個(gè)串行總線數(shù)據(jù)包。Transactions建?;趖ransaction方式描述,也是從vmm_data類中被擴(kuò)展。這樣相對(duì)于傳統(tǒng)程序調(diào)用,更容易產(chǎn)生隨機(jī)事務(wù)(transactions)數(shù)據(jù)流。 VMM標(biāo)準(zhǔn)庫(kù)中還包括其他類: · vmm_channel: 提供通用事務(wù)級(jí)接口機(jī)制 · vmm_broadcast: 復(fù)制事務(wù)到多個(gè)通道。 · vmm_notify: 并發(fā)執(zhí)行線程同步接口 · vmm_xactor: 作為基類服務(wù)于所有事務(wù) 總之,這些類提供建立驗(yàn)證環(huán)境所需模塊(block),能滿足各種可能DUT驗(yàn)證需求,并加速驗(yàn)證平臺(tái)開發(fā)。預(yù)定義基類可擴(kuò)展性是面向?qū)ο蠓椒P(guān)鍵所在;每個(gè)驗(yàn)證團(tuán)隊(duì)能定制自己驗(yàn)證平臺(tái)環(huán)境,同時(shí)在操作運(yùn)行中不需要改變他們自己基類。SystemVerilog中基類源代碼在開發(fā)自己類時(shí)是有用的,因此Synopsys提供免費(fèi)license的VMM標(biāo)準(zhǔn)庫(kù)。 4.2.2 VMM Checker庫(kù) 斷言(assertion)能更快,更多發(fā)現(xiàn)bug在很多年前的文中就已經(jīng)提到。斷言在執(zhí)行中能領(lǐng)會(huì)設(shè)計(jì)者意圖,在代碼設(shè)計(jì)階段隔離設(shè)計(jì)錯(cuò)誤,縮短debug時(shí)間,也能通過形式驗(yàn)證分析發(fā)現(xiàn)仿真中容易被忽略的邊界(corner-case) bug。雖然有這些優(yōu)點(diǎn),讓人吃驚的是并非所有設(shè)計(jì)或驗(yàn)證團(tuán)隊(duì)用到斷言。 出現(xiàn)這種情況是工程師不得不專門學(xué)一種語(yǔ)言同時(shí)還需要買昂貴工具?,F(xiàn)在 SystemVerilog已經(jīng)提供了強(qiáng)有力斷言結(jié)構(gòu),能被當(dāng)前主流仿真器所支持,并更易使用。事實(shí)上,最近調(diào)查表明由于SystemVerilog對(duì)斷言的支持,斷言的使用在明顯增加。然而,對(duì)工程師來說很輕松使用斷言還需要時(shí)間,同時(shí)需要讓他們知道“what to check”也存在難度。 assertion-checker庫(kù)即是將斷言輕松加入到RTL設(shè)計(jì)中一個(gè)很好方法。這些檢查器(checker)的設(shè)計(jì)與按照一些通用設(shè)計(jì)單元保持一致,比如FIFO, stacks,arbiters,memories,state machines,handshake interface等。工程師不用考慮使用的斷言與設(shè)計(jì)結(jié)構(gòu)是否完全保持一支,他們只需要簡(jiǎn)單將一個(gè)arbiter請(qǐng)求,應(yīng)答信號(hào)連接到一個(gè)arbiter 檢查器或者是將memory地址線和控制信號(hào)連接到一個(gè)memory檢查器。 通過調(diào)查也顯示了斷言檢查庫(kù)價(jià)值;Accellera 組織提供的開放驗(yàn)證庫(kù)OVL已經(jīng)廣泛采用。SystemVerilog VMM擴(kuò)展了OVL,加入了對(duì)設(shè)計(jì)單元類型支持,包括FIFO,同步,異步memory,stacks。圖11完整的列出了VMM檢查庫(kù)中定義的50個(gè)斷言檢查器。 Basic(OVL_Like) assert_always assert_no_underflow assert_always_on_edge assert_odd_parity assert_change assert_one_cold assert_cycle_sequence assert_one_hot State Integrity assert_code_distance assert_driven assert_mutex assert_next_state Protocol Assert_arbiter Assert_data_used Assert_dual_clk_fifo Assert_fifo assert_decrement assert_proposition assert_delta assert_quiescent_state assert_even_parity assert_range assert_fifo_index assert_time assert_frame assert_transition assert_handshake assert_unchange assert_implication assert_width assert_increment assert_win_change assert_never assert_win_unchange assert_ next assert_window assert_no_overflow assert_zero_one_hot assert_no_transition Value Integrity assert_bits assert_value Temproal Sequence assert_hold_value assert_reg_loaded Assert_memory_sync Assert_memory_async Assert_no_consention Assert_req_ack_uniqueAssert_stack Assert_valid_id Assert_multiport_fifo Figure 11 VMM檢查庫(kù)擴(kuò)展了OVL斷言內(nèi)容 這些檢查器作為SystemVerilog模塊進(jìn)行應(yīng)用,所以按照模塊例化能放置于設(shè)計(jì)或驗(yàn)證平臺(tái)中的任何位置。使用非常簡(jiǎn)單,用戶簡(jiǎn)單連接時(shí)鐘,復(fù)位,被檢查信號(hào)即可。比如:下面的檢查器例化確定了兩個(gè)信號(hào),hot and cold,是互斥的 (不能在同一時(shí)刻有效): Assert_mutex temperature_check(reset_n,clock,hot,cold) Synopsys已將VMM檢查庫(kù)中SystemVerilog的應(yīng)用贈(zèng)予給Accellera,可以預(yù)期將來OVL版本中將包含用SystemVerilog VMM定義的全套斷言檢查庫(kù)。 4.2.3 XVC標(biāo)準(zhǔn)庫(kù) SystemVerilog VMM定義了可擴(kuò)展的驗(yàn)證單元(XVC),從一個(gè)模塊級(jí)事務(wù)或模塊級(jí)組合事務(wù)擴(kuò)展到一個(gè)系統(tǒng)級(jí)事務(wù)。本書也規(guī)范了XVC標(biāo)準(zhǔn)庫(kù),一組用于建立一個(gè)系統(tǒng)級(jí)驗(yàn)證的XVC類。如圖12: Figure 12 用XVC標(biāo)準(zhǔn)庫(kù)和VMM標(biāo)準(zhǔn)庫(kù)中類建立XVC XVC manager是一個(gè)可選驗(yàn)證單元,主要用于更高層次XVC同步。根據(jù)系統(tǒng)或具體測(cè)試需要,用戶可自定義同步和XVC控制機(jī)制。XVC標(biāo)準(zhǔn)庫(kù)中定義了xvc_manager基類,預(yù)定義的XVC manager類:vmm_xvc_manager。它作為一個(gè)基類的擴(kuò)展而應(yīng)用。 vmm_xvc_manager類相對(duì)xvc_manager還提供了幾個(gè)附加元素(elements),包括控制行為知曉(notifications to control cations),一個(gè)預(yù)定義的命令文件結(jié)構(gòu),一個(gè)包括 行為控制,事件控制,中斷,執(zhí)行,日志的命令格式。因?yàn)檫@個(gè)命令文件描述測(cè)試情節(jié),因而不需要重新編譯測(cè)試平臺(tái)或者DUT運(yùn)行不同情節(jié)。用戶可以根據(jù)需要重用或調(diào)整命令文件。 xvc_xactor基類用于實(shí)現(xiàn)XVC-compliant事務(wù),它來源于vmm_xactor類,同時(shí)附加了其他一些特點(diǎn),包括trace日志;用于中斷的另一個(gè)輸入通道;一個(gè)notification service接口。最后,xvc_action基類用于定義它們產(chǎn)生的命令和行為。 4.2.4 軟件測(cè)試架構(gòu) 在一些系統(tǒng)驗(yàn)證架構(gòu)中嵌入式軟件驗(yàn)證是一個(gè)重要組成部分。此架構(gòu)中通常是一個(gè)主處理器主導(dǎo)應(yīng)用數(shù)據(jù)同時(shí)控制memory及外圍設(shè)備。對(duì)于一個(gè)包含有CPU或DSP系統(tǒng)設(shè)計(jì)系統(tǒng)級(jí)測(cè)試來說,需要有一個(gè)用于支持測(cè)試軟件執(zhí)行的驗(yàn)證環(huán)境。此環(huán)境能支持整個(gè)系統(tǒng)執(zhí)行,軟件應(yīng)用以及DSP控制算法正常運(yùn)行。 System verilog VMM定義了一個(gè)軟件測(cè)試環(huán)境,用于補(bǔ)充本書以及之前系列文章中描述的以硬件為中心的驗(yàn)證平臺(tái)結(jié)構(gòu)。此環(huán)境可用于替代一個(gè)以CPU為核心的系統(tǒng)設(shè)計(jì)。這樣系統(tǒng)級(jí)驗(yàn)證能夠在真正運(yùn)行一個(gè)設(shè)計(jì)系統(tǒng)之前就引入。驗(yàn)證環(huán)境中XVC被引入與軟件測(cè)試架構(gòu)協(xié)同工作。這樣同時(shí)進(jìn)行外部和軟件內(nèi)部仿真,同時(shí)產(chǎn)生符合硬件,軟件驗(yàn)證需求相關(guān)系統(tǒng)條件。 SystemVerilog VMM定義了一個(gè)C庫(kù),用于執(zhí)行一個(gè)VMM-compliant軟件驗(yàn)證環(huán)境及測(cè)試。這個(gè)庫(kù)包含元素有: · 系統(tǒng)描述:外圍設(shè)備描述陣列。 · 測(cè)試行為:宏,具體外設(shè)的測(cè)試行為規(guī)范支持的申明。 · 低級(jí)別服務(wù):信息打印功能,測(cè)試執(zhí)行所需軟件驗(yàn)證環(huán)境的確認(rèn),跳過在此環(huán) 境中不能執(zhí)行的測(cè)試,訪問memory映射寄存器,系統(tǒng)資源管理,緩存管理, 中斷控制,隨機(jī)數(shù)產(chǎn)生,確定斷言,提供軟件XVC連接性。 4.3 小結(jié) 當(dāng)與一個(gè)合適方法相結(jié)合,SystemVerilog提供了建立一個(gè)完整RTL以及系統(tǒng)級(jí) (ESL)驗(yàn)證環(huán)境需要的所有結(jié)構(gòu)及特性。同時(shí)完全支持與System C或與一個(gè)以C為基礎(chǔ)的軟件測(cè)試環(huán)境交互。此書對(duì)經(jīng)驗(yàn)證過的驗(yàn)證方法學(xué),以及用于加快項(xiàng)目間應(yīng)用模塊庫(kù)建立進(jìn)行了完整描述。 結(jié)束語(yǔ): 采用《VMM for SystemVerilog》方法學(xué)是應(yīng)對(duì)目前復(fù)雜芯片而帶來驗(yàn)證挑戰(zhàn)的有用方法。此書基于業(yè)界多年領(lǐng)先的ARM公司,Synopsys公司專家,及其客戶提供經(jīng)驗(yàn)編寫而成,因而對(duì)開發(fā)團(tuán)隊(duì)有益。采用此方法學(xué)將提高驗(yàn)證效率,為一次投片成功提供更大可能。 此文章四部分提供了來源于《VMM for SystemVerilog》驗(yàn)證方法學(xué)以及驗(yàn)證庫(kù)介紹。 顯而易見的是接下來完整閱讀此書。事實(shí)上業(yè)界已經(jīng)認(rèn)可VMM方法:日文版已經(jīng)發(fā)行,與VMM相關(guān)書籍也已誕生,除Synopsys之外的幾個(gè)EDA廠家也提供相關(guān)練習(xí),甚至在California Extension Santa Cruz大學(xué)開展了VMM課程。提供了更多業(yè)界對(duì)VMM方法支持的信息。 《VMM for SystemVerilog》作者介紹: Thomas Anderson: Synopsys公司技術(shù)市場(chǎng)主管。職責(zé)包括:斷言,覆蓋率,形 式分析,RTL檢查。 獲得MIT電子工程和計(jì)算機(jī)科學(xué)碩士學(xué) 位以及Massachusetts大學(xué)計(jì)算機(jī)系統(tǒng)工程學(xué)士學(xué)位。 Janick Bergeron: Synopsys公司科學(xué)家。他是暢銷書《Writing Testbenches》的 作者。 獲得Waterloo大學(xué)電子工程碩士學(xué)位; Québec Chicoutimi大學(xué)電子工程學(xué)士學(xué)位;Oregon大學(xué)MBA學(xué)位。 Eduard Cerny: Synopsys公司驗(yàn)證組研發(fā)首席工程師。從事25年學(xué)術(shù)研究。 2001年加入Synopsys前,任職Montréal大學(xué)計(jì)算機(jī)科學(xué)教 授。 致力于設(shè)計(jì),驗(yàn)證,硬件測(cè)試。在這些領(lǐng)域發(fā)表大量文 章。 Alan Hunter: 工程學(xué)士,理學(xué)碩士。ARM公司設(shè)計(jì)驗(yàn)證方法學(xué)經(jīng)理。領(lǐng)導(dǎo) ARM公司全球設(shè)計(jì)驗(yàn)證方法學(xué)方面工作。涉及CPU從系統(tǒng) 到系統(tǒng)單元的設(shè)計(jì)驗(yàn)證。主要包括優(yōu)化設(shè)計(jì)驗(yàn)證效率,質(zhì) 量,形式方法,決定設(shè)計(jì)驗(yàn)證流程。 Andrew Nightingale: 工程學(xué)士,MBCS CITP。ARM公司顧問工程師。曾幾年中 領(lǐng)導(dǎo)ARM 公司Cambridge 和 Sheffield設(shè)計(jì)中心SoC驗(yàn)證 組。此小組涉及到ARM PrimeXsys 平臺(tái) 以及 Prime-Cell的開 發(fā)。 轉(zhuǎn)載請(qǐng)保留出處,http://www./doc/2783fe630b1c59eef8c7b4ab.html |
|