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

下載本文檔

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

文檔簡(jiǎn)介

數(shù)字集成電路可測(cè)性軟件設(shè)計(jì)及驗(yàn)證平臺(tái)2013年4月25日2023/6/6共102頁(yè)2主要內(nèi)容可測(cè)性基礎(chǔ)可測(cè)性設(shè)計(jì)工具驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹2023/6/6共102頁(yè)3主要內(nèi)容可測(cè)性基礎(chǔ)可測(cè)性設(shè)計(jì)工具驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹可測(cè)性基礎(chǔ)什么是可測(cè)性設(shè)計(jì)?物理瑕疵及故障模型單一故障模型:SAFModel可測(cè)性設(shè)計(jì)常用方法檢測(cè)SAF的算法:D算法測(cè)試矢量集故障覆蓋率2023/6/6共102頁(yè)42023/6/6共102頁(yè)5什么是可測(cè)性設(shè)計(jì)?可測(cè)性設(shè)計(jì),DesignForTest,即DFT。

為了測(cè)試所設(shè)計(jì)IC有沒(méi)有被正確的制造出來(lái)(測(cè)試半導(dǎo)體生產(chǎn)處理過(guò)程中的瑕疵,不是測(cè)試芯片設(shè)計(jì)的對(duì)錯(cuò))。DFT=增加芯片邏輯+生成測(cè)試矢量集(供測(cè)試設(shè)備用)2023/6/6共102頁(yè)6物理瑕疵和故障模型1.開(kāi)路和短路

2.金屬線之間的電橋

3.漏源穿通CMOS反相器中的物理缺陷2023/6/6共102頁(yè)7

物理故障 邏輯故障

封裝引腳間的漏電或短路 單一固定故障 芯片焊接點(diǎn)到管腳連線斷裂 延時(shí)故障 表面玷污、含濕氣 短路或者開(kāi)路故障 金屬層遷移、應(yīng)力、脫皮 …

金屬層開(kāi)路、短路 … … …2023/6/6共102頁(yè)8

固定1故障:

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

固定0故障:

U1的輸出端Y固定接在低電平上,其值一直為“0”單一固定故障:stuck-atfault2023/6/6共102頁(yè)9DFT常用方法功能點(diǎn)測(cè)試

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

結(jié)構(gòu)化的DFT技術(shù),全掃描和部分掃描內(nèi)建自測(cè)試消除了對(duì)ATE的存儲(chǔ)能力和頻率的限制,更具發(fā)展?jié)摿?023/6/6共102頁(yè)10D算法D算法是20世紀(jì)60年代IBM提出測(cè)試SAF(stuck-atfaultmodel,簡(jiǎn)稱SAF模型)的,D算法在沒(méi)有故障和有故障的電路之間產(chǎn)生了邏輯的差異(Discrepancy),D為Discrepancy縮寫(xiě),D算法即為差異算法。經(jīng)典的D算法如下:1、瞄準(zhǔn)特定的SAF。2、驅(qū)動(dòng)故障節(jié)點(diǎn)為反向值。3、把錯(cuò)誤傳送到輸出端口。4、記錄測(cè)試向量,減掉已測(cè)試過(guò)的故障。

2023/6/6共102頁(yè)11D算法第一步:是把某個(gè)節(jié)點(diǎn)作為測(cè)試目標(biāo),我們把U1的輸出端作為測(cè)試的目標(biāo),探測(cè)它有無(wú)SA0的故障。2023/6/6共102頁(yè)12D算法第二步:是通過(guò)驅(qū)動(dòng)該節(jié)點(diǎn)為相反的值以激活(activate)目標(biāo)的故障。

