來(lái)源:汽車(chē)電子與軟件
前言
芯片的功能安全曾是非常小眾的領(lǐng)域,只有少數(shù)汽車(chē)、工業(yè)、航空航天和其他類(lèi)似市場(chǎng)的芯片與系統(tǒng)開(kāi)發(fā)商關(guān)注。然而,隨著汽車(chē)行業(yè)過(guò)去幾年各類(lèi)應(yīng)用的興起,情況已經(jīng)發(fā)生巨大變化。同時(shí),除了汽車(chē)外,還有很多其他行業(yè)也能從電子器件的增加受益,當(dāng)然保障功能安全是大的前提。本文討論SOC芯片設(shè)計(jì)驗(yàn)證、驗(yàn)證計(jì)劃和策略以及驗(yàn)證方法。它定義了功能模擬、功能覆蓋、代碼覆蓋以及設(shè)計(jì)驗(yàn)證中使用的重要術(shù)語(yǔ)。本文還涉及FPGA驗(yàn)證及其在SOC驗(yàn)證中的作用。
01、驗(yàn)證的重要性
由于開(kāi)發(fā)和制造成本過(guò)高,一次成功是SoC設(shè)計(jì)的首要要求。幾十年來(lái),人們一直致力于提高SoC驗(yàn)證的有效性和效率。評(píng)估驗(yàn)證有效性的最有效指標(biāo)是SoC設(shè)計(jì)通過(guò)現(xiàn)場(chǎng)測(cè)試的次數(shù)。除此之外,SoC設(shè)計(jì)越來(lái)越復(fù)雜,需要有效的驗(yàn)證方法來(lái)改善這些統(tǒng)計(jì)數(shù)據(jù)。這種對(duì)ASIC/SoC設(shè)計(jì)的有效驗(yàn)證的需求在2000年出現(xiàn),開(kāi)始設(shè)計(jì)許多創(chuàng)新的方法來(lái)驗(yàn)證SoC設(shè)計(jì),但仍有更多的空間。
SoC驗(yàn)證是用于確認(rèn)SoC設(shè)計(jì)的功能正確性的過(guò)程。典型的SoC設(shè)計(jì)周期(從規(guī)格開(kāi)始到設(shè)計(jì)流片)從六個(gè)月到三年不等,具體取決于技術(shù)、系統(tǒng)的復(fù)雜性以及SoC設(shè)計(jì)構(gòu)建模塊的可用性。制造過(guò)程、封裝、ATE測(cè)試和獲取工程樣品進(jìn)行現(xiàn)場(chǎng)驗(yàn)證(芯片交付給客戶進(jìn)行產(chǎn)品試驗(yàn))通常需要6個(gè)月的時(shí)間。因此,所有的SOC只有在工程樣品在確定的產(chǎn)品用例場(chǎng)景中被驗(yàn)證之后才可用于生產(chǎn)。如果這是成功的,SoC設(shè)計(jì)被考慮用于批量生產(chǎn)。這是設(shè)計(jì)的一次成功。開(kāi)發(fā)周期中任何一個(gè)步驟的失敗都會(huì)成倍地影響設(shè)計(jì)時(shí)間,有時(shí)需要新的金屬流片和設(shè)計(jì)修正。使設(shè)計(jì)一次成功的另一個(gè)驅(qū)動(dòng)因素是納米技術(shù)的制造成本。采用40納米CMOS FinFET技術(shù)的36平方毫米芯片設(shè)計(jì)的典型制造成本約為80萬(wàn)至100萬(wàn)美元。SoC工程樣品開(kāi)發(fā)期間產(chǎn)生的高額非經(jīng)常性工程(NRE)和制造成本將在大量生產(chǎn)中攤銷(xiāo)。因此,如果NRE要求對(duì)工程樣品進(jìn)行多次流片,那么它可能會(huì)對(duì)業(yè)務(wù)產(chǎn)生很大影響,在商業(yè)上根本不可行。因此,在片上系統(tǒng)開(kāi)發(fā)中,一次成功是絕對(duì)必要的。
SoC設(shè)計(jì)驗(yàn)證的可行性取決于在預(yù)硅階段確定系統(tǒng)的一組“最常見(jiàn)的用例場(chǎng)景”。這是一個(gè)非常復(fù)雜和具有挑戰(zhàn)性的現(xiàn)象,因?yàn)榭赡苡袩o(wú)數(shù)的用例場(chǎng)景。例如,人們可以很容易地想象智能手機(jī)移動(dòng)SoC的無(wú)數(shù)用例場(chǎng)景,其主要功能是通話電話。但是智能手機(jī)被用于許多應(yīng)用,例如發(fā)送信息、購(gòu)物、跟蹤人體健康、銀行和信息娛樂(lè)。將會(huì)有大量的應(yīng)用場(chǎng)景來(lái)測(cè)試和驗(yàn)證移動(dòng)SoC對(duì)這些應(yīng)用場(chǎng)景的設(shè)想來(lái)識(shí)別和驗(yàn)證它們。在開(kāi)發(fā)周期中,隨著設(shè)計(jì)從一個(gè)階段進(jìn)入下一個(gè)階段,調(diào)試SoC問(wèn)題的成本會(huì)增加10倍。也就是說(shuō),設(shè)計(jì)階段的驗(yàn)證成本比在晶片階段驗(yàn)證相同功能的成本低10倍,比在芯片階段驗(yàn)證的成本低10倍。這比在客戶現(xiàn)場(chǎng)進(jìn)行驗(yàn)證要便宜十分之一。這是因?yàn)榕c開(kāi)發(fā)的高級(jí)階段相比,設(shè)計(jì)人員在設(shè)計(jì)階段獲得了更高的調(diào)試權(quán)限和工具支持。因此,在預(yù)芯片階段,一組接近實(shí)際應(yīng)用用例的關(guān)鍵場(chǎng)景將被識(shí)別和瞄準(zhǔn),以獲得SoC首次成功的良好信心。SoC設(shè)計(jì)是通過(guò)集成不同類(lèi)型的設(shè)計(jì)模塊或IP核(軟、硬核)來(lái)完成的,這進(jìn)一步挑戰(zhàn)了設(shè)計(jì)驗(yàn)證。SoC設(shè)計(jì)過(guò)程還包括從RTL到網(wǎng)表再到布局結(jié)構(gòu)的一系列設(shè)計(jì)轉(zhuǎn)換,然后轉(zhuǎn)換為掩模數(shù)據(jù)。當(dāng)設(shè)計(jì)經(jīng)歷這些轉(zhuǎn)換時(shí),需要驗(yàn)證設(shè)計(jì)意圖在所有層次上都得到了保留,直到完成為止。
總而言之,驗(yàn)證對(duì)SoC設(shè)計(jì)如此重要的原因如下:
過(guò)高的制造成本要求首次成功,因?yàn)槎啻沃貜?fù)可能使其在商業(yè)上不可行。
隨著開(kāi)發(fā)周期中設(shè)計(jì)的進(jìn)展,驗(yàn)證成本增加10倍。因此,早期驗(yàn)證將增強(qiáng)首次獲得正確SoC設(shè)計(jì)的信心。
- 由于SoC設(shè)計(jì)涉及到使用EDA工具對(duì)數(shù)據(jù)庫(kù)進(jìn)行一系列轉(zhuǎn)換,因此有必要驗(yàn)證這些轉(zhuǎn)換是否正確實(shí)現(xiàn),這需要通過(guò)驗(yàn)證來(lái)完成。
02、驗(yàn)證計(jì)劃和策略
為了SoC設(shè)計(jì)的一次成功(當(dāng)它第一次被制造時(shí),SoC按預(yù)期工作),在設(shè)計(jì)階段采用許多驗(yàn)證方法是重要的。所使用的不同類(lèi)型的驗(yàn)證技術(shù)是基于仿真的驗(yàn)證、形式驗(yàn)證、時(shí)序驗(yàn)證、FPGA驗(yàn)證以及硬件仿真和驗(yàn)證。仿真驗(yàn)證是過(guò)去唯一采用的技術(shù)。但是隨著系統(tǒng)的日益復(fù)雜,有必要使用一切可能的方法來(lái)驗(yàn)證SoC設(shè)計(jì)。
很難定義完成設(shè)計(jì)驗(yàn)證的條件,因?yàn)閹缀醪豢赡苣MSoC設(shè)計(jì)的所有設(shè)計(jì)場(chǎng)景。考慮具有兩種狀態(tài)的單個(gè)觸發(fā)器的設(shè)計(jì)示例:測(cè)試觸發(fā)器所需的測(cè)試模式的數(shù)量是4,ARM Cortex M4內(nèi)核采用65納米技術(shù),具有65 K個(gè)門(mén),這些門(mén)可以有多個(gè)輸入輸出。為了簡(jiǎn)化討論,假設(shè)所有的門(mén)只有兩種狀態(tài),想象一下測(cè)試ARM cortex M4內(nèi)核所需的模式數(shù)量,將是65 × 1000 × 4 = 0.26萬(wàn)個(gè)圖案。僅僅模擬所有這些(不考慮從主要輸入-輸出訪問(wèn)它們的問(wèn)題,為它們中的每一個(gè)尋找測(cè)試模式,等等)在不同的設(shè)計(jì)階段實(shí)際上是不可能的。
在系統(tǒng)層面,識(shí)別所有場(chǎng)景也是非常具有挑戰(zhàn)性的。這可能是因?yàn)闊o(wú)法預(yù)測(cè)和可視化用例場(chǎng)景本身,或者可能是因?yàn)榄h(huán)境中需要更多的模型或模塊來(lái)實(shí)現(xiàn)它。它可以是完整的軟件堆棧,也可以是移植整個(gè)設(shè)計(jì)數(shù)據(jù)庫(kù)的硬件平臺(tái),或者是用于仿真的計(jì)算系統(tǒng)基礎(chǔ)設(shè)施。因此,需要將可實(shí)現(xiàn)的場(chǎng)景定義為驗(yàn)證測(cè)試環(huán)境和一組測(cè)試用例,作為預(yù)芯片驗(yàn)證的范圍。
這可以通過(guò)多種方式實(shí)現(xiàn):
自上而下的方法
自下而上的方法
平臺(tái)級(jí)驗(yàn)證
- 系統(tǒng)級(jí)或交易級(jí)驗(yàn)證(TLV)
自上而下的方法在這種方法中,SoC從接口層級(jí)的最高層開(kāi)始驗(yàn)證,然后繼續(xù)到層級(jí)的下一個(gè)較低層,直到最小的葉級(jí)設(shè)計(jì)元素被驗(yàn)證。傳統(tǒng)上,當(dāng)SoC設(shè)計(jì)有一個(gè)或兩個(gè)層次時(shí),這種方法被用作驗(yàn)證計(jì)劃。
自底向上的方法
這是設(shè)計(jì)驗(yàn)證中最常用的方法。它從驗(yàn)證較小的設(shè)計(jì)塊開(kāi)始;驗(yàn)證小塊是簡(jiǎn)單而實(shí)用的。此外,在塊級(jí)模擬中,查找錯(cuò)誤并修復(fù)它們更容易。這是因?yàn)樵谳^小的設(shè)計(jì)中更容易來(lái)回跟蹤信號(hào),以便在發(fā)現(xiàn)問(wèn)題時(shí)進(jìn)行調(diào)試。當(dāng)多個(gè)模塊被驗(yàn)證時(shí),它們被集成以形成芯片的頂層模塊,這由單獨(dú)的頂層測(cè)試設(shè)置來(lái)驗(yàn)證。例如,由UART內(nèi)核、USB內(nèi)核和協(xié)議總線接口內(nèi)核組成的SoC中的內(nèi)核首先逐個(gè)內(nèi)核進(jìn)行驗(yàn)證,然后在芯片頂層進(jìn)行驗(yàn)證。平臺(tái)級(jí)驗(yàn)證如果設(shè)計(jì)是基于標(biāo)準(zhǔn)的,如USB設(shè)備內(nèi)核,最好在安裝了標(biāo)準(zhǔn)對(duì)等設(shè)備(如USB主機(jī)設(shè)備)的標(biāo)準(zhǔn)平臺(tái)上進(jìn)行驗(yàn)證。同樣,SPI從內(nèi)核可以在帶有SPI主器件的平臺(tái)上進(jìn)行驗(yàn)證。這也將確認(rèn)互操作性問(wèn)題。基于系統(tǒng)接口級(jí)驗(yàn)證如果SoC基于協(xié)議,則需要通過(guò)監(jiān)控對(duì)事務(wù)的響應(yīng),使用標(biāo)準(zhǔn)驗(yàn)證IP(知識(shí)產(chǎn)權(quán))內(nèi)核構(gòu)建驗(yàn)證設(shè)置。例如,在具有WLAN接入點(diǎn)的環(huán)境中,通過(guò)觀察兩者之間的事務(wù)來(lái)驗(yàn)證Wi-Fi設(shè)備核心。WLAN接入點(diǎn)核心是經(jīng)過(guò)預(yù)先驗(yàn)證和確認(rèn)的標(biāo)準(zhǔn)參考驗(yàn)證IP。這也證明了制造時(shí)內(nèi)核的互操作性。
03、驗(yàn)證計(jì)劃
驗(yàn)證計(jì)劃是描述SoC設(shè)計(jì)驗(yàn)證計(jì)劃和流片標(biāo)準(zhǔn)的文檔。它解釋了如何計(jì)劃驗(yàn)證SoC設(shè)計(jì)的每個(gè)功能。它列出了模塊級(jí)和層次結(jié)構(gòu)頂層的驗(yàn)證目標(biāo)。它確定了必要的工具,如模擬器、波形查看器和用于驗(yàn)證的腳本。它明確提到了成功完成驗(yàn)證的覆蓋標(biāo)準(zhǔn),作為設(shè)計(jì)流片的完成標(biāo)準(zhǔn)。
與SoC設(shè)計(jì)相關(guān)的不同驗(yàn)證覆蓋有:
- 功能覆蓋
- 代碼覆蓋
- 有限狀態(tài)機(jī)(FSM)覆蓋
功能覆蓋通過(guò)編寫(xiě)測(cè)試用例并設(shè)置模擬要實(shí)現(xiàn)的正確設(shè)計(jì)響應(yīng)來(lái)量化要驗(yàn)證的功能數(shù)量。有一些工具可以通過(guò)測(cè)試用例以及功能(特性)列表來(lái)測(cè)量功能覆蓋率。由于識(shí)別功能并輸入到這些工具中是手動(dòng)完成的,所以為了獲得高覆蓋率,功能的數(shù)量可能會(huì)不足。
還有一個(gè)通常使用的參數(shù)叫做“代碼覆蓋率”,它決定了在RTL級(jí)別的設(shè)計(jì)數(shù)據(jù)庫(kù)上模擬的測(cè)試用例所覆蓋的RTL語(yǔ)句的數(shù)量。這有助于識(shí)別設(shè)計(jì)數(shù)據(jù)庫(kù)中的冗余代碼,并有助于代碼清理。
用于代碼覆蓋的工具也能夠給出測(cè)試用例所覆蓋的有限狀態(tài)機(jī)狀態(tài)。這是一個(gè)非常重要的措施,通過(guò)添加適當(dāng)?shù)臏y(cè)試用例來(lái)覆蓋所有的狀態(tài)轉(zhuǎn)換。設(shè)計(jì)驗(yàn)證范圍不僅用于評(píng)估一些公司的設(shè)計(jì)驗(yàn)證狀態(tài),還用于評(píng)估驗(yàn)證工程師的表現(xiàn)。
驗(yàn)證計(jì)劃文件根據(jù)設(shè)計(jì)范圍列出了設(shè)計(jì)驗(yàn)證完整性的標(biāo)準(zhǔn)。驗(yàn)證覆蓋率的剩余差距由其他驗(yàn)證技術(shù)填補(bǔ),如基于FPGA的驗(yàn)證、仿真技術(shù)以及在開(kāi)發(fā)板上測(cè)試SoC設(shè)計(jì)。例如,如果通過(guò)仿真實(shí)現(xiàn)的功能覆蓋率是98%,那么剩余的2%是通過(guò)將設(shè)計(jì)移植到FPGA上并在FPGA板上測(cè)試相關(guān)功能或任何其他適當(dāng)?shù)臏y(cè)試技術(shù)來(lái)實(shí)現(xiàn)的。這些方法可能需要板上和FPGA上的額外電路,以使其成為適合SoC設(shè)計(jì)功能驗(yàn)證的測(cè)試設(shè)置。它可能還需要在運(yùn)行的軟件或與之接口的系統(tǒng)。
驗(yàn)證計(jì)劃中包含的主要設(shè)計(jì)細(xì)節(jié)如下:
1. SoC設(shè)計(jì)首次成功的定義2. SoC的關(guān)鍵應(yīng)用場(chǎng)景。SoC測(cè)試對(duì)測(cè)試環(huán)境開(kāi)發(fā)的要求3. 功能驗(yàn)證環(huán)境和所需資源的開(kāi)發(fā)計(jì)劃4. 將在模塊級(jí)和設(shè)計(jì)層級(jí)的頂層驗(yàn)證的功能特性列表5. 區(qū)塊和頂層設(shè)計(jì)的主要驗(yàn)證策略6. 設(shè)計(jì)RTL級(jí)別的測(cè)試平臺(tái)模塊:
- 總線功能模塊(BFM)和總線監(jiān)視器
- 信號(hào)監(jiān)視器
- 驗(yàn)證參考模型
7. FPGA級(jí)驗(yàn)證詳情:
SoC驗(yàn)證對(duì)FPGA板的要求
FPGA驗(yàn)證平臺(tái)需要附加模塊
將根據(jù)這一要求開(kāi)發(fā)所需的軟件模塊、軟件開(kāi)發(fā)和調(diào)試平臺(tái)
8. 所需的驗(yàn)證工具和流程9. 對(duì)塊級(jí)仿真環(huán)境的要求10. 回歸測(cè)試環(huán)境和回歸測(cè)試計(jì)劃11. 確定驗(yàn)證完成的明確標(biāo)準(zhǔn),如目標(biāo)覆蓋率、回歸測(cè)試向量的數(shù)量,以及門(mén)級(jí)模擬策略和期望
設(shè)計(jì)資源包括驗(yàn)證工程師及其技能、硬件開(kāi)發(fā)板、FPGA板、軟件要求、EDA工具環(huán)境、(工作站和服務(wù)器)模擬器(許可證數(shù)量)以及用于驗(yàn)證的設(shè)計(jì)基礎(chǔ)設(shè)施。驗(yàn)證VLSI SoC的策略因SoC的設(shè)計(jì)復(fù)雜性和使用場(chǎng)景而異。
理想情況下,其目標(biāo)是使用RTL級(jí)測(cè)試平臺(tái)或FPGA驗(yàn)證計(jì)劃,或使用開(kāi)發(fā)板設(shè)置,或任意或全部組合,來(lái)仿真/模擬用例場(chǎng)景。使用這些資源,驗(yàn)證SoC設(shè)計(jì),以獲得預(yù)測(cè)其成功的高度信心。驗(yàn)證策略包括子模塊級(jí)驗(yàn)證的設(shè)計(jì)劃分和FPGA板上的芯片頂層驗(yàn)證。
04、功能驗(yàn)證
功能驗(yàn)證的目標(biāo)是確認(rèn)SoC設(shè)計(jì)在功能場(chǎng)景及其應(yīng)用場(chǎng)景中的預(yù)期功能。一個(gè)用例場(chǎng)景可以映射到一個(gè)或多個(gè)功能測(cè)試場(chǎng)景。例如,為了驗(yàn)證模塊的加法功能,可能有三種測(cè)試情況:第一種是驗(yàn)證輸入操作數(shù),第二種是驗(yàn)證與輸入相對(duì)應(yīng)的輸出結(jié)果,第三種是檢查加法器的進(jìn)位操作。基本上,SoC設(shè)計(jì)包含不同功能的多個(gè)塊,這些塊彼此互連和/或共享總線,多個(gè)塊在該總線上交互,或者一個(gè)塊按照標(biāo)準(zhǔn)協(xié)議運(yùn)行。在這種情況下,SoC的功能驗(yàn)證包括模擬(a)塊到塊接口驗(yàn)證,(b)總線爭(zhēng)用驗(yàn)證,以及(c)協(xié)議和符合性驗(yàn)證。
05、驗(yàn)證方法
有三種類(lèi)型的設(shè)計(jì)驗(yàn)證。它們是黑盒、白盒和灰盒驗(yàn)證。通過(guò)采用這些方法的不同組合來(lái)驗(yàn)證SoC設(shè)計(jì)。
黑盒驗(yàn)證
這是一種驗(yàn)證方法,其中設(shè)計(jì)實(shí)現(xiàn)的內(nèi)部細(xì)節(jié)不會(huì)暴露給驗(yàn)證。通過(guò)僅訪問(wèn)暴露的接口信號(hào)而不訪問(wèn)內(nèi)部狀態(tài)或信號(hào)來(lái)完成驗(yàn)證,從而使其實(shí)現(xiàn)獨(dú)立。顯然,驗(yàn)證對(duì)于設(shè)計(jì)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)或系統(tǒng)狀態(tài)是不可見(jiàn)的。這種方法最適合發(fā)現(xiàn)解釋級(jí)別的問(wèn)題,如字節(jié)序檢查、協(xié)議誤解和互操作性測(cè)試。
白盒驗(yàn)證
在這種驗(yàn)證方法中,測(cè)試平臺(tái)模塊可以訪問(wèn)設(shè)計(jì)的內(nèi)部狀態(tài)、信號(hào)和接口。在這種情況下,調(diào)試任何設(shè)計(jì)問(wèn)題都非常容易,因?yàn)闇y(cè)試平臺(tái)可以根據(jù)預(yù)期跟蹤信號(hào)驅(qū)動(dòng)器。這種方法最適合于檢查低層次的特定于實(shí)現(xiàn)的場(chǎng)景和設(shè)計(jì)角落,在那里他們可以針對(duì)具有潛在問(wèn)題的場(chǎng)景進(jìn)行設(shè)計(jì)并調(diào)試它們。這種情況的一個(gè)例子是FIFO指針?lè)D(zhuǎn)、計(jì)數(shù)器溢出等。在這種方法中,斷言最適合檢查內(nèi)部設(shè)計(jì)行為。這種方法完全是對(duì)黑盒驗(yàn)證方法的補(bǔ)充。
灰盒驗(yàn)證
這種方法介于黑盒和白盒驗(yàn)證技術(shù)之間。在這種方法中,測(cè)試環(huán)境在接口層驗(yàn)證系統(tǒng),在頂層驗(yàn)證IOs,并根據(jù)需要基本(如設(shè)計(jì)角)訪問(wèn)測(cè)試和調(diào)試的設(shè)計(jì)內(nèi)部。通常,第一級(jí)測(cè)試使用黑盒方法作為目標(biāo),并評(píng)估功能覆蓋率。為了提高覆蓋率,如果需要,通過(guò)白盒方法,測(cè)試場(chǎng)景被測(cè)試。
06、驗(yàn)證設(shè)計(jì)
隨著SoC設(shè)計(jì)方法向系統(tǒng)級(jí)或架構(gòu)級(jí)發(fā)展,在跨子系統(tǒng)的事務(wù)級(jí)驗(yàn)證系統(tǒng)功能至關(guān)重要。然而,SoC設(shè)計(jì)主要是集成預(yù)先設(shè)計(jì)或預(yù)先驗(yàn)證的IP核,這更像是內(nèi)部IP的黑盒驗(yàn)證。此外,復(fù)雜的SoC設(shè)計(jì)正趨向于驗(yàn)證友好,其中內(nèi)部狀態(tài)和關(guān)鍵信號(hào)被鎖存,并可供軟件通過(guò)主接口讀取,從而預(yù)測(cè)問(wèn)題的根本原因。這在“黑盒”或“灰盒”驗(yàn)證中很有用。功能驗(yàn)證在不同的環(huán)境中以不同的方式進(jìn)行。在RTL級(jí)別,開(kāi)發(fā)了測(cè)試平臺(tái)和一組測(cè)試用例,并使用模擬器進(jìn)行模擬,以查看SoC是否按預(yù)期運(yùn)行。通過(guò)觀察接口或模塊/塊級(jí)輸入和輸出的波形來(lái)檢查功能正確性。
在基于FPGA的硬件驗(yàn)證中,將RTL形式的待測(cè)設(shè)計(jì)移植到板上的FPGA,運(yùn)行有限的軟件,將實(shí)際激勵(lì)饋入SoC輸入,并在開(kāi)發(fā)環(huán)境中觀察輸出。
在開(kāi)發(fā)環(huán)境上,基于子模塊的開(kāi)發(fā)平臺(tái)設(shè)計(jì)開(kāi)發(fā)了與最終SoC接近的接口,并用一些更復(fù)雜的軟件進(jìn)行了驗(yàn)證。
RTL級(jí)別的測(cè)試環(huán)境或測(cè)試臺(tái)代表SoC最有可能使用的環(huán)境。所有的環(huán)境都被開(kāi)發(fā)來(lái)接受盡可能接近真實(shí)世界輸入的刺激。典型的RTL試驗(yàn)環(huán)境(也稱為試驗(yàn)臺(tái))是一個(gè)封閉的系統(tǒng),因?yàn)樗砹艘粋€(gè)完整的環(huán)境,包括通過(guò)行為總線功能模型(BFM)的輸入刺激和輸出控制。
外圍模塊
這些模塊是在應(yīng)用環(huán)境中完成SoC驗(yàn)證所需的支持模塊。它們是外圍功能的驗(yàn)證IP或IP,如外部存儲(chǔ)器、數(shù)據(jù)轉(zhuǎn)換器和實(shí)時(shí)傳感器模型。輸入激勵(lì)和公共功能模型(BFM)輸入激勵(lì)代表在實(shí)際應(yīng)用場(chǎng)景中被驗(yàn)證的SoC從外部世界饋入的輸入信號(hào)。它可以是系統(tǒng)設(shè)計(jì)信號(hào),如來(lái)自參考晶振的時(shí)鐘、復(fù)位信號(hào)、傳感器輸入或來(lái)自SoC外部模塊或驗(yàn)證IP的數(shù)據(jù)輸入。SoC所需的來(lái)自不同源的激勵(lì)的產(chǎn)生是自動(dòng)的(當(dāng)參考時(shí)鐘被饋送到PLL模塊時(shí),它自動(dòng)產(chǎn)生SoC所需頻率的系統(tǒng)時(shí)鐘,如所配置的)或半自動(dòng)的,具有手動(dòng)觸發(fā)或有條件的。它們通過(guò)接口饋入SoC設(shè)計(jì),通過(guò)總線功能模型(BFM)遵循設(shè)計(jì)的時(shí)序要求。
輸出BFM
該輸出BFM通過(guò)其輸出接口捕捉特定激勵(lì)輸入時(shí)SoC的響應(yīng)。將響應(yīng)進(jìn)行比較并寫(xiě)入文件,以便與預(yù)期輸出進(jìn)行比較,或者實(shí)時(shí)檢查預(yù)期。該模塊或者是具有文件比較功能的檢查器,或者是波形數(shù)據(jù)庫(kù)發(fā)生器,而SoC設(shè)計(jì)通過(guò)測(cè)試輸入條件受到特定場(chǎng)景的影響,設(shè)計(jì)人員在圖形查看器上查看這些輸入條件并判斷其正確性。
連續(xù)監(jiān)視器
這些是環(huán)境中的附加檢查點(diǎn),它們是SoC正常運(yùn)行的指示器。例如,在產(chǎn)生1-s時(shí)鐘的定時(shí)器SoC中,很容易連續(xù)監(jiān)控1-ms信號(hào),該信號(hào)預(yù)計(jì)會(huì)連續(xù)滴答以產(chǎn)生1-s時(shí)鐘。在測(cè)試環(huán)境中,測(cè)試塊是非常模塊化的,結(jié)果被自動(dòng)檢查,并作出通過(guò)/失敗的決定,因此它們是自動(dòng)化友好的。測(cè)試環(huán)境能夠分析功能、代碼和FSM覆蓋率的設(shè)計(jì)。
測(cè)試環(huán)境模塊的簡(jiǎn)要描述如下。SoC DUT
SoC DUT是待驗(yàn)證的測(cè)試中的SoC設(shè)計(jì)。
設(shè)計(jì)和驗(yàn)證斷言
測(cè)試中的設(shè)計(jì)和驗(yàn)證測(cè)試環(huán)境可以有斷言來(lái)提高驗(yàn)證的有效性。斷言是用于檢查設(shè)計(jì)中同步信號(hào)的時(shí)間關(guān)系以確保模塊正確運(yùn)行的語(yǔ)句。設(shè)計(jì)斷言,如果被支持,由測(cè)試工作臺(tái)檢查器模塊跟蹤,以查看它是否已經(jīng)被觸發(fā),并且被評(píng)估正確性。例如,考慮邏輯設(shè)計(jì)的一部分,其中功能是檢查接收的分組是否正確,并且接收的分組由packet_valid信號(hào)驗(yàn)證。顯而易見(jiàn),每當(dāng)產(chǎn)生packet_correct或packet_error信號(hào)時(shí),packet_valid信號(hào)應(yīng)被設(shè)置為高電平。在這種情況下,寫(xiě)一個(gè)檢查packet_error和packet_valid或packet_correct和packet valid信號(hào)同時(shí)出現(xiàn)的設(shè)計(jì)斷言是有意義的,如果觸發(fā)了該斷言,則可以驗(yàn)證設(shè)計(jì)意圖。在所示的例子中,設(shè)計(jì)斷言被寫(xiě)入以查看packet_valid和packet_correct或packet_valid和packet_error信號(hào)是否不同時(shí)出現(xiàn)。如果這個(gè)斷言被觸發(fā),那么這個(gè)設(shè)計(jì)就是有缺陷的。
可以在DUT事務(wù)的事務(wù)級(jí)別編寫(xiě)類(lèi)似的斷言,并對(duì)設(shè)計(jì)的正確性進(jìn)行跟蹤。
時(shí)鐘/復(fù)位模塊
時(shí)鐘復(fù)位模塊根據(jù)SoC設(shè)計(jì)的要求產(chǎn)生所需的時(shí)鐘和復(fù)位信號(hào)。
配置該模塊將DUT和測(cè)試臺(tái)設(shè)置為需要測(cè)試DUT的配置。
激勵(lì)發(fā)生器
該模塊在測(cè)試臺(tái)中產(chǎn)生輸入激勵(lì)。通常,該模塊根據(jù)SoC功能以所需的順序和次序產(chǎn)生信號(hào)。這可能是一個(gè)復(fù)雜的IP驗(yàn)證。
總線功能模塊(BFM)
總線功能模塊遵循接口規(guī)范向SoC DUT提供激勵(lì)。總線接口有多少,BFM就有多少。如果SoC設(shè)計(jì)支持UART、USB和PCI Express接口,則應(yīng)該有一個(gè)對(duì)應(yīng)于這些接口的BFMs來(lái)管理符合這些協(xié)議的事務(wù)。
郵筒
這些是系統(tǒng)Verilog測(cè)試平臺(tái)中的通信機(jī)制,允許在進(jìn)程之間交換消息。希望與另一個(gè)進(jìn)程對(duì)話的進(jìn)程將消息發(fā)送到mailbox,mailbox將消息臨時(shí)存儲(chǔ)在系統(tǒng)定義的內(nèi)存對(duì)象中,然后將消息傳遞給所需的進(jìn)程。創(chuàng)建的郵箱具有綁定或未綁定的隊(duì)列大小。當(dāng)綁定郵箱包含的郵件達(dá)到定義的最大數(shù)量時(shí),該郵箱就會(huì)變滿。試圖將郵件放入已滿郵箱的進(jìn)程應(yīng)被掛起,直到郵箱隊(duì)列中有足夠的可用空間。基本上,郵箱是一種同步不同進(jìn)程技術(shù)。該過(guò)程可以是checker,如本例所示。一旦郵箱有了一組預(yù)定義的消息,它們就可以啟動(dòng)一個(gè)檢查器來(lái)檢查內(nèi)容并判斷其正確性。
棋子
Checker檢查所有過(guò)程,如將DUT響應(yīng)與預(yù)期、斷言和監(jiān)視器進(jìn)行比較,以決定測(cè)試場(chǎng)景的通過(guò)/失敗標(biāo)準(zhǔn)。
測(cè)試程序接口(TPI)
這是用戶界面,它接受用戶輸入作為參數(shù),并編譯選項(xiàng)來(lái)觸發(fā)測(cè)試場(chǎng)景和執(zhí)行模擬。TPI支持許多帶有可選參數(shù)的命令,以在測(cè)試場(chǎng)景中逐個(gè)執(zhí)行模擬,并生成合并的結(jié)果。這被稱為回歸測(cè)試。
07、驗(yàn)證示例
在本節(jié)中,我們將介紹一個(gè)簡(jiǎn)單的十進(jìn)制計(jì)數(shù)器設(shè)計(jì)的仿真,以便更好地理解驗(yàn)證過(guò)程。
十進(jìn)制計(jì)數(shù)器的設(shè)計(jì)功能:十進(jìn)制計(jì)數(shù)器在時(shí)鐘的每個(gè)有效邊沿計(jì)數(shù)數(shù)字0、1、2、3、4、5、6、7、8、9、0。設(shè)計(jì)要求每當(dāng)計(jì)數(shù)器計(jì)數(shù)到5時(shí)就產(chǎn)生一個(gè)輸出信號(hào)。
設(shè)計(jì)文件保存為decade-counter.v,測(cè)試臺(tái)文件保存為tb_dcounter.v(。v代表Verilog文件)。為了模擬設(shè)計(jì)文件,使用了模擬器。大多數(shù)使用的模擬器是基于循環(huán)的模擬器。基于周期的仿真器對(duì)信號(hào)進(jìn)行采樣,并在每個(gè)時(shí)鐘周期計(jì)算設(shè)計(jì)響應(yīng)。模擬器首先分析RTL代碼,并在模擬設(shè)計(jì)之前進(jìn)行闡述。
執(zhí)行模擬時(shí),觀察終端上顯示的錯(cuò)誤和警告日志消息。如果有任何錯(cuò)誤/警告,需要在設(shè)計(jì)文件中糾正它們。對(duì)于設(shè)計(jì)示例中的模塊,不應(yīng)該有任何警告或錯(cuò)誤,模擬會(huì)成功終止。如果您在當(dāng)前的工作目錄中觀察,會(huì)發(fā)現(xiàn)模擬運(yùn)行生成了許多輸出文件。它們是命令日志文件、名為decade_counter.vcd的波形轉(zhuǎn)儲(chǔ)文件。decade_counter.vcd文件可以用波形查看器工具打開(kāi)。當(dāng)在波形查看器工具中打開(kāi)該文件時(shí),可以觀察到輸入輸出信號(hào)和內(nèi)部網(wǎng)絡(luò)的邏輯狀態(tài)變化。有關(guān)運(yùn)行仿真和使用波形查看器工具的更多信息,可以參考相應(yīng)的用戶手冊(cè)。通過(guò)觀察設(shè)計(jì)信號(hào)clock,reset_n和out_5,count_out來(lái)驗(yàn)證設(shè)計(jì)行為。
驗(yàn)證流程可以擴(kuò)展到任何復(fù)雜程度的設(shè)計(jì)。本節(jié)中解釋的下一個(gè)設(shè)計(jì)示例演示了這一點(diǎn)。闡述了利用擾碼器設(shè)計(jì)作為驗(yàn)證IP的自同步解擾器在測(cè)試平臺(tái)上的驗(yàn)證。考慮多項(xiàng)式g(x) = 1 + x13 + x33的自同步擾頻器的設(shè)計(jì)。如果輸入數(shù)據(jù)是具有零DC偏移的0或1的長(zhǎng)序列,則在通信中使用自同步加擾器模塊來(lái)加擾輸入數(shù)據(jù)。在發(fā)送器使用相同的多項(xiàng)式對(duì)數(shù)據(jù)進(jìn)行加擾,并在接收器端使用相同的多項(xiàng)式對(duì)數(shù)據(jù)進(jìn)行解擾以恢復(fù)發(fā)送的原始數(shù)據(jù)。自同步解擾器中解擾器的功能屬性,因?yàn)樗恍枰沙跏蓟蛄砍跏蓟瘉?lái)實(shí)現(xiàn)同步。
加擾器-解擾器的同步被定義為加擾器和解擾器的LFSRs保持相同的模式,因此,當(dāng)數(shù)據(jù)被饋送到解擾器時(shí),它可以生成加擾器數(shù)據(jù)的輸入。
被測(cè)模塊是解擾器。為了測(cè)試解擾器是否與加擾器同步,需要將解擾器LFSR重置為任何初始值。隨機(jī)模式通過(guò)加擾器輸入,加擾后的數(shù)據(jù)作為輸入激勵(lì)輸入解擾器。將驗(yàn)證解擾器在某個(gè)時(shí)間點(diǎn)將能夠解碼輸入的數(shù)據(jù)。您可能會(huì)注意到,測(cè)試平臺(tái)沒(méi)有任何端口,因?yàn)檫@將是一個(gè)獨(dú)立的測(cè)試模塊環(huán)境。
試驗(yàn)臺(tái)由以下部分組成:
測(cè)試平臺(tái)的第一部分是激勵(lì)產(chǎn)生,包括時(shí)鐘、復(fù)位、使能和數(shù)據(jù)產(chǎn)生。
第二部分是加擾器模塊,用作標(biāo)準(zhǔn)驗(yàn)證IP。
第三部分是模塊實(shí)例化。
- 第四部分是輸出讀取器和波形轉(zhuǎn)儲(chǔ),用于調(diào)試和用戶驗(yàn)證。
一個(gè)典型的SoC測(cè)試平臺(tái)將具有多個(gè)時(shí)鐘(OCC)生成模塊和標(biāo)準(zhǔn)PLL、多個(gè)所需的VIP,以及控制狀態(tài)機(jī),這些狀態(tài)機(jī)將使這些模塊中的每一個(gè)能夠用于多種測(cè)試場(chǎng)景。輸出讀取器和波形轉(zhuǎn)儲(chǔ)部分可以是復(fù)雜的模塊,可以根據(jù)SoC驗(yàn)證要求自動(dòng)驗(yàn)證功能的正確性。
08、驗(yàn)證工具
有許多驗(yàn)證工具可用于SoC設(shè)計(jì)的功能驗(yàn)證。
它們是 : 1. 模擬器
2. 覆蓋工具
在上面列出的工具中,模擬器對(duì)于RTL功能驗(yàn)證是必不可少的。模擬器是一種工具,通過(guò)在測(cè)試平臺(tái)中使用測(cè)試向量來(lái)理解大多數(shù)預(yù)期用例場(chǎng)景中的設(shè)計(jì)行為。它是一個(gè)軟件,能夠在用戶提供刺激的情況下,在要求的持續(xù)時(shí)間內(nèi)研究SoC設(shè)計(jì)狀態(tài)及其輸出,稱為測(cè)試向量。有不同類(lèi)型的模擬器。它們是基于周期的模擬器、基于事件的模擬器和電路模擬器。要模擬的SoC設(shè)計(jì)稱為被測(cè)器件。模擬器使用測(cè)試平臺(tái)中的某些命令,可以在模擬期間監(jiān)控和寫(xiě)出內(nèi)部邏輯電平、設(shè)計(jì)模塊中的信號(hào)狀態(tài)和輸入輸出。然后,在與圖形調(diào)試環(huán)境交互的波形查看器工具中打開(kāi)該波形輸出文件。基于SoC設(shè)計(jì)的類(lèi)型,使用不同的仿真器進(jìn)行驗(yàn)證。基于周期和基于事件的模擬器是數(shù)字模擬器。大多數(shù)用于數(shù)字模擬的模擬器是基于循環(huán)的模擬器。基于周期的仿真器在每個(gè)周期評(píng)估設(shè)計(jì)的邏輯狀態(tài)。模擬器周期為皮秒或納秒量級(jí),以便為用戶虛擬仿真硬件的并發(fā)行為。上述模擬器都是基于循環(huán)的模擬器。它們被稱為周期精確仿真器,因?yàn)樗鼈冊(cè)跁r(shí)鐘信號(hào)的輸入邊沿對(duì)SoC設(shè)計(jì)進(jìn)行采樣。基于周期的模擬器比基于事件的模擬器快10-100倍,用于大多數(shù)SoC設(shè)計(jì)驗(yàn)證。使用基于周期的模擬器的設(shè)計(jì)驗(yàn)證需要STA分析,因?yàn)樵O(shè)計(jì)是以時(shí)鐘間隔驗(yàn)證的。
每當(dāng)電路中的任何網(wǎng)絡(luò)上發(fā)生邏輯變化時(shí),基于事件的仿真器評(píng)估設(shè)計(jì)。這些模擬器也稱為定時(shí)精確模擬器,適用于小電路級(jí)驗(yàn)證。它們提供了良好的調(diào)試環(huán)境,并且也不需要時(shí)序分析,因?yàn)樵谠O(shè)計(jì)中的所有節(jié)點(diǎn)上的所有事件中,設(shè)計(jì)都被功能性地驗(yàn)證。基于事件的模擬器需要運(yùn)行模擬的大型計(jì)算機(jī)器。這是因?yàn)楫?dāng)今SoC設(shè)計(jì)中的網(wǎng)絡(luò)數(shù)量激增,在仿真過(guò)程中會(huì)有大量的邏輯轉(zhuǎn)換。監(jiān)控網(wǎng)絡(luò)上的大量邏輯轉(zhuǎn)換并評(píng)估它們的所有組合實(shí)際上是不可能的。在這樣的設(shè)計(jì)中調(diào)試故障是非常困難的。
當(dāng)今的SoC設(shè)計(jì)包括模擬模塊,也需要對(duì)其進(jìn)行驗(yàn)證。使用模擬仿真器單獨(dú)驗(yàn)證模擬模塊。模擬仿真器使用數(shù)學(xué)模型來(lái)表示設(shè)計(jì)的模擬功能。它們通過(guò)檢測(cè)并產(chǎn)生對(duì)設(shè)計(jì)的適當(dāng)響應(yīng)來(lái)模擬模擬功能。很少有模擬和混合信號(hào)模擬器可用。
模擬器通常非常慢,并且不是自動(dòng)化的。它們要求設(shè)計(jì)師很好地理解設(shè)計(jì),并使用工具作為分析設(shè)計(jì)的輔助。因此,模擬模塊的詳細(xì)驗(yàn)證是單獨(dú)進(jìn)行的,然后進(jìn)行模擬-數(shù)字混合信號(hào)仿真,只是為了在實(shí)踐中驗(yàn)證集成。另一個(gè)用于驗(yàn)證模擬過(guò)程或模塊的重要工具是提取覆蓋率分析器。覆蓋矩陣提供了對(duì)設(shè)計(jì)數(shù)據(jù)庫(kù)驗(yàn)證的質(zhì)量或完整性的洞察。有三種類(lèi)型的覆蓋:功能覆蓋、代碼覆蓋和狀態(tài)機(jī)覆蓋。通過(guò)比較和分析在SoC設(shè)計(jì)數(shù)據(jù)庫(kù)上運(yùn)行的測(cè)試用例以及SoC設(shè)計(jì)的功能特征清單來(lái)獲得功能覆蓋。代碼覆蓋率是在SoC設(shè)計(jì)上運(yùn)行仿真以跟蹤設(shè)計(jì)中被激發(fā)的代碼行時(shí)提取的指標(biāo)。由于模擬運(yùn)行中的測(cè)試情況,狀態(tài)機(jī)覆蓋范圍給出了設(shè)計(jì)FSM中狀態(tài)轉(zhuǎn)換的信息。所有這些矩陣都有助于驗(yàn)證工程師最大化覆蓋度量,從而達(dá)到設(shè)計(jì)驗(yàn)證目標(biāo)。
除了HDL語(yǔ)言的基本語(yǔ)法和語(yǔ)義之外,Lint工具還根據(jù)為不同目標(biāo)設(shè)置的規(guī)則,在RTL級(jí)別檢查SoC設(shè)計(jì)。這是一個(gè)靜態(tài)的RTL代碼檢查器。它通過(guò)編譯設(shè)計(jì)并為仿真、綜合和DFT仿真對(duì)其進(jìn)行預(yù)處理來(lái)進(jìn)行檢查。運(yùn)行l(wèi)int的不同設(shè)計(jì)目標(biāo)是針對(duì)仿真、可綜合性和可測(cè)試性的RTL設(shè)計(jì)的基本編譯。工具為每個(gè)目標(biāo)定義了標(biāo)準(zhǔn)規(guī)則。這些規(guī)則集中的每一個(gè)都可以針對(duì)SoC特定的設(shè)計(jì)目標(biāo)進(jìn)行定制或增強(qiáng)。當(dāng)在設(shè)計(jì)文件上執(zhí)行時(shí),這些工具會(huì)寫(xiě)出日志文件,根據(jù)定義的規(guī)則對(duì)設(shè)計(jì)進(jìn)行詳細(xì)分析,并根據(jù)違規(guī)的嚴(yán)重程度對(duì)違規(guī)發(fā)出警告和錯(cuò)誤警報(bào)。nLint和HAL是設(shè)計(jì)中心使用的少數(shù)幾種已知驗(yàn)證工具中的兩種。
09、驗(yàn)證語(yǔ)言
與設(shè)計(jì)語(yǔ)言相比,用于建模測(cè)試平臺(tái)或測(cè)試用例的語(yǔ)言更加寬松和靈活。這種靈活性的主要原因是需要在測(cè)試用例中創(chuàng)建更多的隨機(jī)性,并且這不需要是可合成的。Verilog是最古老的HDL之一,也是驗(yàn)證語(yǔ)言。由于設(shè)計(jì)描述方法在體系結(jié)構(gòu)級(jí)別上升到更高的抽象級(jí)別,一些驗(yàn)證語(yǔ)言,如SystemVerilog、Vera和System C,正在成為更高抽象層的主要硬件驗(yàn)證語(yǔ)言(hvl)。這些語(yǔ)言支持類(lèi)、面向?qū)ο蟆㈩?lèi)擴(kuò)展和時(shí)態(tài)屬性,這有助于輕松定義系統(tǒng)級(jí)或事務(wù)級(jí)測(cè)試功能。在提到的語(yǔ)言中,SystemVerilog作為一種強(qiáng)大的斷言語(yǔ)言也越來(lái)越受歡迎,這是驗(yàn)證中的一個(gè)主要特性。但它也提供了一些構(gòu)造,旨在確保合成和模擬之間的結(jié)果一致。此外,還有支持這些語(yǔ)言結(jié)構(gòu)的模擬工具,可以解釋結(jié)果,并根據(jù)測(cè)試覆蓋率進(jìn)行分析。它們支持諸如直接編程接口(DPI)之類(lèi)的接口到諸如C++和Java之類(lèi)的高級(jí)軟件語(yǔ)言,這使得能夠構(gòu)建圖形用戶界面(GUI ),該圖形用戶界面可以使得驗(yàn)證環(huán)境在更高的抽象級(jí)別上更通用和有效,直到層級(jí)的系統(tǒng)級(jí)別。這些的更多細(xì)節(jié)可以在參考文獻(xiàn)中提到的語(yǔ)言書(shū)籍中找到。模擬器工具現(xiàn)在足夠智能,可以忽略設(shè)計(jì)人員犯下的常見(jiàn)錯(cuò)誤,并可以通過(guò)通知用戶警告來(lái)自行糾正錯(cuò)誤。
10、自動(dòng)化腳本
為SoC創(chuàng)建用例場(chǎng)景是通過(guò)一組具有隨機(jī)刺激的復(fù)雜測(cè)試用例來(lái)實(shí)現(xiàn)的,因?yàn)閷?shí)時(shí)場(chǎng)景是隨機(jī)的。當(dāng)刺激是隨機(jī)的,對(duì)這種刺激的反應(yīng)變得難以預(yù)測(cè)。因此,測(cè)試通常在這種情況下通過(guò)預(yù)測(cè)最終結(jié)果或狀態(tài)或分析系統(tǒng)的統(tǒng)計(jì)數(shù)據(jù)和穩(wěn)定性來(lái)進(jìn)行,并且也在可預(yù)測(cè)的系統(tǒng)中間狀態(tài)進(jìn)行。這需要輸入隨機(jī)性和系統(tǒng)狀態(tài)的某種一致性,它們或多或少都在變化。為了映射出這種對(duì)應(yīng)關(guān)系,測(cè)試用例是自動(dòng)化的。自動(dòng)化意味著測(cè)試期望,比如數(shù)據(jù)完整性、狀態(tài),以及將控制移交給下一個(gè)隨機(jī)場(chǎng)景,被自動(dòng)控制和評(píng)估。這是通過(guò)腳本語(yǔ)言實(shí)現(xiàn)的。最常用的腳本語(yǔ)言有Perl、Tcl、PHP等。因此,腳本語(yǔ)言是為特殊的運(yùn)行時(shí)環(huán)境編寫(xiě)的編程語(yǔ)言,這些運(yùn)行時(shí)環(huán)境自動(dòng)執(zhí)行原本可以由用戶一個(gè)接一個(gè)執(zhí)行的任務(wù)。EDA工具也理解這些結(jié)構(gòu),因此可以集成到測(cè)試設(shè)置中。自動(dòng)化也用于分析大數(shù)據(jù)的完整性檢查、統(tǒng)計(jì)分析,并批量運(yùn)行測(cè)試用例以獲得期望的功能覆蓋。測(cè)試腳本是被解釋的,而不是編譯的。
11、設(shè)計(jì)驗(yàn)證
設(shè)計(jì)驗(yàn)證通過(guò)發(fā)現(xiàn)系統(tǒng)設(shè)計(jì)和架構(gòu)中的潛在錯(cuò)誤來(lái)保證設(shè)計(jì)質(zhì)量。只有盡可能詳盡地模擬系統(tǒng)的所有功能,同時(shí)仔細(xì)研究任何可能的錯(cuò)誤行為,才有可能做到這一點(diǎn)。這值得花費(fèi)最多的時(shí)間、注意力和完整的設(shè)計(jì)用例知識(shí)。在大多數(shù)情況下,如果設(shè)計(jì)很復(fù)雜,這可能會(huì)變得非常具有挑戰(zhàn)性。這要求設(shè)計(jì)是可驗(yàn)證的。設(shè)計(jì)師對(duì)功能的設(shè)計(jì)實(shí)現(xiàn)有完整的理解。如果設(shè)計(jì)者確定了設(shè)計(jì)的關(guān)鍵設(shè)計(jì)角和關(guān)鍵狀態(tài),則驗(yàn)證可以有針對(duì)性地監(jiān)控和檢查它們。有時(shí)在設(shè)計(jì)中,某些場(chǎng)景可能需要長(zhǎng)時(shí)間的模擬運(yùn)行來(lái)達(dá)到設(shè)計(jì)的極限,而驗(yàn)證工程師可能不知道這一點(diǎn)。一個(gè)簡(jiǎn)單的例子是32位計(jì)數(shù)器的溢出生成,它運(yùn)行在一秒鐘的時(shí)鐘上。這需要很長(zhǎng)時(shí)間來(lái)模擬,但在實(shí)際硬件中可能會(huì)很快發(fā)生。在這種情況下,如果設(shè)計(jì)人員提供預(yù)加載計(jì)數(shù)器的功能,32位計(jì)數(shù)器溢出是可行的。這樣的設(shè)計(jì)調(diào)整使得設(shè)計(jì)可以在更多的場(chǎng)景中得到驗(yàn)證。設(shè)計(jì)師必須確定可以驗(yàn)證的關(guān)鍵設(shè)計(jì)角。此外,系統(tǒng)的非功能特性,如可伸縮性、可擴(kuò)展性和靈活性,需要額外的設(shè)計(jì)支持來(lái)驗(yàn)證。這樣的例子是存儲(chǔ)器地址擴(kuò)展、以非默認(rèn)模式通過(guò)軟件寫(xiě)入寄存器或存儲(chǔ)器的訪問(wèn)、作為可能的錯(cuò)誤解釋問(wèn)題(例如小端或大端)的替代提供的額外配置等。
12、驗(yàn)證中的斷言
在設(shè)計(jì)中實(shí)現(xiàn)斷言需要有意識(shí)地決定以不同的方式來(lái)看待設(shè)計(jì)過(guò)程。這是一個(gè)附加的設(shè)計(jì)和驗(yàn)證聲明,用于監(jiān)控這部分設(shè)計(jì)的正確性。斷言肯定會(huì)減少調(diào)試時(shí)間和工作量。斷言本質(zhì)上充當(dāng)模擬期間的早期警告,可以查明可能直接導(dǎo)致測(cè)試失敗或者未被通過(guò)的測(cè)試檢測(cè)到的故障。模塊接口上的斷言可以快速識(shí)別可能由行為模型或設(shè)計(jì)的不當(dāng)使用(無(wú)效寄存器設(shè)置、無(wú)效操作模式等)引起的無(wú)效行為。).這種斷言失敗表明測(cè)試平臺(tái)可能存在問(wèn)題,這有助于驗(yàn)證工程師修復(fù)測(cè)試平臺(tái)中的問(wèn)題。它有助于解決設(shè)計(jì)中的問(wèn)題。設(shè)計(jì)斷言通過(guò)查看失敗所顯示的不正確的功能來(lái)幫助定位失敗的根本原因。例如,約束隨機(jī)模擬檢測(cè)FIFO操作的溢出和下溢處的設(shè)計(jì)角處的設(shè)計(jì)問(wèn)題,這些問(wèn)題通常不是定向測(cè)試的目標(biāo)。FIFO接口信號(hào)上的簡(jiǎn)單斷言檢測(cè)同時(shí)的讀和寫(xiě)操作、讀的數(shù)量超過(guò)寫(xiě)的數(shù)量等。將有助于在測(cè)試場(chǎng)景中找到實(shí)際失敗的根本原因,而無(wú)需冗長(zhǎng)的調(diào)試會(huì)話。斷言更大的優(yōu)勢(shì)在于,它通過(guò)保留設(shè)計(jì)和驗(yàn)證所有者之外的設(shè)計(jì)意圖,使設(shè)計(jì)和驗(yàn)證測(cè)試平臺(tái)可重用。
13、驗(yàn)證重用和驗(yàn)證IP
就像可重復(fù)使用的設(shè)計(jì)模塊一樣,驗(yàn)證模塊也可以在各代SoC設(shè)計(jì)中重復(fù)使用。由于多個(gè)接口協(xié)議模塊是SoC的一部分,如一些具有多個(gè)USB內(nèi)核、多個(gè)SPI內(nèi)核和多個(gè)UART內(nèi)核的SoC,相應(yīng)的測(cè)試模塊可以在測(cè)試臺(tái)中重用。測(cè)試平臺(tái)中的總線接口模塊(BFM)和接口內(nèi)核甚至可以用來(lái)驗(yàn)證具有相同功能的SOC的數(shù)量。這也將解決上市時(shí)間縮短和設(shè)計(jì)生產(chǎn)率差距的問(wèn)題。隨著SoC功能變得越來(lái)越復(fù)雜,許多集成內(nèi)核符合許多標(biāo)準(zhǔn)并需要具有互操作性,在過(guò)去幾十年中,這些模塊被開(kāi)發(fā)為參考模型,以確保符合標(biāo)準(zhǔn)規(guī)范。這些被稱為驗(yàn)證IP。這些都經(jīng)過(guò)預(yù)先驗(yàn)證或認(rèn)證,符合標(biāo)準(zhǔn)或協(xié)議規(guī)范。這些可以被許可,或者從知識(shí)產(chǎn)權(quán)開(kāi)發(fā)者那里購(gòu)買(mǎi)。這些VIP作為標(biāo)準(zhǔn)IP集成到測(cè)試環(huán)境中,SoC根據(jù)驗(yàn)證IP進(jìn)行測(cè)試,以證明合規(guī)性和互操作性。驗(yàn)證IP的重用是SoC驗(yàn)證中的常見(jiàn)做法
14、通用驗(yàn)證方法(UVM)
通用驗(yàn)證方法(UVM)是一種行業(yè)標(biāo)準(zhǔn)驗(yàn)證方法,用于定義、重用和改進(jìn)驗(yàn)證環(huán)境,并降低驗(yàn)證成本。它為驗(yàn)證環(huán)境中的基本類(lèi)庫(kù)(BSL)組件的使用提供了某些應(yīng)用編程接口(API ),使它們可重用且獨(dú)立于工具。基于UVM的驗(yàn)證環(huán)境對(duì)于各種類(lèi)型的測(cè)試創(chuàng)建、覆蓋分析和重用是足夠靈活的。UVM標(biāo)準(zhǔn)化提高了互操作性,降低了重新購(gòu)買(mǎi)的成本,并且采用了為每個(gè)新的SoC設(shè)計(jì)或驗(yàn)證工具重寫(xiě)知識(shí)產(chǎn)權(quán)(IP ),以便更容易地重用驗(yàn)證組件。總體而言,UVM標(biāo)準(zhǔn)化將降低整個(gè)行業(yè)的驗(yàn)證成本并提高設(shè)計(jì)質(zhì)量。更重要的是,它可以使用復(fù)雜SoC設(shè)計(jì)驗(yàn)證中最常用的SystemVerilog來(lái)實(shí)現(xiàn)。
15、缺陷和調(diào)試
bug是系統(tǒng)中的缺陷。SoC設(shè)計(jì)的質(zhì)量直接取決于其中隱藏的缺陷或錯(cuò)誤。如前所述,較高設(shè)計(jì)或開(kāi)發(fā)階段(RTL、物理設(shè)計(jì)、布局、芯片、電路板、系統(tǒng)、現(xiàn)場(chǎng)系統(tǒng))的測(cè)試成本至少比較低設(shè)計(jì)或開(kāi)發(fā)階段的測(cè)試成本高十倍。在早期設(shè)計(jì)/開(kāi)發(fā)階段發(fā)現(xiàn)缺陷或錯(cuò)誤是明智的。Bug是特定場(chǎng)景中不需要的狀態(tài)或條件。它可以是暫時(shí)的,也可以是永久的。這可能是由多種原因造成的。最主要的原因是設(shè)計(jì)者沒(méi)有能力按照預(yù)期來(lái)解釋需求(參考圖中關(guān)于需求解釋問(wèn)題的著名的tree swing例子),以及大量隱含的、未聲明的需求。由于驗(yàn)證人員對(duì)系統(tǒng)需求的解釋以及他為整個(gè)用例場(chǎng)景創(chuàng)建測(cè)試用例的能力,設(shè)計(jì)缺陷也可能滲透進(jìn)來(lái)。也可能是因?yàn)樵谠O(shè)計(jì)階段用于進(jìn)行設(shè)計(jì)轉(zhuǎn)換的人為錯(cuò)誤和工具錯(cuò)誤。在設(shè)計(jì)和開(kāi)發(fā)階段或在現(xiàn)場(chǎng),正式記錄和管理bug是很重要的,這樣bug就可以被修復(fù),不會(huì)反復(fù)出現(xiàn)。
作者:鄭威,TüV北德功能安全總監(jiān)
-
FPGA
+關(guān)注
關(guān)注
1630文章
21759瀏覽量
604291 -
soc
+關(guān)注
關(guān)注
38文章
4180瀏覽量
218489 -
芯片設(shè)計(jì)
+關(guān)注
關(guān)注
15文章
1023瀏覽量
54933 -
驗(yàn)證
+關(guān)注
關(guān)注
0文章
61瀏覽量
15217
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論