數字集成電路可測性設計及驗證方法學課件_第1頁
數字集成電路可測性設計及驗證方法學課件_第2頁
數字集成電路可測性設計及驗證方法學課件_第3頁
數字集成電路可測性設計及驗證方法學課件_第4頁
數字集成電路可測性設計及驗證方法學課件_第5頁
已閱讀5頁,還剩199頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數字集成電路可測性軟件設計及驗證平臺2013年4月25日數字集成電路可測性軟件設計及驗證平臺2013年4月25日2023/1/4共102頁2主要內容可測性基礎可測性設計工具驗證的必要性驗證方法學介紹驗證工具介紹2022/12/28共102頁2主要內容可測性基礎2023/1/4共102頁3主要內容可測性基礎可測性設計工具驗證的必要性驗證方法學介紹驗證工具介紹2022/12/28共102頁3主要內容可測性基礎可測性基礎什么是可測性設計?物理瑕疵及故障模型單一故障模型:SAFModel可測性設計常用方法檢測SAF的算法:D算法測試矢量集故障覆蓋率2023/1/4共102頁4可測性基礎什么是可測性設計?2022/12/28共102頁42023/1/4共102頁5什么是可測性設計?可測性設計,DesignForTest,即DFT。

為了測試所設計IC有沒有被正確的制造出來(測試半導體生產處理過程中的瑕疵,不是測試芯片設計的對錯)。DFT=增加芯片邏輯+生成測試矢量集(供測試設備用)2022/12/28共102頁5什么是可測性設計?2023/1/4共102頁6物理瑕疵和故障模型1.開路和短路

2.金屬線之間的電橋

3.漏源穿通CMOS反相器中的物理缺陷2022/12/28共102頁6物理瑕疵和故障模型CMOS2023/1/4共102頁7

物理故障 邏輯故障

封裝引腳間的漏電或短路 單一固定故障 芯片焊接點到管腳連線斷裂 延時故障 表面玷污、含濕氣 短路或者開路故障 金屬層遷移、應力、脫皮 …

金屬層開路、短路 … … …2022/12/28共102頁7 物理故障 邏2023/1/4共102頁8

固定1故障:

U0的輸入端A固定接在高電平上,其值一直為“1”

固定0故障:

U1的輸出端Y固定接在低電平上,其值一直為“0”單一固定故障:stuck-atfault2022/12/28共102頁8單一固定故障:stuck-a2023/1/4共102頁9DFT常用方法功能點測試

需在每個測試點增加可控的輸入和輸出,I/O增加掃描測試(基于D算法)

結構化的DFT技術,全掃描和部分掃描內建自測試消除了對ATE的存儲能力和頻率的限制,更具發展潛力2022/12/28共102頁9DFT常用方法功能點測試2023/1/4共102頁10D算法D算法是20世紀60年代IBM提出測試SAF(stuck-atfaultmodel,簡稱SAF模型)的,D算法在沒有故障和有故障的電路之間產生了邏輯的差異(Discrepancy),D為Discrepancy縮寫,D算法即為差異算法。經典的D算法如下:1、瞄準特定的SAF。2、驅動故障節點為反向值。3、把錯誤傳送到輸出端口。4、記錄測試向量,減掉已測試過的故障。

2022/12/28共102頁10D算法2023/1/4共102頁11D算法第一步:是把某個節點作為測試目標,我們把U1的輸出端作為測試的目標,探測它有無SA0的故障。2022/12/28共102頁11D算法第一步:是把某個節點2023/1/4共102頁12D算法第二步:是通過驅動該節點為相反的值以激活(activate)目標的故障。