輸入端口輸入邏輯“0”,如U1輸出沒(méi)有SA0的故障,其邏輯“1”;如U1輸出有SA0的故障,其邏輯為“0”??梢酝ㄟ^(guò)測(cè)試其邏輯值來(lái)判斷值該節(jié)點(diǎn)是否有SA0的故障。2023/6/6共102頁(yè)13D算法第三步:是把故障效應(yīng)傳送到輸出端口,可以在輸出端口觀測(cè)到其邏輯值,有故障節(jié)點(diǎn)的邏輯值通過(guò)組合電路后可能會(huì)反向,但是差異還保留著。2023/6/6共102頁(yè)14D算法第四步:記錄向量。成功的測(cè)試向量被記錄在內(nèi)存里,已測(cè)試的故障從目標(biāo)故障的清單里減掉。2023/6/6共102頁(yè)15可測(cè)試的觸發(fā)器有兩種模式:正常模式——在這種模式下,所設(shè)計(jì)芯片以設(shè)計(jì)的原來(lái)功能工作;測(cè)試模式——在這種模式下,所設(shè)計(jì)芯片進(jìn)行生產(chǎn)測(cè)試。掃描測(cè)試2023/6/6共102頁(yè)16掃描測(cè)試標(biāo)準(zhǔn)D觸發(fā)器與標(biāo)準(zhǔn)D觸發(fā)器等效的掃描觸發(fā)器2023/6/6共102頁(yè)17

使用掃描觸發(fā)器,會(huì)增加設(shè)計(jì)的面積,增加了路徑的延遲,增大了觸發(fā)器的輸出負(fù)載和電路的功耗。SMIC0.18μm工藝庫(kù)AREA(μm2)FFDQRHDLX63.2FFSDQRHDLX79.83增加百分比26.3%掃描測(cè)試2023/6/6共102頁(yè)18掃描測(cè)試流程2023/6/6共102頁(yè)19測(cè)試矢量集(TestPattern)

由一個(gè)或多個(gè)測(cè)試序列組成的測(cè)試矢量,測(cè)試矢量包含輸入激勵(lì)和預(yù)期的輸出響應(yīng),以測(cè)試一個(gè)目標(biāo)的故障。2023/6/6共102頁(yè)20以二輸入與非門(mén)為例,假設(shè)輸入為A,B,輸出為Y,Y=~(A*B);ABYA/1A/0B/1B/0Y/0Y/1001111101011011101101110101110010101測(cè)試矢量為:001,011,101,110

輸入激勵(lì)輸出響應(yīng)2023/6/6共102頁(yè)21故障覆蓋率

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

可控,可測(cè)可控,不可測(cè)不可控點(diǎn):冗余電路,門(mén)控時(shí)鐘2023/6/6共102頁(yè)22業(yè)界產(chǎn)品測(cè)試方法ATE:AutomaticTestEquipment2023/6/6共102頁(yè)232023/6/6共102頁(yè)24主要內(nèi)容可測(cè)性基礎(chǔ)可測(cè)性設(shè)計(jì)工具驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹2023/6/6共102頁(yè)25DFTCompilerSynopsys公司的集成于DesignCompiler的先進(jìn)測(cè)試綜合工具獨(dú)創(chuàng)的“一遍測(cè)試綜合”技術(shù)功能強(qiáng)大的掃描式可測(cè)性設(shè)計(jì)分析、綜合和驗(yàn)證技術(shù)支持RTL級(jí)、門(mén)級(jí)的掃描測(cè)試設(shè)計(jì)規(guī)則檢查,以及給予約束的掃描鏈插入和優(yōu)化啟動(dòng)命令source/opt/demo/synopsys.envdesign_vision&2023/6/6共102頁(yè)26設(shè)計(jì)流程2023/6/6共102頁(yè)271.Scan-ReadySynthesisDFTCompiler2023/6/6共102頁(yè)282.SetATEConfiguration2023/6/6共102頁(yè)29即測(cè)試時(shí)鐘周期為100ns,輸入端口的數(shù)據(jù)輸入到達(dá)時(shí)間為5ns,雙向端口的數(shù)據(jù)輸入到達(dá)時(shí)間為55ns,輸出端口的數(shù)據(jù)程序采樣(strobe)時(shí)間為40ns。測(cè)試時(shí)間參數(shù)的設(shè)置一般放在.synopsys_dc.setup文件中,也可以包含在DC綜合腳本文件里。測(cè)試時(shí)鐘定義了驅(qū)動(dòng)所有掃描觸發(fā)器的時(shí)鐘,測(cè)試時(shí)鐘一般與電路的工作時(shí)鐘不同,它是由ATE提供的,只在測(cè)試時(shí)使用。DFTC進(jìn)行設(shè)計(jì)時(shí),假設(shè)ATE對(duì)芯片做測(cè)試的所有時(shí)鐘周期是相同的,等于test_default_period。2.SetATEConfiguration2023/6/6共102頁(yè)303.Pre-ScanCheck執(zhí)行create_test_protocol命令,生成測(cè)試協(xié)議執(zhí)行dft_drc命令,檢查設(shè)計(jì)中有無(wú)測(cè)試設(shè)計(jì)規(guī)則的違規(guī)。典型的設(shè)計(jì)綜合規(guī)則有:

capacitance,transition,andfanout典型的測(cè)試設(shè)計(jì)規(guī)則主要檢查

1.設(shè)計(jì)中是否有測(cè)試違規(guī)使得無(wú)法插入掃描鏈

2.設(shè)計(jì)中是否有測(cè)試違規(guī)使得無(wú)法捕獲數(shù)據(jù)

3.設(shè)計(jì)中是否有測(cè)試違規(guī)使得測(cè)試覆蓋率降低2023/6/6共102頁(yè)314.ScanSpecification

在DFTC中,可以用set_scan_configuration命令進(jìn)行掃描路徑的管理set_scan_configuration-chain_count6set_scan_configuration-clock_mixingmix_clocksset_scan_configuration-internal_clockstrueset_scan_configuration-add_lockupfalse2023/6/6共102頁(yè)324.ScanSpecification用下面的命令定義設(shè)計(jì)中其中一條掃描鏈: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_outS012023/6/6共102頁(yè)335.ScanPreview執(zhí)行preview_dft:1.檢查掃描路徑的一致性2.確定掃描鏈的數(shù)目3.分派掃描單元和為掃描單元排次序4.加入連接的硬件2023/6/6共102頁(yè)346.ScanChainSynthesis執(zhí)行insert_dft,讀取已預(yù)覽的掃描結(jié)構(gòu)進(jìn)行所需要的掃描代替插入測(cè)試點(diǎn)保證沒(méi)有競(jìng)爭(zhēng)連接掃描路徑把違規(guī)減少到最少2023/6/6共102頁(yè)35SettingtheEffortLevel2023/6/6共102頁(yè)367.Post-ScanCheck2023/6/6共102頁(yè)372023/6/6共102頁(yè)388.EstimateTestcoverage2023/6/6共102頁(yè)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文件供測(cè)試矢量生成工具Tetramax生成與測(cè)試矢量集,待芯片流片封裝好后,測(cè)試矢量集供ATE設(shè)備來(lái)測(cè)試芯片。

2023/6/6共102頁(yè)40主要內(nèi)容可測(cè)性基礎(chǔ)可測(cè)性設(shè)計(jì)工具驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹2023/6/6共102頁(yè)41驗(yàn)證的必要性驗(yàn)證的概念,驗(yàn)證與測(cè)試的區(qū)別。經(jīng)驗(yàn)表明,驗(yàn)證已經(jīng)占到整個(gè)產(chǎn)品開(kāi)發(fā)周期的70%以上,它已經(jīng)成為復(fù)雜SOC(Systemon-Chip)開(kāi)發(fā)中的重要壁壘。2023/6/6共102頁(yè)42典型流程

