數(shù)字集成電路驗(yàn)證方法學(xué)課件_第1頁
數(shù)字集成電路驗(yàn)證方法學(xué)課件_第2頁
數(shù)字集成電路驗(yàn)證方法學(xué)課件_第3頁
數(shù)字集成電路驗(yàn)證方法學(xué)課件_第4頁
數(shù)字集成電路驗(yàn)證方法學(xué)課件_第5頁
已閱讀5頁,還剩177頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)字集成電路驗(yàn)證方法學(xué)浙江大學(xué)ICLAB實(shí)驗(yàn)室2021-12-26數(shù)字集成電路驗(yàn)證方法學(xué)浙江大學(xué)ICLAB實(shí)驗(yàn)室1主要內(nèi)容驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹演示2共91頁主要內(nèi)容驗(yàn)證的必要性2共91頁2主要內(nèi)容驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹演示

3共91頁主要內(nèi)容驗(yàn)證的必要性3共91頁3驗(yàn)證的必要性驗(yàn)證的概念,驗(yàn)證與測試的區(qū)別。經(jīng)歷說明,驗(yàn)證已經(jīng)占到整個產(chǎn)品開發(fā)周期的70%以上,它已經(jīng)成為復(fù)雜SOC〔Systemon-Chip〕開發(fā)中的重要壁壘。制造、設(shè)計(jì)和驗(yàn)證能力之間存在鴻溝4共91頁驗(yàn)證的必要性驗(yàn)證的概念,驗(yàn)證與測試的區(qū)別。4共91頁4典型流程Verificationisnotjustveryhard,itisvery,veryhard沒有一個簡單的工具可以解決你所有的驗(yàn)證問題。(VSIA,Virtual

Socket

Interface

Alliance)5共91頁典型流程Verificationisnotjustv5主要內(nèi)容驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹演示

6共91頁主要內(nèi)容驗(yàn)證的必要性6共91頁6驗(yàn)證方法學(xué)方法學(xué):又稱方法論,是一門學(xué)問采用的方法、規(guī)那么與公理;一種特定的做法或一套做法。驗(yàn)證方法學(xué):指完成驗(yàn)證過程中的一系列方法、技術(shù)和標(biāo)準(zhǔn)。1.仿真技術(shù)3.物理驗(yàn)證

7共91頁驗(yàn)證方法學(xué)方法學(xué):又稱方法論,是一門學(xué)問采用的方法、規(guī)那么與7仿真技術(shù)基于事件的仿真--任何一個輸入的變化都被標(biāo)記為事件,即常說的功能仿真,精度高,速度慢。比方Modelsim,VCS。基于周期的仿真--單周期內(nèi)只檢查一次輸入并計(jì)算設(shè)計(jì)的輸出邏輯值。速度快,無時序、毛刺。比方Cyclone。事務(wù)級仿真--一堆事件的集合即為事務(wù),即常說的驗(yàn)證平臺。軟硬件協(xié)同驗(yàn)證--需要專門的硬件,本錢高。8共91頁仿真技術(shù)基于事件的仿真--任何一個輸入的變化都被標(biāo)記為事件,8驗(yàn)證方法比較EDA驗(yàn)證軟硬件協(xié)同驗(yàn)證FPGA驗(yàn)證編譯速度很快較快慢運(yùn)行速度慢較快很快環(huán)境搭建難度簡單難很難環(huán)境重用度高較高低問題定位能力很強(qiáng)很強(qiáng)低成本低高較低9共91頁驗(yàn)證方法比較EDA驗(yàn)證軟硬件協(xié)同驗(yàn)證FPGA驗(yàn)證編譯速度很快9傳統(tǒng)驗(yàn)證系統(tǒng)DUT:DesignUnderTest適用于基于事件的仿真和基于周期的仿真。適用于簡單的設(shè)計(jì)。缺點(diǎn):1.可擴(kuò)展性差2.可重用性差10共91頁傳統(tǒng)驗(yàn)證系統(tǒng)DUT:DesignUnderTest缺點(diǎn):10層次化的驗(yàn)證系統(tǒng)適用于事務(wù)級仿真優(yōu)點(diǎn):1.可擴(kuò)展性好2.可重用性好11共91頁層次化的驗(yàn)證系統(tǒng)適用于事務(wù)級仿真11共91頁11為什么要用事務(wù)級仿真?

基于事件的仿真事務(wù)級仿真Testbench代碼可讀性,可維護(hù)性差強(qiáng)仿真速度慢快Testbench結(jié)構(gòu)DUT復(fù)雜時,結(jié)構(gòu)混亂DUT復(fù)雜時,結(jié)構(gòu)清晰Testbench代碼量DUT簡單時,代碼量尚可DUT復(fù)雜時,代碼量巨大DUT簡單時,代碼量略多DUT復(fù)雜時,代碼量較少與待測設(shè)計(jì)聯(lián)系程度非常緊密行為級與DUT聯(lián)系緊密事務(wù)級具有自身獨(dú)立性可重用性無強(qiáng)抽象層次無有參考模型無有基于事件的仿真與事務(wù)級仿真的比較12共91頁為什么要用事務(wù)級仿真?