輸入端口輸入邏輯“0”,如U1輸出沒有SA0的故障,其邏輯“1”;如U1輸出有SA0的故障,其邏輯為“0”。可以通過測試其邏輯值來判斷值該節點是否有SA0的故障。2022/12/28共102頁12D算法第二步:是通過驅動該2023/1/4共102頁13D算法第三步:是把故障效應傳送到輸出端口,可以在輸出端口觀測到其邏輯值,有故障節點的邏輯值通過組合電路后可能會反向,但是差異還保留著。2022/12/28共102頁13D算法第三步:是把故障效應2023/1/4共102頁14D算法第四步:記錄向量。成功的測試向量被記錄在內存里,已測試的故障從目標故障的清單里減掉。2022/12/28共102頁14D算法第四步:記錄向量。成2023/1/4共102頁15可測試的觸發器有兩種模式:正常模式——在這種模式下,所設計芯片以設計的原來功能工作;測試模式——在這種模式下,所設計芯片進行生產測試。掃描測試2022/12/28共102頁15可測試的觸發器有兩種模式:2023/1/4共102頁16掃描測試標準D觸發器與標準D觸發器等效的掃描觸發器2022/12/28共102頁16掃描測試標準D觸發器與標準2023/1/4共102頁17

使用掃描觸發器,會增加設計的面積,增加了路徑的延遲,增大了觸發器的輸出負載和電路的功耗。SMIC0.18μm工藝庫AREA(μm2)FFDQRHDLX63.2FFSDQRHDLX79.83增加百分比26.3%掃描測試2022/12/28共102頁17使用掃描觸發器,會增2023/1/4共102頁18掃描測試流程2022/12/28共102頁18掃描測試流程2023/1/4共102頁19測試矢量集(TestPattern)