時(shí)序不滿足動(dòng)態(tài)仿真正確Verificationisnotjustveryhard,itisvery,veryhard沒(méi)有一個(gè)簡(jiǎn)單的工具可以解決你所有的驗(yàn)證問(wèn)題。(VSIA,Virtual

Socket

Interface

Alliance)2023/6/6共102頁(yè)43主要內(nèi)容可測(cè)性基礎(chǔ)可測(cè)性設(shè)計(jì)工具驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹2023/6/6共102頁(yè)44驗(yàn)證方法學(xué)方法學(xué):又稱方法論,是一門(mén)學(xué)問(wèn)采用的方法、規(guī)則與公理;一種特定的做法或一套做法。驗(yàn)證方法學(xué):指完成驗(yàn)證過(guò)程中的一系列方法、技術(shù)和規(guī)范。

仿真技術(shù)

靜態(tài)技術(shù)

物理驗(yàn)證

2023/6/6共102頁(yè)45仿真技術(shù)基于事件的仿真--任何一個(gè)輸入的變化都被標(biāo)記為事件,即常說(shuō)的功能仿真,精度高,速度慢。比如Modelsim,VCS。基于周期的仿真--單周期內(nèi)只檢查一次輸入并計(jì)算設(shè)計(jì)的輸出邏輯值。速度快,無(wú)時(shí)序、毛刺。比如Cyclone。事務(wù)級(jí)仿真--一堆事件的集合即為事務(wù),即常說(shuō)的驗(yàn)證平臺(tái)。軟硬件協(xié)同驗(yàn)證--需要專門(mén)的軟硬件,成本高。傳統(tǒng)仿真系統(tǒng)2023/6/6共102頁(yè)46DUT:DesignUnderTest適用于基于事件的仿真和基于周期的仿真。適用于簡(jiǎn)單的設(shè)計(jì)。缺點(diǎn):1.可擴(kuò)展性差2.可重用性差層次化的驗(yàn)證系統(tǒng)2023/6/6共102頁(yè)47適用于事務(wù)級(jí)仿真優(yōu)點(diǎn):1.可擴(kuò)展性好2.可重用性好為什么要用事務(wù)級(jí)仿真?

2023/6/6共102頁(yè)48基于事件的仿真事務(wù)級(jí)仿真Testbench代碼可讀性,可維護(hù)性差強(qiáng)仿真速度慢快Testbench結(jié)構(gòu)DUT復(fù)雜時(shí),結(jié)構(gòu)混亂DUT復(fù)雜時(shí),結(jié)構(gòu)清晰Testbench代碼量DUT簡(jiǎn)單時(shí),代碼量尚可DUT復(fù)雜時(shí),代碼量巨大DUT簡(jiǎn)單時(shí),代碼量略多DUT復(fù)雜時(shí)。代碼量較少與待測(cè)設(shè)計(jì)聯(lián)系程度非常緊密行為級(jí)與DUT聯(lián)系緊密事務(wù)級(jí)具有自身獨(dú)立性可復(fù)用性無(wú)強(qiáng)抽象層次無(wú)有參考模型無(wú)有基于事件的仿真與事務(wù)級(jí)仿真的比較事務(wù)級(jí)仿真RVM:ReferenceMethodologyMethodology,Synopsys公司。VMM:Verification

MethodologyManual,ARM公司和Synopsys公司。AVM:AdvancedVerificationMethodology,Mentor公司。OVM:OpenVerificationMethodology,Cadence公司和Mentor公司UVM:UniversalVerificationMethodology,Cadence公司2023/6/6共102頁(yè)49為什么選用OVM?