基于事件的仿真事務(wù)級仿真Testbe12事務(wù)級仿真RVM:Reference

Verification

Methodology,Synopsys公司。

VMM:Verification

MethodologyManual,ARM公司和Synopsys公司。AVM:AdvancedVerificationMethodology,Mentor公司。OVM:OpenVerificationMethodology,Cadence和Mentor公司。UVM:UniversalVerificationMethodology,Cadence、Mentor和Synopsys公司。13共91頁事務(wù)級仿真RVM:Reference

Verificati13為什么選用OVM?

驗(yàn)證方法學(xué)側(cè)重點(diǎn)EDA驗(yàn)證工具支持的驗(yàn)證語言基類庫是否開源RVM層次化驗(yàn)證VCSOpenVera否VMM層次化驗(yàn)證VCSSystemVerilog是AVM層次化驗(yàn)證QuestasimSystemC/SystemVerilog是OVM開源和不同仿真器之間的透明性支持不同驗(yàn)證工具支持SystemVerilog等多種語言是UVM開源和快速入門QuestasimNC-verilogVCS支持SystemVerilog等多種語言是各種驗(yàn)證方法學(xué)比較14共91頁為什么選用OVM?

驗(yàn)證方法學(xué)側(cè)重點(diǎn)EDA驗(yàn)證工具支持的驗(yàn)14OVM介紹OVM是一種基于SystemVerilog的驗(yàn)證方法或者策略,已經(jīng)實(shí)現(xiàn)了一個根本的層次化驗(yàn)證平臺,大大簡化驗(yàn)證工程師的工作量。OVM可以驗(yàn)證HDL代碼或者網(wǎng)表文件OVM特點(diǎn):1.開放性:支持所有驗(yàn)證工具2.開源:OVM庫都是基于SystemVerilog實(shí)現(xiàn)的,可以在網(wǎng)上下載。3.可靠性:兩大公司共同開發(fā)維護(hù)15共91頁OVM介紹OVM是一種基于SystemVerilog的驗(yàn)證方15OVM構(gòu)造ovm_envovm_sequencerovm_agentovm_scoreboardovm_driverovm_monitor16共91頁OVM構(gòu)造ovm_env16共91頁16SystemVerilog介紹SystemVerilog結(jié)合了Verilog和C++的概念,具有如下新功能:1.面向?qū)ο缶幊?OOP)、2.隨機(jī)約束(ConstraintRandom)、3.斷言(Assertion)、4.功能覆蓋率(FunctionalCoverage)。17共91頁SystemVerilog介紹SystemVerilog結(jié)合17OOP:Object-orientedprogramming對象:對象(Object)是一個現(xiàn)實(shí)實(shí)體的抽象,對象可被認(rèn)為是一個把數(shù)據(jù)〔屬性〕和程序〔方法〕封裝在一起的實(shí)體,這個程序產(chǎn)生該對象的動作,屬性反映了對象當(dāng)前的狀態(tài)。面向?qū)ο缶幊蹋褐饕菍⑽覀儗?shí)際生活中的對象經(jīng)過抽象,將它定義成為一個類,通過類的屬性和方法來模擬生活中的這個對象。這樣使得程序更容易構(gòu)造化、抽象起來更方便。傳統(tǒng)的編程構(gòu)造和設(shè)計(jì)方法以過程為中心進(jìn)展功能組合,代碼的擴(kuò)大和復(fù)用能力很差。對象是對現(xiàn)實(shí)世界實(shí)體的模擬,因面能更容易地理解需求,即使用戶和分析者之間具有不同的教育背景和工作特點(diǎn),也可很好地溝通。SystemVerilog介紹-面向?qū)ο缶幊?/p>

18共91頁OOP:Object-orientedprogrammin18類:定義實(shí)物的抽象特點(diǎn),包含方法和屬性。對象:類的實(shí)例。方法:類的行為。繼承:子類包含類的特性。SystemVerilog介紹-面向?qū)ο缶幊?/p>

19共91頁類:定義實(shí)物的抽象特點(diǎn),SystemVerilog介紹-面向19CRT:ConstraintRandomTestclassmy_transactionextendsovm_transaction;rand

intdata_i;constraintc_data_i{data_i>=0;data_i<262144;}endclassmy_transactiontr=new();tr.randomize大于0小于262144SystemVerilog介紹-隨機(jī)約束20共91頁CRT:ConstraintRandomTestSy20SystemVerilog介紹-隨機(jī)約束classtranscation;

rand

bit[1:0]src;

rand

bit[31:0]data;

bit[31:0]low,high;