由一個或多個測試序列組成的測試矢量,測試矢量包含輸入激勵和預期的輸出響應,以測試一個目標的故障。2022/12/28共102頁19測試矢量集(TestPa2023/1/4共102頁20以二輸入與非門為例,假設輸入為A,B,輸出為Y,Y=~(A*B);ABYA/1A/0B/1B/0Y/0Y/1001111101011011101101110101110010101測試矢量為:001,011,101,110

輸入激勵輸出響應2022/12/28共102頁20以二輸入與非門為例,假設輸2023/1/4共102頁21故障覆蓋率

可以測試到的故障占總故障的比例。如果電路的每個節點既可以控制(controllable),又可觀測(observable),那么電路的測試覆蓋率就高。

可控,可測可控,不可測不可控點:冗余電路,門控時鐘2022/12/28共102頁21故障覆蓋率可以測試到2023/1/4共102頁22業界產品測試方法ATE:AutomaticTestEquipment2022/12/28共102頁22業界產品測試方法ATE:2023/1/4共102頁232022/12/28共102頁232023/1/4共102頁24主要內容可測性基礎可測性設計工具驗證的必要性驗證方法學介紹驗證工具介紹2022/12/28共102頁24主要內容可測性基礎2023/1/4共102頁25DFTCompilerSynopsys公司的集成于DesignCompiler的先進測試綜合工具獨創的“一遍測試綜合”技術功能強大的掃描式可測性設計分析、綜合和驗證技術支持RTL級、門級的掃描測試設計規則檢查,以及給予約束的掃描鏈插入和優化啟動命令source/opt/demo/synopsys.envdesign_vision&2022/12/28共102頁25DFTCompilerS2023/1/4共102頁26設計流程2022/12/28共102頁26設計流程2023/1/4共102頁271.Scan-ReadySynthesisDFTCompiler2022/12/28共102頁271.Scan-Ready2023/1/4共102頁282.SetATEConfiguration2022/12/28共102頁282.SetATECon2023/1/4共102頁29即測試時鐘周期為100ns,輸入端口的數據輸入到達時間為5ns,雙向端口的數據輸入到達時間為55ns,輸出端口的數據程序采樣(strobe)時間為40ns。測試時間參數的設置一般放在.synopsys_dc.setup文件中,也可以包含在DC綜合腳本文件里。測試時鐘定義了驅動所有掃描觸發器的時鐘,測試時鐘一般與電路的工作時鐘不同,它是由ATE提供的,只在測試時使用。DFTC進行設計時,假設ATE對芯片做測試的所有時鐘周期是相同的,等于test_default_period。2.SetATEConfiguration2022/12/28共102頁29即測試時鐘周期為100ns2023/1/4共102頁303.Pre-ScanCheck執行create_test_protocol命令,生成測試協議執行dft_drc命令,檢查設計中有無測試設計規則的違規。典型的設計綜合規則有:

capacitance,transition,andfanout典型的測試設計規則主要檢查

1.設計中是否有測試違規使得無法插入掃描鏈

2.設計中是否有測試違規使得無法捕獲數據

3.設計中是否有測試違規使得測試覆蓋率降低2022/12/28共102頁303.Pre-ScanCh2023/1/4共102頁314.ScanSpecification

在DFTC中,可以用set_scan_configuration命令進行掃描路徑的管理set_scan_configuration-chain_count6set_scan_configuration-clock_mixingmix_clocksset_scan_configuration-internal_clockstrueset_scan_configuration-add_lockupfalse2022/12/28共102頁314.ScanSpecif2023/1/4共102頁324.ScanSpecification用下面的命令定義設計中其中一條掃描鏈:set_dft_signal-viewspec-typeScanDataIn-portSI1set_dft_signal-viewspec-typeScanDataOut-portSO1set_dft_signal-viewspec-typeScanEnable-portSE–active_satate1set_san_path-viewspecC1-scan_data_inSI1–scan_data_outS012022/12/28共102頁324.ScanSpecif2023/1/4共102頁335.ScanPreview執行preview_dft:1.檢查掃描路徑的一致性2.確定掃描鏈的數目3.分派掃描單元和為掃描單元排次序4.加入連接的硬件2022/12/28共102頁335.ScanPrevie2023/1/4共102頁346.ScanChainSynthesis執行insert_dft,讀取已預覽的掃描結構進行所需要的掃描代替插入測試點保證沒有競爭連接掃描路徑把違規減少到最少2022/12/28共102頁346.ScanChain2023/1/4共102頁35SettingtheEffortLevel2022/12/28共102頁35SettingtheE2023/1/4共102頁367.Post-ScanCheck2022/12/28共102頁367.Post-ScanC2023/1/4共102頁372022/12/28共102頁372023/1/4共102頁388.EstimateTestcoverage2022/12/28共102頁388.EstimateTe2023/1/4共102頁39FileOutputwrite-formatverilog–hierarchy–output./netlist/top_pad.svwrite_sdc./sdc/top_pad.sdcwrite_test_protocol-formatstil-output./spf/top_pad.spf.sv文件和.sdc文件供布局布線工具Astro生成芯片版圖.spf文件供測試矢量生成工具Tetramax生成與測試矢量集,待芯片流片封裝好后,測試矢量集供ATE設備來測試芯片。

2022/12/28共102頁39FileOutput2023/1/4共102頁40主要內容可測性基礎可測性設計工具驗證的必要性驗證方法學介紹驗證工具介紹2022/12/28共102頁40主要內容可測性基礎2023/1/4共102頁41驗證的必要性驗證的概念,驗證與測試的區別。經驗表明,驗證已經占到整個產品開發周期的70%以上,它已經成為復雜SOC(Systemon-Chip)開發中的重要壁壘。2022/12/28共102頁41驗證的必要性驗證的概念,驗2023/1/4共102頁42典型流程

時序不滿足動態仿真正確Verificationisnotjustveryhard,itisvery,veryhard沒有一個簡單的工具可以解決你所有的驗證問題。(VSIA,Virtual

Socket

Interface

Alliance)2022/12/28共102頁42典型流程時序不滿足動態2023/1/4共102頁43主要內容可測性基礎可測性設計工具驗證的必要性驗證方法學介紹驗證工具介紹2022/12/28共102頁43主要內容可測性基礎2023/1/4共102頁44驗證方法學方法學:又稱方法論,是一門學問采用的方法、規則與公理;一種特定的做法或一套做法。驗證方法學:指完成驗證過程中的一系列方法、技術和規范。

仿真技術

靜態技術

物理驗證

2022/12/28共102頁44驗證方法學方法學:又稱方法2023/1/4共102頁45仿真技術基于事件的仿真--任何一個輸入的變化都被標記為事件,即常說的功能仿真,精度高,速度慢。比如Modelsim,VCS。基于周期的仿真--單周期內只檢查一次輸入并計算設計的輸出邏輯值。速度快,無時序、毛刺。比如Cyclone。事務級仿真--一堆事件的集合即為事務,即常說的驗證平臺。軟硬件協同驗證--需要專門的軟硬件,成本高。2022/12/28共102頁45仿真技術基于事件的仿真--傳統仿真系統2023/1/4共102頁46DUT:DesignUnderTest適用于基于事件的仿真和基于周期的仿真。適用于簡單的設計。缺點:1.可擴展性差2.可重用性差傳統仿真系統2022/12/28共102頁46DUT:Des層次化的驗證系統2023/1/4共102頁47適用于事務級仿真優點:1.可擴展性好2.可重用性好層次化的驗證系統2022/12/28共102頁47適用于事務為什么要用事務級仿真?

2023/1/4共102頁48基于事件的仿真事務級仿真Testbench代碼可讀性,可維護性差強仿真速度慢快Testbench結構DUT復雜時,結構混亂DUT復雜時,結構清晰Testbench代碼量DUT簡單時,代碼量尚可DUT復雜時,代碼量巨大DUT簡單時,代碼量略多DUT復雜時。代碼量較少與待測設計聯系程度非常緊密行為級與DUT聯系緊密事務級具有自身獨立性可復用性無強抽象層次無有參考模型無有基于事件的仿真與事務級仿真的比較為什么要用事務級仿真?

2022/12/28共102頁48基事務級仿真RVM:ReferenceMethodologyMethodology,Synopsys公司。VMM:Verification

MethodologyManual,ARM公司和Synopsys公司。AVM:AdvancedVerificationMethodology,Mentor公司。OVM:OpenVerificationMethodology,Cadence公司和Mentor公司UVM:UniversalVerificationMethodology,Cadence公司2023/1/4共102頁49事務級仿真RVM:ReferenceMethodolog為什么選用OVM?

驗證方法學側重點EDA驗證工具支持的驗證語言基類庫是否開源RVM層次化驗證VCSOpenVera否VMMRTL級模塊VCSSystemVerilog是AVM層次化驗證QuestasimSystemC/SystemVerilog是OVM開源和不同仿真器之間的透明性支持不同驗證工具支持SystemVerilog等多種語言是UVM開源和快速入門QuestasimNC-verilog支持SystemVerilog等多種語言是2023/1/4共102頁50各種驗證方法學比較為什么選用OVM?

驗證方法學側重點EDA驗證工具支持的驗SystemVerilog介紹SystemVerilog結合了Verilog和C++的概念,具有如下新功能:1.面向對象編程(OOP)、2.隨機約束(ConstraintRandom)、3.斷言(Assertion)、4.功能覆蓋率(FunctionalCoverage)。2023/1/4共102頁51SystemVerilog介紹SystemVerilog結合OOP:Object-orientedprogramming類:定義實物的抽象特點,包含方法和屬性。對象:類的實例。方法:類的行為。繼承:子類包含類的特性。2023/1/4共102頁52SystemVerilog介紹-面向對象編程

OOP:Object-orientedprogramminCRT:ConstraintRandomTestclassmy_transactionextendsovm_transaction;

randintdata_i;constraintc_data_i{data_i>=0;data_i<262144;}

virtualfunctionvoidrandomize_();data_i=$random&18'h3ffff;endfunction2023/1/4共102頁53SystemVerilog介紹-隨機約束CRT:ConstraintRandomTest20SystemVerilog介紹-斷言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);2023/1/4共102頁54SystemVerilog介紹-斷言Assertion示FunctionalCoveragecovergroup:覆蓋率模型sample():采樣函數bins:倉CovergroupCovkind;coverpointtr.kind{//kind為4位數據binszero={0};binshi[]={[8:$]};};endgroup2023/1/4共102頁55SystemVerilog介紹-功能覆蓋率FunctionalCoverage2022/12/28共OVM介紹OVM是一種基于SystemVerilog的驗證方法或者策略。OVM已經實現了一個基本的層次化驗證平臺,大大簡化驗證工程師的工作量。OVM可以驗證HDL代碼或者網表文件OVM特點:1.開放性:支持所有驗證工具2.開源:OVM庫都是基于SystemVerilog實現

的,可以在網上下載。3.可靠性:兩大公司共同開發維護2023/1/4共102頁56OVM介紹OVM是一種基于SystemVerilog的驗證方2023/1/4共102頁57OVM結構ovm_envovm_sequecerovm_agentovm_transcationovm_scoreboardovm_driverovm_monitor2022/12/28共102頁57OVM結構ovm_env2023/1/4共102頁58靜態技術語法檢查--用戶可以自由控制需要檢查的規則,如代碼風格,可綜合檢查,DFT檢查。nlint工具。靜態時序分析--檢查建立、保持時間以及其他延時信息是否滿足設計時序要求。PrimeTime。形式驗證—不考慮時序信息,通常用于驗證兩個設計是否在功能上等效。Formality工具。2022/12/28共102頁58靜態技術語法檢查--用戶可2023/1/4共102頁59一般來說,要分析或檢驗一個電路設計的時序方面的特征有兩種主要手段:動態時序仿真(DynamicTimingSimulation)和靜態時序分析(StaticTimingAnalysis)

1.動態時序仿真:利用仿真器和延遲文件,通過反標節點延遲信息來仿真。

優點:可直觀查看波形;缺點:速度慢,看不到關鍵路徑。

2.靜態時序分析:分析每條時間路徑上的延遲,來查看是否存在setup/hold違反。

優點:分析速度比較快,全面;缺點:不能查看功能是否正確。靜態時序分析

2022/12/28共102頁59一般來說,要分析或檢驗一個2023/1/4共102頁60

所謂形式驗證,就是通過比較兩個設計在邏輯功能是否等同的方法來驗證電路的功能。優點:

1.不依賴于測試矢量,因此能提供更完全的驗證;

2.可以實現RTL-to-RTL、RTL-to-gate、gate-to-gate之間的驗證;

3.有定位功能,可以幫助你找出兩個設計之間功能不等同的原因;

4.可以使用的文件格式有VHDL、Verilog、Synopsys的.db格式,以及EDIF網表等;

5.可以實現自動的分層驗證;形式驗證2022/12/28共102頁60所謂形式驗證,就是通過比2023/1/4共102頁61物理驗證--版圖級電源電壓降電遷移功耗Astro布局布線工天線效應具中完成串擾2022/12/28共102頁61物理驗證--版圖級電源電壓2023/1/4共102頁62主要內容驗證的必要性驗證方法學介紹驗證工具介紹演示

2022/12/28共102頁62主要內容驗證的必要性如何利用OVM完成驗證?2023/1/4共102頁63如何利用OVM完成驗證?2022/12/28共102頁63基于OVM的數字濾波器驗證平臺數模轉化器(DAC)中的數字插值濾波器做為此驗證平臺的DUT數字插值濾波器的功能:1.提高采樣頻率2.濾除帶外(帶寬20KHz)噪聲

2023/1/4共102頁64輸入信號輸出信號基于OVM的數字濾波器驗證平臺數模轉化器(DAC)中的數字插傳統的濾波器驗證平臺仿真結果傳統的驗證平臺:基于定向測試矢量+波形查看的方式2023/1/4共102頁65傳統的濾波器驗證平臺仿真結果傳統的驗證平臺:基于定向測試矢量傳統驗證平臺沒找到BUG的原因

1.仿真時間沒有足夠長2.借助波形來判斷3.沒有與理想參考模型比較

基于OVM的驗證平臺2023/1/4共102頁66傳統驗證平臺沒找到BUG的原因

1.仿真時間沒有足夠長202OVM驗證平臺驗證步驟利用OVM庫完成平臺代碼啟動驗證工具創建編譯庫編譯驗證平臺代碼啟動仿真2023/1/4共102頁67OVM驗證平臺驗證步驟利用OVM庫完成平臺代碼2022/12利用OVM庫完成平臺代碼擴展OVM類逐層完成

接口

數據產生

驅動器

驗證環境

比較器2023/1/4共102頁68利用OVM庫完成平臺代碼擴展OVM類2022/12/28共1OVM平臺--接口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);//比較器模塊接口Endinterface