驗(yàn)證方法學(xué)側(cè)重點(diǎn)EDA驗(yàn)證工具支持的驗(yàn)證語(yǔ)言基類庫(kù)是否開(kāi)源RVM層次化驗(yàn)證VCSOpenVera否VMMRTL級(jí)模塊VCSSystemVerilog是AVM層次化驗(yàn)證QuestasimSystemC/SystemVerilog是OVM開(kāi)源和不同仿真器之間的透明性支持不同驗(yàn)證工具支持SystemVerilog等多種語(yǔ)言是UVM開(kāi)源和快速入門(mén)QuestasimNC-verilog支持SystemVerilog等多種語(yǔ)言是2023/6/6共102頁(yè)50各種驗(yàn)證方法學(xué)比較SystemVerilog介紹SystemVerilog結(jié)合了Verilog和C++的概念,具有如下新功能:1.面向?qū)ο缶幊?OOP)、2.隨機(jī)約束(ConstraintRandom)、3.斷言(Assertion)、4.功能覆蓋率(FunctionalCoverage)。2023/6/6共102頁(yè)51OOP:Object-orientedprogramming類:定義實(shí)物的抽象特點(diǎn),包含方法和屬性。對(duì)象:類的實(shí)例。方法:類的行為。繼承:子類包含類的特性。2023/6/6共102頁(yè)52SystemVerilog介紹-面向?qū)ο缶幊?/p>

CRT:ConstraintRandomTestclassmy_transactionextendsovm_transaction;

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

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

的,可以在網(wǎng)上下載。3.可靠性:兩大公司共同開(kāi)發(fā)維護(hù)2023/6/6共102頁(yè)562023/6/6共102頁(yè)57OVM結(jié)構(gòu)ovm_envovm_sequecerovm_agentovm_transcationovm_scoreboardovm_driverovm_monitor2023/6/6共102頁(yè)58靜態(tài)技術(shù)語(yǔ)法檢查--用戶可以自由控制需要檢查的規(guī)則,如代碼風(fēng)格,可綜合檢查,DFT檢查。nlint工具。靜態(tài)時(shí)序分析--檢查建立、保持時(shí)間以及其他延時(shí)信息是否滿足設(shè)計(jì)時(shí)序要求。PrimeTime。形式驗(yàn)證—不考慮時(shí)序信息,通常用于驗(yàn)證兩個(gè)設(shè)計(jì)是否在功能上等效。Formality工具。2023/6/6共102頁(yè)59一般來(lái)說(shuō),要分析或檢驗(yàn)一個(gè)電路設(shè)計(jì)的時(shí)序方面的特征有兩種主要手段:動(dòng)態(tài)時(shí)序仿真(DynamicTimingSimulation)和靜態(tài)時(shí)序分析(StaticTimingAnalysis)

1.動(dòng)態(tài)時(shí)序仿真:利用仿真器和延遲文件,通過(guò)反標(biāo)節(jié)點(diǎn)延遲信息來(lái)仿真。

優(yōu)點(diǎn):可直觀查看波形;缺點(diǎn):速度慢,看不到關(guān)鍵路徑。

2.靜態(tài)時(shí)序分析:分析每條時(shí)間路徑上的延遲,來(lái)查看是否存在setup/hold違反。

優(yōu)點(diǎn):分析速度比較快,全面;缺點(diǎn):不能查看功能是否正確。靜態(tài)時(shí)序分析

2023/6/6共102頁(yè)60

所謂形式驗(yàn)證,就是通過(guò)比較兩個(gè)設(shè)計(jì)在邏輯功能是否等同的方法來(lái)驗(yàn)證電路的功能。優(yōu)點(diǎn):

1.不依賴于測(cè)試矢量,因此能提供更完全的驗(yàn)證;

2.可以實(shí)現(xiàn)RTL-to-RTL、RTL-to-gate、gate-to-gate之間的驗(yàn)證;

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

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

5.可以實(shí)現(xiàn)自動(dòng)的分層驗(yàn)證;形式驗(yàn)證2023/6/6共102頁(yè)61物理驗(yàn)證--版圖級(jí)電源電壓降電遷移功耗Astro布局布線工天線效應(yīng)具中完成串?dāng)_2023/6/6共102頁(yè)62主要內(nèi)容驗(yàn)證的必要性驗(yàn)證方法學(xué)介紹驗(yàn)證工具介紹演示