constraintcons{srcdist{0:=40,[1:3]:=60};datainside{[low:high]};}endclass21共91頁SystemVerilog介紹-隨機(jī)約束classtran21SystemVerilog介紹-斷言斷言:屬于驗(yàn)證方法中的一種,是對設(shè)計(jì)屬性(行為)的描述,如果一個屬性不是我們期望的那樣,那么斷言就會失敗。assertions與verilog相比:verilog是一種過程性語言。它的設(shè)計(jì)目的是硬件描述,它可以很好的控制時序,但是描述復(fù)雜的時序關(guān)系,代碼較為冗長。assertions是一種描述性語言,設(shè)計(jì)目的為仿真驗(yàn)證,可以有很多內(nèi)嵌的函數(shù)來測試特定的時序關(guān)系和自動收集覆蓋率數(shù)據(jù)。22共91頁SystemVerilog介紹-斷言斷言:屬于驗(yàn)證方法中的一22SystemVerilog介紹-斷言Assertion例如propertyp10;@(posedgeclock)(io.data_check_o<=data_out_design_for_check+2)&&(io.data_check_o>=data_out_design_for_check-2);endpropertya10:assertproperty(p10);23共91頁SystemVerilog介紹-斷言Assertion例23SystemVerilog介紹-斷言propertypr1;@(posedgeclock)

start|->req##2(gnt==1&&req==0);endpropertyA_pr1:assert

property(pr1);24共91頁SystemVerilog介紹-斷言propertypr124SystemVerilog介紹-功能覆蓋率功能覆蓋率:衡量哪些設(shè)計(jì)特征已經(jīng)被程序驗(yàn)證過的一個指標(biāo)代碼覆蓋率1.語句覆蓋(StatementCoverage)2.判定覆蓋(DecisionCoverage)3.條件覆蓋(ConditionCoverage)4.路徑覆蓋(PathCoverage)25共91頁SystemVerilog介紹-功能覆蓋率功能覆蓋率:衡25語句覆蓋語句覆蓋(StatementCoverage):度量被測代碼中每個可執(zhí)行語句是否被執(zhí)行到了。int

foo(int

a,

int

b)

{

return

a

/

b;

}TeseCase:

a

=

10,

b

=

5語句覆蓋率:100%代碼的bug:b=026共91頁語句覆蓋語句覆蓋(StatementCoverage):度量26判定覆蓋&條件覆蓋判定覆蓋(DecisionCoverage):度量程序中每一個判定的分支是否都被測試到了。條件覆蓋(ConditionCoverage):度量判定中的每個子表達(dá)式結(jié)果true和false是否被測試到了。int

foo(int

a,

int

b)

{

if

(a

<

10

||

b

<

10)

//判定

{

return

0;

//分支一

}

else

{

return

1;

//分支二

}

}TestCaes1:

a

=

5,

b

15覆蓋了分支一

TestCaes2:

a

=

15,

b

=

15

覆蓋了分支二TestCase1:

a

=

5,

b

=

5

true,

true

TestCase2:

a

=

15,

b

=

15

false,

falseTestCase1:

a

=

5,

b

=

15

true,

false

分支一

TestCase2:

a

=

15,

b

=

5

false,

true