io_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));2023/1/4共102頁69OVM平臺--接口interfaceio_if();OVM平臺—數據產生classmy_transactionextendsovm_transaction;

randintdata_i;

functionnew(stringname="");

super.new(name);

endfunction:new

//產生隨機事件的約束條件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_transaction2023/1/4共102頁70OVM平臺—數據產生classmy_transactionOVM平臺—驅動器

classmy_driverextendsovm_driver;//

`ovm_component_utils(my_driver)//注冊本類,這個宏的結尾沒有符號;

virtualio_ifv_io;//裝載虛擬接口

ovm_get_port#(my_transaction)get_port;//裝載與激勵發生器通信的通道接口:

functionnew(stringname,ovm_componentparent);

super.new(name,parent);

//〖建議〗驗證程序中可寫一些ovm_report_info的語句供提示用:

ovm_report_info("","Calledmy_driver::new");//在測試結果顯示此函數被調用

endfunction:new

2023/1/4共102頁71OVM平臺—驅動器2022/12/28共102頁71functionvoidbuild;

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));v_io.dut_if.data_i=tx.data_i;

end

endtask:run

endclass:my_driver2023/1/4共102頁72functionvoidbuild;OVM平臺—驗證環境

classmy_envextendsovm_env;//

`ovm_component_utils(my_env)//注冊本類