如何利用OVM完成驗(yàn)證?2023/6/6共102頁(yè)63基于OVM的數(shù)字濾波器驗(yàn)證平臺(tái)數(shù)模轉(zhuǎn)化器(DAC)中的數(shù)字插值濾波器做為此驗(yàn)證平臺(tái)的DUT數(shù)字插值濾波器的功能:1.提高采樣頻率2.濾除帶外(帶寬20KHz)噪聲

2023/6/6共102頁(yè)64輸入信號(hào)輸出信號(hào)傳統(tǒng)的濾波器驗(yàn)證平臺(tái)仿真結(jié)果傳統(tǒng)的驗(yàn)證平臺(tái):基于定向測(cè)試矢量+波形查看的方式2023/6/6共102頁(yè)65傳統(tǒng)驗(yàn)證平臺(tái)沒(méi)找到BUG的原因

1.仿真時(shí)間沒(méi)有足夠長(zhǎng)2.借助波形來(lái)判斷3.沒(méi)有與理想?yún)⒖寄P捅容^

基于OVM的驗(yàn)證平臺(tái)2023/6/6共102頁(yè)66OVM驗(yàn)證平臺(tái)驗(yàn)證步驟利用OVM庫(kù)完成平臺(tái)代碼啟動(dòng)驗(yàn)證工具創(chuàng)建編譯庫(kù)編譯驗(yàn)證平臺(tái)代碼啟動(dòng)仿真2023/6/6共102頁(yè)67利用OVM庫(kù)完成平臺(tái)代碼擴(kuò)展OVM類逐層完成

接口

數(shù)據(jù)產(chǎn)生

驅(qū)動(dòng)器

驗(yàn)證環(huán)境

比較器2023/6/6共102頁(yè)68OVM平臺(tái)--接口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/6/6共102頁(yè)69OVM平臺(tái)—數(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_transaction2023/6/6共102頁(yè)70OVM平臺(tái)—驅(qū)動(dòng)器

classmy_driverextendsovm_driver;//

`ovm_component_utils(my_driver)//注冊(cè)本類,這個(gè)宏的結(jié)尾沒(méi)有符號(hào);

virtualio_ifv_io;//裝載虛擬接口

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

functionnew(stringname,ovm_componentparent);

super.new(name,parent);

//〖建議〗驗(yàn)證程序中可寫(xiě)一些ovm_report_info的語(yǔ)句供提示用:

ovm_report_info("","Calledmy_driver::new");//在測(cè)試結(jié)果顯示此函數(shù)被調(diào)用

endfunction:new

2023/6/6共102頁(yè)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);//從通道中取一個(gè)事件

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/6/6共102頁(yè)72OVM平臺(tái)—驗(yàn)證環(huán)境

classmy_envextendsovm_env;//

`ovm_component_utils(my_env)//注冊(cè)本類

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

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

my_driverenv_driver;//裝載驅(qū)動(dòng)器

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

super.new(name,parent);

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

endfunction:new

2023/6/6共102頁(yè)73virtualfunctionvoidbuild;

super.build();

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

env_stimulus=new("env_stimulus",this);//初始化激勵(lì)器

env_fifo=new("env_fifo",this);//初始化通道

env_driver=new("env.driver",this);//初始化驅(qū)動(dòng)器

endfunction:build

virtualfunctionvoidconnect;//設(shè)定連接關(guān)系

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

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

env_driver.get_port.connect(env_fifo.get_export);//驅(qū)動(dòng)器側(cè)接口-取事件

endfunction:connect2023/6/6共102頁(yè)74virtualfunctionvoidconfigure;//

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í),以上函數(shù)將自動(dòng)依次運(yùn)行

endclass:my_env2023/6/6共102頁(yè)75modulecheck(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/6/6共102頁(yè)76OVM平臺(tái)—比較器`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));

//〖建議〗在驗(yàn)證程序頂級(jí)模塊中一般采用繼承ovm_test的類包裝繼承ovm_env的類2023/6/6共102頁(yè)77OVM平臺(tái)—頂層模塊

classmy_testextendsovm_test;

`ovm_component_utils(my_test)//注冊(cè)本類

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è)定看門(mén)狗