分支一判定覆蓋率:100%,條件覆蓋<100%條件覆蓋率:100%判定覆蓋率:100%條件覆蓋率:100%,判定覆蓋<100%27共91頁判定覆蓋&條件覆蓋判定覆蓋(DecisionCoverage27路徑覆蓋路徑覆蓋(PathCoverage):度量了是否函數(shù)的每一個分支都被執(zhí)行了。int

foo(int

a,

int

b)

{

int

nReturn

=

0;

if

(a

<

10)

{//

分支一

nReturn

+=1;

}

if

(b

<

10)

{//

分支二

nReturn

+=10;

}

return

nReturn;

}TestCase1a

=

5,

b

=

5

nReturn=11TestCase2a

=

15,

b

=

5

nReturn=10TestCase3a

=

5,

b

=

15

nReturn=1TestCase4a

=

15,

b

=

15

nReturn=0路徑覆蓋率:100%28共91頁路徑覆蓋路徑覆蓋(PathCoverage):度量了是否函數(shù)28SystemVerilog介紹-功能覆蓋率29共91頁SystemVerilog介紹-功能覆蓋率29共91頁29FunctionalCoveragecovergroup:覆蓋率模型coverpoint:覆蓋點(diǎn)sample():采樣函數(shù)bins:倉SystemVerilog介紹-功能覆蓋率30共91頁FunctionalCoverageSystemVeril30SystemVerilog介紹-功能覆蓋率covergroupCovkind;

coverpointtr.kind{//kind為4位數(shù)據(jù)binszero={0};binshi[]={[8:$]};};endgroupCovkindcov=new();Cov.sample();31共91頁SystemVerilog介紹-功能覆蓋率covergrou31SystemVerilog介紹-功能覆蓋率covergroupgroup(@posedgeclk);ca:coverpointa;//a為1bitcb:coverpointb;//b為1bitcab:crosscacb;endgroupgroupgrp=new();//不需要調(diào)用grp.sample();32共91頁SystemVerilog介紹-功能覆蓋率covergrou32靜態(tài)技術(shù)語法檢查--用戶可以自由控制需要檢查的規(guī)那么,如代碼風(fēng)格,可綜合檢查,DFT檢查。nlint工具。靜態(tài)時序分析--檢查建立、保持時間以及其他延時信息是否滿足設(shè)計(jì)時序要求。PrimeTime。形式驗(yàn)證等價性檢查:不考慮時序信息,通常用于驗(yàn)證兩個設(shè)計(jì)是否在功能上等效〔有g(shù)oldendesign〕。Formality工具。模型檢查:驗(yàn)證設(shè)計(jì)的功能〔沒有g(shù)oldendesign〕。JasperGold33共91頁靜態(tài)技術(shù)語法檢查--用戶可以自由控制需要檢查的規(guī)那么,如代碼33語法檢查用戶可以自由控制需要檢查的規(guī)那么代碼風(fēng)格檢查:命名標(biāo)準(zhǔn)等可綜合檢查:設(shè)計(jì)的代碼是否滿足可綜合要求DFT檢查:代碼是否會影響后端DFT的設(shè)計(jì)跨時鐘域設(shè)計(jì)檢查:亞穩(wěn)態(tài)傳播檢查等常用工具為:nlint工具。34共91頁語法檢查用戶可以自由控制需要檢查的規(guī)那么34共91頁34一般來說,要分析或檢驗(yàn)一個電路設(shè)計(jì)的時序方面的特征有兩種主要手段:動態(tài)時序仿真〔DynamicTimingSimulation〕和靜態(tài)時序分析〔StaticTimingAnalysis〕1.動態(tài)時序仿真:利用仿真器和延遲文件,通過反標(biāo)節(jié)點(diǎn)延遲信息來仿真。優(yōu)點(diǎn):可直觀查看波形;缺點(diǎn):速度慢,看不到關(guān)鍵路徑。2.靜態(tài)時序分析:分析每條時間路徑上的延遲,來查看是否存在setup/hold違反。優(yōu)點(diǎn):分析速度比較快,全面;缺點(diǎn):不能查看功能是否正確。靜態(tài)時序分析

35共91頁一般來說,要分析或檢驗(yàn)一個電路設(shè)計(jì)的時序方面的特征有兩種主35靜態(tài)時序分析針對建立時間、保持時間的檢查,分為四種情況輸入端口到存放器存放器到存放器存放器到輸出輸入到輸出針對周期個數(shù),分為:單周期檢查多周期檢查36共91頁靜態(tài)時序分析針對建立時間、保持時間的檢查,分為四種情況36共36所謂等價性檢查,就是通過比較兩個設(shè)計(jì)在邏輯功能是否等同的方法來驗(yàn)證電路的功能。優(yōu)點(diǎn):1.不依賴于測試矢量,因此能提供更完全的驗(yàn)證;2.可以實(shí)現(xiàn)RTL-to-RTL、RTL-to-gate、gate-to-gate兩者之間的驗(yàn)證;3.有定位功能,可以幫助你找出兩個設(shè)計(jì)之間功能不等同的原因;4.可以使用的文件格式有VHDL、Verilog、Synopsys的.db格式,以及EDIF網(wǎng)表等;5.可以實(shí)現(xiàn)自動的分層驗(yàn)證;形式驗(yàn)證之等價性檢查37共91頁所謂等價性檢查,就是通過比較兩個設(shè)計(jì)在邏輯功能是否等同的方37形式驗(yàn)證之等價性檢查#setreference(RTL)set_topABC#setimplentation(Gate)set_topABCmatchverify38共91頁形式驗(yàn)證之等價性檢查#setreference(RTL)38所謂模型檢查,就是通過SystemVerilog中的斷言來描述DUT的特性,通過窮舉法產(chǎn)生隨機(jī)鼓勵,判斷設(shè)計(jì)是否滿足設(shè)計(jì)需求。是仿真的補(bǔ)充。優(yōu)點(diǎn):1.不需要人為產(chǎn)生鼓勵,產(chǎn)生的鼓勵更完整;2.對于某些模塊,用模型檢查比仿真驗(yàn)證速度更快 3.得到的波形很短(主要是斷言失敗的波形),幾十個周期,方便定位問題缺點(diǎn):只能適合用于模塊級別的驗(yàn)證形式驗(yàn)證之模型檢查39共91頁所謂模型檢查,就是通過SystemVerilog中的斷言來39物理驗(yàn)證--幅員級電源電壓降串?dāng)_Astro/ICC布局布線工天線效應(yīng)具中完成電遷移40共91頁物理驗(yàn)證--幅員級電源電壓降40共91頁40物理驗(yàn)證--幅員級電遷移EM(electricalmobility)概念:金屬線在電流和溫度的作用下產(chǎn)生的金屬遷移的現(xiàn)象原因:電子沿著電壓梯度漂移,與組成導(dǎo)線的金屬粒子發(fā)生碰撞,假設(shè)能量很高,會使金屬導(dǎo)體的某些部位產(chǎn)生空洞或小丘,從而引起導(dǎo)線失效。失效模式:主要包括短路、斷路以及參數(shù)退化和時序違規(guī)等41共91頁物理驗(yàn)證--幅員級電遷移EM(electricalmob41主要內(nèi)容驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹演示

42共91頁主要內(nèi)容驗(yàn)證的必要性42共91頁42如何利用OVM完成驗(yàn)證?43共91頁如何利用OVM完成驗(yàn)證?43共91頁43基于OVM的數(shù)字濾波器驗(yàn)證平臺數(shù)模轉(zhuǎn)化器〔DAC〕中的數(shù)字插值濾波器作為此驗(yàn)證平臺的DUT數(shù)字插值濾波器的功能:2.濾除帶外〔帶寬20KHz〕噪聲輸入信號輸出信號44共91頁基于OVM的數(shù)字濾波器驗(yàn)證平臺數(shù)模轉(zhuǎn)化器〔DAC〕中的數(shù)字插44傳統(tǒng)的濾波器驗(yàn)證平臺仿真結(jié)果傳統(tǒng)的驗(yàn)證平臺:基于定向測試矢量+波形查看的方式45共91頁傳統(tǒng)的濾波器驗(yàn)證平臺仿真結(jié)果傳統(tǒng)的驗(yàn)證平臺:基于定向測試矢量45傳統(tǒng)驗(yàn)證平臺沒找到BUG的原因

基于OVM的驗(yàn)證平臺46共91頁傳統(tǒng)驗(yàn)證平臺沒找到BUG的原因

46共91頁46OVM驗(yàn)證平臺驗(yàn)證步驟47共91頁OVM驗(yàn)證平臺驗(yàn)證步驟47共91頁47利用OVM庫完成平臺代碼擴(kuò)展OVM類逐層完成:48共91頁利用OVM庫完成平臺代碼擴(kuò)展OVM類48共91頁48OVM平臺--接口interfaceio_if();logic[17:0]data_i;logic[17:0]data_o;logic[17:0]data_check_o;modportdut_if(inputdata_i,outputdata_o);//DUT接口modportcheck_if(inputdata_i,outputdata_check_o);//比較器模塊接口Endinterfaceio_ifmy_io();//裝載接口modulecheck(io_if.check_ifio,inputclock,rst,en);dutdut(.io(my_io),.clock(clock),.rst(rst),.en(rst_check));checkcheck(.io(my_io),.clock(clock),.rst(rst),.en(rst_check));49共91頁OVM平臺--接口interfaceio_if();49共49OVM平臺—數(shù)據(jù)產(chǎn)生classmy_transactionextendsovm_transaction;

randintdata_i;

functionnew(stringname="");

super.new(name);

endfunction:new

//產(chǎn)生隨機(jī)事件的約束條件constraintc_data_i{data_i>=0;data_i<262144;}virtualfunctionvoidrandomize_();

data_i=$random&18'h3ffff;endfunction`ovm_object_utils_begin(my_transaction)//在程序中`ovm_field_int(data_i,OVM_ALL_ON+OVM_DEC)

`ovm_object_utils_end

endclass:my_transaction50共91頁OVM平臺—數(shù)據(jù)產(chǎn)生classmy_transaction50OVM平臺—驅(qū)動器classmy_driverextendsovm_driver;//`ovm_component_utils(my_driver)//注冊本類,這個宏的結(jié)尾沒有符號;virtualio_ifv_io;//裝載虛擬接口ovm_get_port#(my_transaction)get_port;//裝載與鼓勵發(fā)生器通信的通道接口:functionnew(stringname,ovm_componentparent);super.new(name,parent);//〖建議〗驗(yàn)證程序中可寫一些ovm_report_info的語句供提示用:ovm_report_info("","Calledmy_driver::new");//在測試結(jié)果顯示此函數(shù)被調(diào)用endfunction:new

51共91頁OVM平臺—驅(qū)動器51共91頁51functionvoidbuild;

super.build();

ovm_report_info("","Calledmy_driver::build");

get_port=new("get_port",this);//初始化

endfunction:build

virtualtaskrun;

ovm_report_info("","Calledmy_driver::run");

forever

begin

my_transactiontx;

#1600get_port.get(tx);//從通道中取一個事件

ovm_report_info("",$psprintf("data_i=%2h",tx.data_i));

end

endtask:run

endclass:my_driver52共91頁functionvoidbuild;52OVM平臺—驗(yàn)證環(huán)境classmy_envextendsovm_env;//`ovm_component_utils(my_env)//注冊本類ovm_random_stimulus#(my_transaction)env_stimulus;//裝載鼓勵器tlm_fifo#(my_transaction)env_fifo;//裝載通道m(xù)y_driverenv_driver;//裝載驅(qū)動器functionnew(stringname="my_env",ovm_componentparent=null);super.new(name,parent);ovm_report_info("","Calledmy_env::new");endfunction:new

53共91頁OVM平臺—驗(yàn)證環(huán)境53共91頁53virtualfunctionvoidbuild;super.build();ovm_report_info("","Calledmy_env::build");env_stimulus=new("env_stimulus",this);//初始化鼓勵器env_fifo=new("env_fifo",this);//初始化通道env_driver=new("env.driver",this);//初始化驅(qū)動器endfunction:build

virtualfunctionvoidconnect;//設(shè)定連接關(guān)系ovm_report_info("","Calledmy_env::connect");endfunction:connect54共91頁virtualfunctionvoidbuild;54virtualfunctionvoidconfigure;//

ovm_report_info("","Calledmy_env::configure");

env_stimulus.set_report_id_action("stimulusgeneration",OVM_NO_ACTION);//限制顯示信息

endfunction:configure//你可刪除上一行,看看有什么變化?

taskrun();

ovm_report_info("","Calledmy_env::run");

endtask:run

virtualfunctionvoidreport;

ovm_report_info("","Calledmy_env::report");

endfunction:report

//在運(yùn)行下面的run_test()函數(shù)時,以上函數(shù)將自動依次運(yùn)行

endclass:my_env55共91頁virtualfunctionvoidconfigur55modulecheck(io_if.check_ifio,inputclock,rst,en,input[17:0]data_out_design_for_check);wire[17:0]hcic_out;//參考模型Hcic_fullHcic_full

(clock,

en,rst,

io.data_i,

hcic_out,);assignio.data_check_o=hcic_out;propertyp10;

@(posedgeclock)(io.data_check_o<=data_out_design_for_check+2)&&(io.data_check_o>=data_out_design_for_check-2)||io.data_check_o==0;endpropertya10:assertproperty(p10);endmoduleOVM平臺—比較器56共91頁modulecheck(io_if.check_ifio56`timescale1ns/10psmoduletop;

importovm_pkg::*;

importmy_pkg::*;

parameterclock_cycle=100;

bitclock;

bitrst;

bitrst_check;

io_ifmy_io();//裝載接口

dutdut(.io(my_io),.clock(clock),.rst(rst),.en(rst_check));//裝載DUT

checkcheck(.io(my_io),.clock(clock),.rst(rst),.en(rst_check),

//〖建議〗在驗(yàn)證程序頂級模塊中一般采用繼承ovm_test的類包裝繼承ovm_env的類OVM平臺—頂層模塊57共91頁`timescale1ns/10ps57

classmy_testextendsovm_test;

`ovm_component_utils(my_test)//注冊本類

my_envtop_env;//裝載環(huán)境-top_env

functionnew(stringname="my_test",ovm_componentparent=null);

super.new(name,parent);

ovm_report_info("","Calledmy_test::new");

endfunction:new

virtualfunctionvoidbuild;

super.build();

ovm_report_info("","Calledmy_test::build");

top_env=new();//初始化

//〖建議〗在驗(yàn)證程序中可設(shè)定看門狗

set_global_timeout(1000000us);

endfunction:build

58共91頁classmy_testextendsovm_tes58virtualfunctionvoidconnect;ovm_report_info("","Calledmy_test::connect");endfunction:connecttaskrun;my_transactiontx;tx=new();ovm_report_info("","Calledmy_test::run");endtask:runendclass:my_test59共91頁virtualfunctionvoidconnect;59initialbeginrun_test(“my_test〞);clock=0;rst=0;rst_check=0;#(32*clock_cycle)rst=1;endalways#(clock_cycle/2)clock=~clock;initialbegin$fsdbDumpfile("top.fsdb");$fsdbDumpSVA;$fsdbDumpvars(0,top,"+all");endendmodule:top60共91頁initialbegin60共91頁60啟動驗(yàn)證工具利用mentor的questasim,界面和操作類似于modelsim啟動命令vsim&61共91頁啟動驗(yàn)證工具利用mentor的questasim,界面和操作61腳本方式完成驗(yàn)證vlibdac_hcic//創(chuàng)立庫vlog+acc-f../rtl/ovm_rtl/compile_questa_sv.f-workdac_hcic-sv+cover//編譯整個驗(yàn)證平臺vsim-cdac_hcic.top-sv_seed100-coverage-assertcover-assertdebug-sva-voptargs=“+acc〞-pli/opt/springsoft/verdi/share/PLI/MODELSIM/LINUX/novas_fli.so//啟動仿真viewassertions//查看斷言run-all//開場運(yùn)行quit-sim//完畢仿真62共91頁腳本方式完成驗(yàn)證vlibdac_hcic//創(chuàng)立庫6262+incdir+/home/liuxp/dac/rtl/ovm_rtl+incdir+/home/liuxp/dac/rtl/dac_balise/dac_haf_cic63共91頁63共91頁63結(jié)果查看斷言結(jié)果查看代碼覆蓋率查看64共91頁結(jié)果查看斷言結(jié)果查看64共91頁64斷言結(jié)果查看—Questasim下65共91頁斷言結(jié)果查看—Questasim下65共91頁65代碼斷言結(jié)果查看—Verdi下Verdi〔另外一個軟件,專門用作波形查看和調(diào)試〕下查看斷言結(jié)果更加直觀,箭頭朝上就表示斷言通過,朝下表示斷言失敗。66共91頁代碼斷言結(jié)果查看—Verdi下Verdi〔另外一個軟件,專門66代碼覆蓋率查看67共91頁代碼覆蓋率查看67共91頁67代碼覆蓋率查看68共91頁代碼覆蓋率查看68共91頁68動態(tài)時序仿真:利用仿真器〔Modelsim〕和延遲文件(SDF文件),通過反標(biāo)節(jié)點(diǎn)延遲信息來仿真。需要的文件:動態(tài)時序仿真〔后仿〕69共91頁動態(tài)時序仿真:利用仿真器〔Modelsim〕和延遲文件(SD691.修改Testbench,添加布局布線完導(dǎo)出的SDF文件/home/smic/smic_40/SCC40NLL_HS_RVT_V0/home/smic/smic_40/SP40NLLD2RN_3P3V_V動態(tài)時序仿真〔后仿〕步驟70共91頁1.修改Testbench,添加布局布線完導(dǎo)出的SDF文件動70Testbench中添加SDF文件在Testbench中新建一個initial塊,通過系統(tǒng)函數(shù)$sdf_annotate()來讀入SDF文件,并反標(biāo)到網(wǎng)表每個節(jié)點(diǎn)上。具體代碼如下:initialbegin$sdf_annotate(“/home/liuxp/class/astro/SDF/top_pad.sdf〞,top_tb.top_pad);endTestbench模塊名稱實(shí)例化的頂層模塊名稱71共91頁Testbench中添加SDF文件在Testbench中新建71后仿真波形整體功能波形:延遲信息:72共91頁后仿真波形整體功能波形:72共91頁72靜態(tài)驗(yàn)證工具靜態(tài)時序分析—PrimeTime形式驗(yàn)證--Formality73共91頁靜態(tài)驗(yàn)證工具靜態(tài)時序分析—PrimeTime73共91頁73靜態(tài)時序分析—PrimeTimePrimeTime是Synopsys的靜態(tài)時序分析軟件,常被用來分析大規(guī)模、同步、數(shù)字ASIC。PrimeTime適用于門級的電路設(shè)計(jì)。1.邏輯綜合后網(wǎng)表2.自動布局布線后網(wǎng)表74共91頁靜態(tài)時序分析—PrimeTimePrimeTime是Syno74PrimeTime流程1.設(shè)置查找和鏈接路徑;2.讀入并鏈接所要分析的設(shè)計(jì);3.設(shè)置PVT和線上負(fù)載模型;4.設(shè)置根本的時序約束;5.檢查所設(shè)置的約束以及該設(shè)計(jì)的構(gòu)造。75共91頁P(yáng)rimeTime流程1.設(shè)置查找和鏈接路徑;75共9175PrimeTime工具啟動pt_shell〔無圖形界面〕或者primetime&76共91頁P(yáng)rimeTime工具啟動76共91頁76命令輸入?yún)^(qū)77共91頁命令輸入?yún)^(qū)77共91頁77PrimeTime腳本—setlib_path/home/smic/smic_65/SCC65NLL_HS_RVT_V1p1aset

smic_stdlib_pathsetsmic_diolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/setsmic_aiolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_ANALOG_TTM_V0p2a/syn/3p3v/setsmic_stdsymlib_path${lib_path}/symbol/setsmic_iosymlib_path${lib_path}/symbol/setsearch_path$smic_stdlib_path$smic_aiolib_path\$smic_diolib_path$smic_stdsymlib_path$smic_iosymlib_path“setlink_library"*scc65nll_hs_rvt_ss_v1p08_125c_basic.dbscc65nll_hs_rvt_ff_v1p32_-40c_basic.dbSP65NLLD2RP_OV3_TTM_V0p2_ss_V1p08_125C.db“setsymbol_library[list]remove_design–allread_verilog“l(fā)ink_designdaccurrent_designdaclist_designsreport_cell78共91頁P(yáng)rimeTime腳本—setlib_path/home78PrimeTime腳本—set_operating_conditions-min_libraryscc65nll_hs_rvt_ff_v1p32_-40c_basic-minff_v1p32_-40c-max_libraryscc65nll_hs_rvt_ss_v1p08_125c_basic-maxss_v1p08_125c-analysis_typebc_wc//set_operating_conditions-libraryscc65nll_hs_rvt_ff_v1p32_-40c_basic//ff_v1p32_-40ccreate_clock-nameclk-period300-waveform[list0150]clk_in_padset_clock_latency[all_clocks]set_clock_uncertainty-setupclkset_clock_transition2[get_clocksclk]set_drive0[listclkclk_in_pad]set_load5[all_outputs]set_input_delay5-clockclk-max[remove_from_collection[all_inputs][get_ports{clk_in_pad}]]set_output_delay5-clockclk-max[all_outputs]report_constraintreport_timing79共91頁P(yáng)rimeTime腳本—set_operating_cond79形式驗(yàn)證--Formality所謂形式驗(yàn)證,就是通過比較兩個設(shè)計(jì)在邏輯功能是否等同的方法來驗(yàn)證電路的功能。Formality是Synopsys公司的產(chǎn)品,與PrimeTime結(jié)合起來使用。80共91頁形式驗(yàn)證--Formality所謂形式驗(yàn)證,就是通過比較兩個80形式驗(yàn)證--FormalityLogicConeBBBBInputsOutputsfromRegistersPrimaryInputPortsOutputsfromBlackBoxesComparePointsInputstoRegistersPrimaryOutputPortsInputstoBlackBoxesComparePointAdesigncontainsLogicConesandComparePoints81共91頁形式驗(yàn)證--FormalityLogicBBBBInputs81形式驗(yàn)證--FormalityDQBBDeterminingComparePointsBreaksthetwologiccircuitsupintologiccones:Endpoints(comparepoints)areprimaryoutputs,registers,andblackboxinputs82共91頁形式驗(yàn)證--FormalityDQBBDetermining82形式驗(yàn)證--FormalityDQBBReferenceDesignDQBBImplementationDesignCPCPCPComparepointsarethenaligned:Thisprocessiscalled“comparepointmatching〞Endpointsoflogiccones(comparepoints)areprimaryoutputs,registers,andblackboxinputs83共91頁形式驗(yàn)證--FormalityDQBBReferenceD83形式驗(yàn)證--FormalityVerifyDesignForeachmatchedpairofcomparepointsFormalitytriesto: EitherConfirmssameresponseforallpossibleinputcombinations.Markspointas“passed〞 OrFindsa“counterexample〞thatshowsdifferentresponseMarkspointas“failed〞84共91頁形式驗(yàn)證--FormalityVerifyDesignFo84Formality流程85共91頁Formality流程85共91頁85Formality工具啟動fm_shell〔無圖形界面〕或者formality&86共91頁Formality工具啟動86共91頁86命令輸入?yún)^(qū)87共91頁命令輸入?yún)^(qū)87共91頁87Formality—setlib_path/home/smic/smic_65/SCC65NLL_HS_RVT_V1p1asetsmic_stdlib_pathsetsmic_diolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/setsmic_aiolib_path/home/smic/smic_65/SP65NLLD2RP_OV3_ANALOG_TTM_V0p2a/syn/3p3v/setsearch_path“$smic_stdlib_path$smic_aiolib_path$smic_diolib_path"create_containerrefread_db[listscc65nll_hs_rvt_ss_v1p08_125c_basic.db\SP65NLLD2RP_OV3_TTM_V0p2_ss_V1p08_125C.db\]read_verilog{../rtl/dac_haf_cic/top.v\../rtl/dac_haf_cic/filter.v\../rtl/dac_haf_cic/en.v\../rtl/dac_haf_cic/haf1_new.v\../rtl/dac_haf_cic/haf2_new.v\../rtl/dac_haf_cic/Hcic.v\../rtl/dac_haf_cic/modulator.v\}88共91頁Formality—setlib_path/home/s88Formality—set_reference_designref:/WORK/totallink$refcreate_containericmpread_verilog-netlist../syn/netlist/dac.svset_implementation_designicmp:/WORK/totalset_topicmp:/WORK/totalsave_session-replacefm_shell_sessionexitformality&verifyreport_failing_pointsdiagnose89共91頁Formality—set_reference_design89作業(yè)后仿布局布線導(dǎo)出的網(wǎng)表文件〔帶SDF文件〕。90共91頁作業(yè)后仿布局布線導(dǎo)出的網(wǎng)表文件〔帶SDF文件〕。90共91頁90輸入一個564KHz的鍵控信號,〔這里為了簡化描述,使用564KHz來描述鍵控信號的速率,正常情況下是用kbps?!钞?dāng)鍵控信號為1時,模塊產(chǎn)生并輸出4.5MHz左右的信號(8倍)當(dāng)鍵控信號為0時,模塊產(chǎn)生并輸出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論