驗證基礎(chǔ)-驗證方法
驗證的方法主要分為六種:
????????※ 動態(tài)仿真(dynamic simulation)
????????※ 靜態(tài)檢查(formal check)
????????※ 虛擬模型(virtual prototype)
????????※ 硬件加速(hardware acceleration)
????????※ 電源功耗(power consumption)
????????※ 性能評估(performance evaluation)
動態(tài)仿真
????????該方式是通過測試序列和激勵生成器給入待測設(shè)計適當(dāng)?shù)募?,伴隨著仿真時間,進(jìn)而判斷輸出是否符合預(yù)期,驗證人員需要比較結(jié)果和波形來判斷測試用例是否通過。
????????如果按照激勵生成和檢查方式,我們可以將動態(tài)仿真進(jìn)一步劃分為:
????????????????--定向測試(directed test)
????????????????--隨機測試(random test)
????????????????--參考模型檢查(reference model check)
????????????????--斷言檢查(assertion check)
靜態(tài)檢查
????????與動態(tài)仿真相對的是靜態(tài)檢查,它不需要仿真、波形激勵,通過工具的輔助,驗證人員即可以發(fā)現(xiàn)設(shè)計中存在的問題。
????????靜態(tài)檢查可以細(xì)分更多種類,它們關(guān)注的領(lǐng)域也不同,我們將這些方法概括為:
????????????????--語法檢查(syntax check)
????????????????--語義檢查(linting check)
????????????????--跨時鐘域檢查(CDC , Cross-clock Domain Check)
????????????????--形式驗證(formal verification)
????????語義檢查和語法檢查的區(qū)別在于,語法檢查主要檢查語法是否出現(xiàn)錯誤,比如例化錯誤、關(guān)鍵詞使用錯誤等,語義檢查是在設(shè)計可行性上做深入檢查的,前提是通過了語法檢查。語義檢查的工具如Spyglass,可以檢查常見的設(shè)計錯誤、影響覆蓋率收斂的問題、可能會產(chǎn)生X值以及受其影響的設(shè)計部分。
?????????對于跨時鐘域的檢查,設(shè)計中不同的功能模塊如果被不同的時鐘驅(qū)動,那么就會形成不同的時鐘域,即如果數(shù)據(jù)從一個時鐘域到另一個時鐘域沒有做數(shù)據(jù)同步,那么就可能出現(xiàn)建立時間或保持時間違例而導(dǎo)致邏輯錯誤。這種跨時鐘域問題沒法被STA分析到。?通過該方法可以在早期的RTL階段來識別出跨時鐘域的通信電路上面是否有合適的同步處理,所以跨時鐘域檢查是為了保證所有的CDC信號都能夠得到正確的同步,Spyglass就可以支持CDC檢查。
????????形式驗證分為兩種:
????????????????等價檢查(EC,Equivalence check):用來保證兩個電路的行為是等價的,可以用來檢查不同抽象級的電路是否一致,例如RTL級和網(wǎng)表。
????????????????屬性檢查(PC,Property check,又稱為模型檢查):電路的行為通過驗證語言來描述其屬性,隨后通過靜態(tài)方式來證明所有狀態(tài)空間下都滿足該條件,否則舉出反例來證明設(shè)計行為不符合屬性描述。? ??
虛擬模型
????????虛擬模型即高抽象的硬件模型,軟件模型可依賴虛擬模型在早期開發(fā),并且將反饋交給硬件設(shè)計。
????????通過虛擬模型,硬件可以更早地獲得軟件反饋而對設(shè)計進(jìn)行修改。這種軟硬件緊密協(xié)作的方式有很多優(yōu)勢,比如利用虛擬模型獲取的性能數(shù)據(jù)(帶寬等)可以對硬件早期結(jié)構(gòu)提供參考意見,或者判斷硬件軟件的協(xié)同任務(wù)是否滿足功耗目標(biāo)。
????????目前我們通過多項虛擬建模的技術(shù)例如協(xié)同設(shè)計、協(xié)同仿真和驗證,試圖在早期就可以發(fā)現(xiàn)設(shè)計缺陷,使得修改這些缺陷可以在相對容易實施的階段完成。
建模準(zhǔn)備:1.芯片定義 2.高級別結(jié)構(gòu) 3.用戶用例 4.RTL模塊
虛擬模型:1.建模策略 2.將功能描述轉(zhuǎn)化為System C模型 3.將RTL轉(zhuǎn)換為System C模型 4.結(jié)構(gòu)和性能分析。
平臺開發(fā):1.虛擬平臺 2.結(jié)構(gòu)、性能及功耗報告 3.驅(qū)動和固件開發(fā) 4.OS、中間件和應(yīng)用層開發(fā) 5.反饋給硬件設(shè)計。
硬件加速
????????由于仿真速度的限制,一些真實的用例也無法在RTL級仿真很快地呈現(xiàn)結(jié)果,這種困難在硅后測試發(fā)現(xiàn)問題反饋給硬件團(tuán)隊時更加明顯。這意味著硬件團(tuán)隊需要耗時很長的軟件進(jìn)行分析,找到可能的問題,拆分軟件場景,進(jìn)而在硬件仿真上重現(xiàn)。仿真速度的限制使得無法通過仿真在早期測試軟件,而這一任務(wù)一般交給虛擬模擬型平臺或者硬件加速。
????????目前業(yè)界主要的硬件加速方式分為兩種:FPGA和專用的模擬器。模擬器的速度在仿真和FPGA之間,它的特點就是速度比仿真器快的同時還具備軟件的特性,可以設(shè)置斷點查看信號等,更方便debug。
效能驗證
????????主要針對硅前設(shè)計階段進(jìn)行效能驗證,涉及的流程可分為兩個部分
?????????--功能驗證:主要采用PA(Power Aware)主要包括UPF(unified power format)或者CPF(comment power format)方式,通過與仿真器結(jié)合,模擬電源域的開關(guān)進(jìn)行設(shè)計檢查。
????????--功耗預(yù)測與優(yōu)化:通過第三方功耗分析工具,結(jié)合仿真數(shù)據(jù)(FSDB/VCD/SAIF)進(jìn)行功耗預(yù)測,并給出分析結(jié)果。
????????功耗節(jié)約技術(shù):

UVM簡介
????????UVM(Universal Verification Methodology)的驗證方法學(xué)通過吸取eRM,AVM,OVM,VVM等之前不同的方法學(xué)的優(yōu)點,集眾家之所長。
????????所有的驗證方法學(xué)服務(wù)目的都在于提供一些可以重用的類來減輕在項目之間水平復(fù)用和垂直復(fù)用的工作量。
????????就驗證語言System verilog而言,它的面向?qū)ο?、隨機約束、線程通信管理等核心特性,同時這些特性也為建立一個驗證環(huán)境提供了足夠多的便利。
????????UVM面向所有數(shù)字設(shè)計,涵蓋了從模塊級到芯片級,ASIC到FPGA,以及控制邏輯、數(shù)據(jù)通路到處理器驗證的全部場景。
????????UVM的類大致可以分為以下幾類:
工廠(factory)類、事務(wù)(transaction)和序列(sequence)類、結(jié)構(gòu)創(chuàng)建(structure creation)類、環(huán)境組件(environment component)類、通信管道(channel)類、信息報告(message report)類、寄存器模型(register model)類、線程同步(thread synchronization)類、事務(wù)接口(transaction interface)類。
????????