set_global_timeout(1000000us);

endfunction:build

2023/6/6共102頁(yè)78virtualfunctionvoidconnect;

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

top_env.env_driver.v_io=my_io;//連接虛擬接口到驅(qū)動(dòng)器的物理接口

endfunction:connect

taskrun;

my_transactiontx;

tx=new();

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

top_env.env_stimulus.generate_stimulus(tx,2000000);//激勵(lì)器產(chǎn)生20個(gè)事件

endtask:run

endclass:my_test2023/6/6共102頁(yè)79initialbeginrun_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/6/6共102頁(yè)80啟動(dòng)驗(yàn)證工具利用mentor的questasim,界面和操作類似于modelsim環(huán)境變量source/opt/demo/questasim.env啟動(dòng)命令vsim&2023/6/6共102頁(yè)81腳本方式完成驗(yàn)證vlibdac_hcic//創(chuàng)建庫(kù)vlog+acc-f../rtl/ovm_rtl/compile_questa_sv.f-workdac_hcic-sv+cover//編譯整個(gè)驗(yàn)證平臺(tái)vsim-cdac_hcic.top-sv_seed100-coverage-assertcover-assertdebug-sva-voptargs=“+acc”-pli/opt/springsoft/verdi/share/PLI/MODELSIM/LINUX/novas_fli.so//啟動(dòng)仿真viewassertions//查看斷言run-all//開(kāi)始運(yùn)行quit-sim//結(jié)束仿真2023/6/6共102頁(yè)82compile_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/6/6共102頁(yè)83結(jié)果查看斷言結(jié)果查看覆蓋率查看2023/6/6共102頁(yè)84斷言結(jié)果查看—Questasim下2023/6/6共102頁(yè)85斷言結(jié)果查看—Verdi下2023/6/6共102頁(yè)86Verdi(另外一個(gè)軟件,專門(mén)用作波形查看和調(diào)試)下查看斷言結(jié)果更加直觀,箭頭朝上就表示端正通過(guò),朝下表示斷言失敗。覆蓋率查看2023/6/6共102頁(yè)87覆蓋率查看2023/6/6共102頁(yè)88靜態(tài)驗(yàn)證工具靜態(tài)時(shí)序分析—PrimeTime形式驗(yàn)證--Formality2023/6/6共102頁(yè)89靜態(tài)時(shí)序分析—PrimeTimePrimeTime是Synopsys的靜態(tài)時(shí)序分析軟件,常被用來(lái)分析大規(guī)模、同步、數(shù)字ASIC。PrimeTime適用于門(mén)級(jí)的電路設(shè)計(jì)。1.邏輯綜合后網(wǎng)表2.自動(dòng)布局布線后網(wǎng)表2023/6/6共102頁(yè)90PrimeTime流程

1.設(shè)置查找和鏈接路徑;2.讀入并鏈接所要分析的設(shè)計(jì);3.設(shè)置操作條件和線上負(fù)載模型;4.設(shè)置基本的時(shí)序約束;5.檢查所設(shè)置的約束以及該設(shè)計(jì)的結(jié)構(gòu)。2023/6/6共102頁(yè)91PrimeTime工具啟動(dòng)source/opt/demo/synopsys.envpt_shellprimetime&2023/6/6共102頁(yè)922023/6/6共102頁(yè)93命令輸入?yún)^(qū)2023/6/6共102頁(yè)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_ANALOG_TTM_V0p2a/syn/3p3v/setsmic_stdsymlib_path${lib_path}/Symbol/setsearch_path"$search_path$smic_stdlib_path$smic_aiolib_path\$smic_diolib_path$smic_stdsymlib_path$smic_iosymlib_path“setlink_path"*scc65nll_hs_rvt_ss_v1p08_125c

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論