ovm_random_stimulus#(my_transaction)env_stimulus;//裝載激勵器

tlm_fifo#(my_transaction)env_fifo;//裝載通道

my_driverenv_driver;//裝載驅動器

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

super.new(name,parent);

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

endfunction:new

2023/1/4共102頁73OVM平臺—驗證環境2022/12/28共102頁73virtualfunctionvoidbuild;

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);//初始化驅動器

endfunction:build

virtualfunctionvoidconnect;//設定連接關系

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

env_stimulus.blocking_put_port.connect(env_fifo.put_export);//激勵器側接口-放事件

env_driver.get_port.connect(env_fifo.get_export);//驅動器側接口-取事件

endfunction:connect2023/1/4共102頁74virtualfunctionvoidbuild;virtualfunctionvoidconfigure;//

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

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

endclass:my_env2023/1/4共102頁75virtualfunctionvoidconfigurmodulecheck(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);endmodule2023/1/4共102頁76OVM平臺—比較器modulecheck(io_if.check_ifio`timescale1ns/1nsmoduletop;

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),

.data_out_design_for_check(my_io.dut_if.data_o));

//〖建議〗在驗證程序頂級模塊中一般采用繼承ovm_test的類包裝繼承ovm_env的類2023/1/4共102頁77OVM平臺—頂層模塊`timescale1ns/1ns

classmy_testextendsovm_test;

`ovm_component_utils(my_test)//注冊本類

my_envtop_env;//裝載環境-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();//初始化

//〖建議〗在驗證程序中可設定看門狗

set_global_timeout(1000000us);

endfunction:build

2023/1/4共102頁78classmy_testextendsovm_tesvirtualfunctionvoidconnect;

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

top_env.env_driver.v_io=my_io;//連接虛擬接口到驅動器的物理接口

endfunction:connect

taskrun;

my_transactiontx;

tx=new();

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

top_env.env_stimulus.generate_stimulus(tx,2000000);//激勵器產生20個事件

endtask:run

endclass:my_test2023/1/4共102頁79virtualfunctionvoidconnect;initialbeginrun_test(“my_test”);

clock=0;

rst=0;

rst_check=0;

#(32*clock_cycle)rst=1;

endalways#(clock_cycle/2)clock=~clock;initial

begin

$fsdbDumpfile("top.fsdb");

$fsdbDumpSVA;

$fsdbDumpvars(0,top,"+all");end

endmodule:top2023/1/4共102頁80initialbegin2022/12/28共102頁啟動驗證工具利用mentor的questasim,界面和操作類似于modelsim環境變量source/opt/demo/questasim.env啟動命令vsim&2023/1/4共102頁81啟動驗證工具利用mentor的questasim,界面和操作腳本方式完成驗證vlibdac_hcic//創建庫vlog+acc-f../rtl/ovm_rtl/compile_questa_sv.f-workdac_hcic-sv+cover//編譯整個驗證平臺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//開始運行quit-sim//結束仿真2023/1/4共102頁82腳本方式完成驗證vlibdac_hcic//創建庫20compile_questa_sv.f+incdir+/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/src/home1t/opt/questasim/questasim/verilog_src/ovm-2.1.2/src/ovm_pkg.sv+incdir+/home/liuxp/dac/rtl/ovm_rtl+incdir+/home/liuxp/dac/rtl/dac_balise/dac_haf_cic/home/liuxp/dac/rtl/ovm_rtl/ovm_start.sv2023/1/4共102頁83compile_questa_sv.f+incdir+/ho結果查看斷言結果查看覆蓋率查看2023/1/4共102頁84結果查看斷言結果查看2022/12/28共102頁84斷言結果查看—Questasim下2023/1/4共102頁85斷言結果查看—Questasim下2022/12/28共10斷言結果查看—Verdi下2023/1/4共102頁86Verdi(另外一個軟件,專門用作波形查看和調試)下查看斷言結果更加直觀,箭頭朝上就表示端正通過,朝下表示斷言失敗。斷言結果查看—Verdi下2022/12/28共102頁86覆蓋率查看2023/1/4共102頁87覆蓋率查看2022/12/28共102頁87覆蓋率查看2023/1/4共102頁88覆蓋率查看2022/12/28共102頁88靜態驗證工具靜態時序分析—PrimeTime形式驗證--Formality2023/1/4共102頁89靜態驗證工具靜態時序分析—PrimeTime2022/12靜態時序分析—PrimeTimePrimeTime是Synopsys的靜態時序分析軟件,常被用來分析大規模、同步、數字ASIC。PrimeTime適用于門級的電路設計。1.邏輯綜合后網表2.自動布局布線后網表2023/1/4共102頁90靜態時序分析—PrimeTimePrimeTime是SynoPrimeTime流程

1.設置查找和鏈接路徑;2.讀入并鏈接所要分析的設計;3.設置操作條件和線上負載模型;4.設置基本的時序約束;5.檢查所設置的約束以及該設計的結構。2023/1/4共102頁91PrimeTime流程1.設置查找和鏈接路徑;2022/PrimeTime工具啟動source/opt/demo/synopsys.envpt_shellprimetime&2023/1/4共102頁92PrimeTime工具啟動source/opt/demo/2023/1/4共102頁93命令輸入區2022/12/28共102頁93命令輸入區2023/1/4共102頁94PrimeTime腳本—sourcept.scrsetlib_path/home1t/smic/smic_65/SCC65NLL_HS_RVT_V1p1asetsmic_stdlib_path${lib_path}/synopsys/1.2v/setsmic_diolib_path/home1t/smic/smic_65/SP65NLLD2RP_OV3_TTM_V0p2a/syn/3p3v/setsmic_aiolib_path/home1t/smic/smic_65/SP65NLLD2RP_OV3_

溫馨提示

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

評論

0/150

提交評論