FPGA設(shè)計(jì)基礎(chǔ)-第4章設(shè)計(jì)驗(yàn)證課件_第1頁
FPGA設(shè)計(jì)基礎(chǔ)-第4章設(shè)計(jì)驗(yàn)證課件_第2頁
FPGA設(shè)計(jì)基礎(chǔ)-第4章設(shè)計(jì)驗(yàn)證課件_第3頁
FPGA設(shè)計(jì)基礎(chǔ)-第4章設(shè)計(jì)驗(yàn)證課件_第4頁
FPGA設(shè)計(jì)基礎(chǔ)-第4章設(shè)計(jì)驗(yàn)證課件_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章設(shè)計(jì)驗(yàn)證隨著集成度的提高,系統(tǒng)的規(guī)模日益龐大且復(fù)雜。強(qiáng)壯的系統(tǒng)應(yīng)有完備的驗(yàn)證作保障。驗(yàn)證工作量遠(yuǎn)大于系統(tǒng)設(shè)計(jì)工作量。驗(yàn)證工作的基本技術(shù)和方法。Page1目前,驗(yàn)證一般通過仿真實(shí)現(xiàn)本章節(jié)中,驗(yàn)證和仿真不加區(qū)分1精選課件ppt4.1驗(yàn)證概述Page2驗(yàn)證過程是證明設(shè)計(jì)正確的過程,驗(yàn)證的目的是為了保證設(shè)計(jì)實(shí)現(xiàn)與設(shè)計(jì)規(guī)范是一致的,保證從設(shè)計(jì)規(guī)范開始,經(jīng)過一系列變換后得到的網(wǎng)表與最初的規(guī)范是一致的,整個(gè)變換的過程是正確的。4.1.1驗(yàn)證的概念2精選課件pptPage34.1驗(yàn)證概述從自然語言表述的系統(tǒng)規(guī)范變換成完整的、可驗(yàn)證和無二義性的系統(tǒng)規(guī)范。從系統(tǒng)規(guī)范變換成可實(shí)現(xiàn)的模塊設(shè)計(jì)規(guī)范。從模塊設(shè)計(jì)規(guī)范變換成RTL及代碼描述。從RTL代碼通過綜合工具變換成門級網(wǎng)表。從門級網(wǎng)表通過后端布局布線工具變換成具有延時(shí)信息的網(wǎng)表。FPGA設(shè)計(jì)可能包含的幾個(gè)變換:3精選課件pptPage44.1驗(yàn)證概述驗(yàn)證是一個(gè)多次重復(fù)的過程,是一個(gè)不斷向期望結(jié)果靠近的過程。系統(tǒng)規(guī)范網(wǎng)表交換驗(yàn)證4精選課件pptPage54.1驗(yàn)證概述驗(yàn)證和測試是ASIC設(shè)計(jì)流程中兩個(gè)不同的環(huán)節(jié)。驗(yàn)證的目的則是為了確認(rèn)設(shè)計(jì)符合設(shè)計(jì)規(guī)范,目前驗(yàn)證一般通過仿真實(shí)現(xiàn)。測試的目的是為了確認(rèn)生產(chǎn)后的設(shè)計(jì)產(chǎn)品是否合格、正確,一般由加工廠家或封裝測試廠家完成。4.1.2驗(yàn)證和測試(VerificationvsTest)5精選課件ppt4.1驗(yàn)證概述系統(tǒng)規(guī)范網(wǎng)表芯片電路設(shè)計(jì)生產(chǎn)驗(yàn)證(仿真)測試對物理器件高低電平的確認(rèn)不屬于本教材范疇對設(shè)計(jì)規(guī)范及功能的確認(rèn)6精選課件pptPage64.1驗(yàn)證概述傳統(tǒng)的電子線路設(shè)計(jì)驗(yàn)證方法4.1.3Top-Down/Bottom-Up驗(yàn)證方法目前的電子線路設(shè)計(jì)驗(yàn)證方法邏輯設(shè)計(jì)、畫電路圖、搭建電路、測試驗(yàn)證借助EDA工具在計(jì)算機(jī)上進(jìn)行RTL級設(shè)計(jì)和驗(yàn)證。7精選課件pptPage74.1.3Top-Down/Bottom-Up驗(yàn)證方法Top-Down驗(yàn)證法系統(tǒng)級驗(yàn)證:根據(jù)系統(tǒng)規(guī)范對系統(tǒng)進(jìn)行建模,并對建立的模型進(jìn)行驗(yàn)證。功能驗(yàn)證:驗(yàn)證設(shè)計(jì)的RTL代碼應(yīng)符合系統(tǒng)規(guī)范。主要方法--功能仿真(形式化驗(yàn)證為輔)。門級網(wǎng)表驗(yàn)證:通過功能仿真或形式化工具檢驗(yàn)RTL代碼和綜合后網(wǎng)表的是否相等。時(shí)序驗(yàn)證:驗(yàn)證綜合后含有延時(shí)信息的網(wǎng)表時(shí)序是否滿足要求。對于同步設(shè)計(jì)一般通過靜態(tài)時(shí)序分析工具完成驗(yàn)證。8精選課件pptPage84.1.3Top-Down/Bottom-Up驗(yàn)證方法Bottom-Up驗(yàn)證法模塊級驗(yàn)證驗(yàn)證模塊的各種工作情況,保證每個(gè)單元的設(shè)計(jì)質(zhì)量。子系統(tǒng)驗(yàn)證、系統(tǒng)級驗(yàn)證分層次組裝模塊進(jìn)行子系統(tǒng)驗(yàn)證直至完成系統(tǒng)級驗(yàn)證。備注:系統(tǒng)級驗(yàn)證,目標(biāo)是驗(yàn)證整個(gè)設(shè)計(jì)的功能。驗(yàn)證主要集中在設(shè)計(jì)和外環(huán)境之間能否協(xié)調(diào)工作,包括一些極端情況、邊界條件和錯誤處理等。9精選課件pptPage9目前主流的兩類“驗(yàn)證技術(shù)”:4.1.4驗(yàn)證技術(shù)(1)基于形式化的驗(yàn)證通過數(shù)學(xué)的方法,證明設(shè)計(jì)的功能是否與規(guī)范一致。等價(jià)性檢驗(yàn):比較兩個(gè)設(shè)計(jì)是否完全等價(jià)。兩個(gè)網(wǎng)表比較,網(wǎng)表與RTL代碼比較模型檢驗(yàn):根據(jù)設(shè)計(jì)的RTL代碼,提取有限狀態(tài)機(jī)并窮舉搜索設(shè)計(jì)狀態(tài)空間,驗(yàn)證設(shè)計(jì)特性。模型檢驗(yàn)工具:Cadence的FormalCheck、IBM的Sugar和

Sypopsys的Vera局限性很大1、設(shè)計(jì)規(guī)模越來越大復(fù)雜2、模型檢驗(yàn)所描述的特性有限10精選課件ppt4.1.4驗(yàn)證技術(shù)(2)基于TestBench的驗(yàn)證(目前主要的驗(yàn)證方式)Testbench——測試平臺即:Testbench產(chǎn)生激勵給被驗(yàn)證設(shè)計(jì)(DUV)或待測設(shè)計(jì)(DUT),同時(shí)檢查DUV/DUT輸出是否滿足要求11精選課件pptPage104.1.4驗(yàn)證技術(shù)

TB結(jié)構(gòu)模型黑盒驗(yàn)證法白盒驗(yàn)證法灰盒驗(yàn)證法解釋:DUV/DUTDesignUnderVerificationDesignUnderTest12精選課件pptTestbench功能:為DUV/DUT提供激勵信號正確實(shí)例化DUV/DUT將仿真數(shù)據(jù)顯示在終端或者存為文件,也可以顯示在波形窗口用于分析復(fù)雜設(shè)計(jì)可以使用EDA工具,自動比較仿真結(jié)果與理想值。激勵實(shí)例化DUT終端顯示值、存成文件波形顯示自動比較結(jié)果正確性13精選課件ppt4.1.5仿真工具1、仿真器仿真器是驗(yàn)證中最常用的工具。仿真器試圖創(chuàng)建一個(gè)能夠模擬真實(shí)設(shè)計(jì)的工作環(huán)境,使驗(yàn)證工程師和設(shè)計(jì)進(jìn)行交互,在設(shè)計(jì)生產(chǎn)之前發(fā)現(xiàn)設(shè)計(jì)錯誤,以減少損失。之所以稱為仿真器,是因?yàn)樗鼈兪钦鎸?shí)狀態(tài)的一種近似。Page1114精選課件pptPage124.1.5仿真工具驗(yàn)證人員在仿真器中,通過testbench為設(shè)計(jì)提供輸入激勵(為電路建立模擬工作環(huán)境),仿真器通過一定方式與驗(yàn)證人員交互,將電路的輸出狀態(tài)隨環(huán)境變化的信息反映給驗(yàn)證人員。業(yè)界常用的仿真器有:Cadence的NC-Verilog,Synopsys的VCS和Mentor的ModelSim15精選課件pptPage134.1.5仿真工具最常見的和仿真器一起使用的驗(yàn)證工具。通過波形觀察器的圖形界面,設(shè)計(jì)人員可以直觀地觀察隨時(shí)間變化的信號以及信號之間的相互關(guān)系,定位設(shè)計(jì)錯誤或測試文件的錯誤。2、波形觀察器工具TB運(yùn)行中即統(tǒng)計(jì)被測設(shè)計(jì)代碼的測試覆蓋情況,給出報(bào)告,驗(yàn)證者可依據(jù)此報(bào)告分析判斷驗(yàn)證工作的完備性。幾個(gè)主要覆蓋分析方面:3、代碼覆蓋分析工具16精選課件ppt4.1.5仿真工具使用代碼覆蓋技術(shù)必須非常了解設(shè)計(jì)細(xì)節(jié),通過代碼覆蓋分析工具了解哪些語句、路徑已經(jīng)被執(zhí)行,那些表達(dá)式已經(jīng)被執(zhí)行,那些過程沒有被觸發(fā)等等,然后修改測試程序,提高代碼覆蓋率。提高覆蓋率可以提高測試的完備性。語句覆蓋路徑覆蓋表達(dá)式覆蓋觸發(fā)覆蓋自動機(jī)覆蓋17精選課件pptPage154.1.6驗(yàn)證計(jì)劃和流程隨著設(shè)計(jì)規(guī)模的加大,驗(yàn)證工作量越來越大,制定驗(yàn)證計(jì)劃或者《驗(yàn)證規(guī)范》是驗(yàn)證過程的一個(gè)重要環(huán)節(jié),驗(yàn)證計(jì)劃可以提高驗(yàn)證效率,減少驗(yàn)證的盲目性。制定《驗(yàn)證規(guī)范》在《系統(tǒng)設(shè)計(jì)規(guī)范》簽收(signoff)后開始。18精選課件pptPage164.1.6驗(yàn)證計(jì)劃和流程應(yīng)該注意:驗(yàn)證工程師應(yīng)與總體設(shè)計(jì)師以及設(shè)計(jì)人員一起討論整個(gè)設(shè)計(jì)功能、模塊劃分、接口方式等,詳盡理解設(shè)計(jì)規(guī)范。在此基礎(chǔ)上制定《驗(yàn)證方案》確定需要驗(yàn)證的功能特性,確定驗(yàn)證策略,規(guī)劃驗(yàn)證環(huán)境和驗(yàn)證程序的開發(fā),確定整個(gè)驗(yàn)證所需的驗(yàn)證人員的數(shù)目,資源和時(shí)間等等。19精選課件pptPage174.1.6驗(yàn)證計(jì)劃和流程典型的驗(yàn)證流程20精選課件pptPage184.1.6驗(yàn)證計(jì)劃和流程《驗(yàn)證方案》的要點(diǎn)(驗(yàn)證什么、如何驗(yàn)證)確定設(shè)計(jì)需要驗(yàn)證的特性(驗(yàn)證內(nèi)容);確定驗(yàn)證策略系統(tǒng)級/模塊級,黑/白/灰盒式驗(yàn)證,激勵產(chǎn)生策略,驗(yàn)證響應(yīng)方式(觀察法、記錄法、自檢查法),人員、設(shè)備、環(huán)境管理安排等。確定驗(yàn)證方法具體驗(yàn)證的步驟和方法,如自頂向下/自下向上,激勵的具體方式等。21精選課件ppt4.1.6驗(yàn)證計(jì)劃和流程制作標(biāo)準(zhǔn)的測試組件和測試模板。個(gè)人編制相關(guān)部分的測試方案;編制、調(diào)試測試程序,進(jìn)行系統(tǒng)測試。測試記錄及分析,編制測試報(bào)告?;貧w測試:對發(fā)現(xiàn)問題修改后的設(shè)計(jì)重新測試。

(1)確認(rèn)修改是否正確(2)修改是否影響其他設(shè)計(jì)22精選課件ppt4.2功能驗(yàn)證所謂的“驗(yàn)證程序”是對“待測電路”的輸入序列和預(yù)期輸出相應(yīng)的代碼集合。4.2.1驗(yàn)證程序(TestBench)的組成一個(gè)典型的驗(yàn)證程序模型23精選課件ppt4.2.1驗(yàn)證程序(TestBench)的組成一個(gè)典型的Testbench的六個(gè)組成部分:DUV(被驗(yàn)證的設(shè)計(jì))DesignUnderVerification,可能是RTL設(shè)計(jì),也可以是網(wǎng)表。輸入激勵

產(chǎn)生DUV需要的各種輸入信號。時(shí)序控制模塊

產(chǎn)生TB和DUV所需的時(shí)鐘信號。參考模塊

產(chǎn)生預(yù)期信號(行為級編碼模塊/以驗(yàn)證過正確的設(shè)計(jì))。診斷記錄

相關(guān)信號變化情況的記錄。斷言檢查器

對特定的信號形式檢測。24精選課件ppt編寫仿真激勵:1、仿真激勵與被測對象的連接模塊實(shí)例的端口方式:(1)名稱對應(yīng):將模塊實(shí)例外部的信號直接對應(yīng)于模塊的端口名稱。modulehalfadd(x,y,sum,cout);……endmodule名稱對應(yīng)halfaddu_halfadd_a(.x(ax),.y(ay),.sum(asum),.cout(acout));(2)位置對應(yīng):外部信號按照該模塊端口聲明的順序一一對應(yīng)。Halfaddu_halfadd_b(bx,by,bsum,bcout);25精選課件ppt2、使用initial語句和always語句

通常主動產(chǎn)生激勵用initial,被動檢測響應(yīng)用always。前者執(zhí)行一次,后者不斷重復(fù)執(zhí)行。在initial中多次運(yùn)行一個(gè)語句塊,使用嵌入循環(huán)語句:while、repeat、for和forever。initialbeginforeverbengin…..endend條件發(fā)生時(shí)執(zhí)行always@(posedgeclk)beginsiga=sigb……end26精選課件ppt3、時(shí)鐘、復(fù)位寫法(1)普通時(shí)鐘信號

//產(chǎn)生一個(gè)周期為10的時(shí)鐘

parameterFAST_PERIOD=10;regclk;initialbeginclk=0;forever#(FAST_PERIOD/2)clk=~clk;end27精選課件ppt用always產(chǎn)生一個(gè)周期為10的時(shí)鐘parameterFAST_PERIOD=10;regclk;initialclk=0;always#(FAST_PERIOD/2)clk=~clk;

28精選課件ppt(2)非50%占空比時(shí)鐘parameterHi_time=5;parameterLo_time=10;regclk;alwaysbegin#Hi_timeclk=0;#Lo_timeclk=1;end由于clk0時(shí)刻未初始化,前5納秒輸出為x29精選課件ppt(3)固定數(shù)目時(shí)鐘\\產(chǎn)生兩個(gè)高脈沖parameterPulseCount=4,PERIOD=10;regclk;initialbeginclk=0;repeat(PulseCount)#(PERIOD/2)clk=~clk;end30精選課件ppt(4)異步復(fù)位信號parameterPERIOD=10;regRst_n;initialbeginRst_n=1;#PERIODRst_n=0;#(5*PERIOD)Rst_n=1;endRst_n為低有效,代碼表示10ns時(shí)復(fù)位,復(fù)位延時(shí)50ns31精選課件ppt(5)同步復(fù)位:initialbeginRst_n=1;@(negedgeclk);//等待時(shí)鐘下降沿Rst_n=0;#30;@(negedgeclk);//等待時(shí)鐘下降沿Rst_n=1;end32精選課件ppt另一種同步復(fù)位initialbeginRst_n=1;@(negedgeclk);//等待時(shí)鐘下降沿Rst_n=0;//復(fù)位開始repeat(3)@(negedgeclk);//經(jīng)過3個(gè)時(shí)鐘下降沿Rst_n=1;//復(fù)位撤銷end33精選課件ppt4、利用系統(tǒng)函數(shù)和系統(tǒng)任務(wù)

display在顯示數(shù)據(jù)$display(“Addr:%b->Data:%d”,add,data);時(shí)序檢查系統(tǒng)任務(wù)$setup(sig_d,posedgeclk,1);//若clk上升沿到達(dá)之前的1ns時(shí)間內(nèi)sig_d發(fā)生跳變,則建立時(shí)間不足告警$hold(posedgeclk,sig_d,0.1);//若clk上升沿到達(dá)之后的0.1ns時(shí)間內(nèi)sig_d發(fā)生跳變,則保持時(shí)間不足告警dato_out={$random}%256;從文本文件中讀出和寫入數(shù)據(jù)(類似C語言文件操作)34精選課件ppt搭建仿真環(huán)境35精選課件ppt單頂層的TestBench代碼:moduletestbench;//測試平臺頂層//時(shí)鐘激勵產(chǎn)生initialbengin…end//復(fù)位激勵產(chǎn)生initialbegin…end//各種測試激勵initialbengin…end//設(shè)計(jì)模塊實(shí)例mpiu_mpi(.clk(clk),.rst_n(rst_n),.mpi_data(data),.mpi_addr(addr),.mpi_csn(csn),.mpi_rw(rw));36精選課件ppt確認(rèn)仿真結(jié)果1、直接觀測波形2、觀察文本輸出利用系統(tǒng)任務(wù)打印的信息查看仿真結(jié)果,$display、$monitor、$fdisplay3自動檢查仿真結(jié)果(1)數(shù)據(jù)庫比較法。(數(shù)據(jù)庫存儲期望結(jié)果)(2)波形比較法。(存儲標(biāo)準(zhǔn)波形,仿真結(jié)果與其比較)(3)動態(tài)自檢法。編寫行為級與DUT功能一致代碼,同時(shí)讀入激勵,比較輸出結(jié)果37精選課件ppt舉例:加法器38精選課件ppt39精選課件pptPage224.2.1驗(yàn)證程序(TestBench)的組成BookPage141例:一個(gè)編碼器的驗(yàn)證。40精選課件pptPage234.2.2實(shí)用構(gòu)造Testbench技術(shù)1、使用行為級代碼描述驗(yàn)證模型設(shè)計(jì)工程師編寫的電路模型代碼,要從實(shí)現(xiàn)的角度出發(fā),從物理實(shí)現(xiàn)上考慮verilog代碼的寫法,寫出的代碼必須是可綜合的。驗(yàn)證工程師編寫的用于驗(yàn)證的代碼不必考慮到內(nèi)部的實(shí)現(xiàn)問題,只要按規(guī)范描述出一個(gè)設(shè)計(jì)的功能就可以了,也就是說只要建立一個(gè)設(shè)計(jì)“邏輯模型”。行為模型代碼的描述往往比RTL代碼的描述簡單的多,容易正確描述電路功能。41精選課件pptPage244.2.2實(shí)用構(gòu)造Testbench技術(shù)2、使用抽象數(shù)據(jù)類型

行為級代碼可以不受可綜合要求的約束,可以在更高的層次上實(shí)現(xiàn)數(shù)據(jù)的抽象,使得驗(yàn)證程序編寫時(shí)更方便。①實(shí)數(shù)數(shù)據(jù)類型數(shù)字濾波器的仿真例子(P148;例4.4)。②記錄數(shù)據(jù)類型記錄是一種抽象的數(shù)據(jù)結(jié)構(gòu),可以由不同類型信息組成,可以方便的表示在具有一定結(jié)構(gòu)的數(shù)據(jù)。Verilog語言本身并不支持記錄結(jié)構(gòu),通過一些方法可以模擬記錄的實(shí)現(xiàn)。42精選課件pptPage25記錄的用法記錄的用途在仿真中主要用于描述一定格式的數(shù)據(jù)塊。創(chuàng)建一個(gè)沒有參數(shù)的module,內(nèi)部的所有變量都用寄存器類型聲明。當(dāng)模塊實(shí)例化后,用模塊中定義的變量表示記錄中的域。對記錄可以進(jìn)行行為級的處理,準(zhǔn)備好仿真數(shù)據(jù)。(備注:行為級數(shù)據(jù)準(zhǔn)備不占用信號時(shí)序時(shí)間)

4.2.2實(shí)用構(gòu)造Testbench技術(shù)43精選課件pptPage304.2.2實(shí)用構(gòu)造Testbench技術(shù)③多維數(shù)組數(shù)據(jù)類型數(shù)組類型是記錄類型的特例(域等長,二維數(shù)組在設(shè)計(jì)中也用于對RAM等數(shù)據(jù)結(jié)構(gòu)的建模)。測試激勵需要構(gòu)造有固定格式的數(shù)據(jù)幀時(shí),使用二維數(shù)組是一種較好的方法。(例如SDH數(shù)據(jù)幀信元的構(gòu)成等)44精選課件pptPage314.2.2實(shí)用構(gòu)造Testbench技術(shù)3、編寫結(jié)構(gòu)化的仿真代碼行為代碼通常按功能和需求劃分結(jié)構(gòu),復(fù)雜的仿真功能,可以按功能劃分若干個(gè)子功能,然后編寫行為代碼實(shí)現(xiàn)這些子功能。在Verilog中,可以用module,function和task實(shí)現(xiàn)仿真代碼結(jié)構(gòu)化。封裝是實(shí)現(xiàn)結(jié)構(gòu)化仿真編碼的主要手段,封裝的主要思想是將實(shí)現(xiàn)的細(xì)節(jié)隱藏起來,將功能和它的實(shí)現(xiàn)完全分離開,只要封裝的接口不變,實(shí)現(xiàn)的修改和優(yōu)化不影響用戶的使用。45精選課件pptPage324.2.2實(shí)用構(gòu)造Testbench技術(shù)實(shí)現(xiàn)封裝的幾種方法變量局部化

方法一:變量聲明時(shí)局部化盡可能地將變量的聲明局部化,避免變量在其它模塊間相互作用,產(chǎn)生不正確地結(jié)果。方法二:用task和function使變量局部化在verilog語言中,用task和function也可以使說明局部化。46精選課件pptPage334.2.2實(shí)用構(gòu)造Testbench技術(shù)integerI;//全局Ialwaysbeginfor(I=0;I<=32,I=I+1)begin…end

endalwaysbeginfor(I=5;I>0,I=I-1)begin…endendalwaysbegin:block_1integerI;//局部Ifor(I=0;I<=32,I=I+1)begin…endendalwaysbegin:block_2integerI;//局部Ifor(I=5;I>0,I=I-1)begin…endend47精選課件pptPage344.2.2實(shí)用構(gòu)造Testbench技術(shù)實(shí)現(xiàn)封裝的幾種方法總線功能模型

BFM(BusFunctionModule)總線功能模型BFM,也稱為事務(wù)處理程序(transactions)描述模塊。所謂BFM就是DUV和TB之間的一種抽象,它是任務(wù)的集合,集合中的每個(gè)任務(wù)完成一個(gè)特定的事務(wù),事務(wù)可以是非常簡單的操作,如內(nèi)存的一次讀、寫,也可以是非常復(fù)雜的操作,如通信中結(jié)構(gòu)化的數(shù)據(jù)包。BFM被直接鏈接到DUV上,TB通過“函數(shù)/功能”調(diào)用實(shí)現(xiàn)DUV的操作。48精選課件pptPage354.2.2實(shí)用構(gòu)造Testbench技術(shù)TB-BFM-DUV模型49精選課件pptPage36例4.11帶有微機(jī)接口芯片MPI的仿真(8255、8251等)。CPU接口可抽象成右圖形式。根據(jù)預(yù)定義的協(xié)議,由CPUBFM產(chǎn)生CPU接口所需要的實(shí)際物理信號(圖右側(cè)信號),圖左側(cè)接口用特定的數(shù)據(jù)初始化一個(gè)事務(wù),根據(jù)不同的事務(wù),CPUBFM產(chǎn)生不同物理信號,把左側(cè)的接口稱為過程接口。在BFM中根據(jù)CPU接口的時(shí)序,應(yīng)用task產(chǎn)生一次CPU讀寫操作所需要的各種信號。50精選課件pptPage37modulecpu_bfm(A,D,ALE,WRB,RDB,CSB);

output[13:0]A; //地址總線inout[7:0]D; //雙向數(shù)據(jù)總線outputALE,WRB,RDB,CSB; //控制線reg[13:0]A;regALE,WRB,RDB,CSB;

//定義CPU讀寫信號的所需要的時(shí)序參數(shù)

parametertSalr=10,tSlr=5,Prd=30,tHrd=10; parametertHar=10,tVl=5,tSalw=10,tVwr=40,parametertSdw=20,tSlr=5; parameterdata_width=8,addr_width=14; reg[data_width-1:0]work_reg;51精選課件pptPage38taskrd_cpu;

//讀操作的時(shí)序;

input[addr_width-1:0]addr;begin

#10A=addr;CSB=1’b0;

#(tSalr-tVl)ALE=1’b1;

#tVlALE=1’B0;

#tSlrRDB=1’B0;

#Prdwork_reg=D; RDB=1’B1;

#tHarA=14’hzzzz;CSB=1’b1;endendtask

taskwr_cpu;

//寫CPU操作input[addr_width:0]addr;input[data_width:0]write_value;begin#10A=addr;CSB=1’B0;#(tSalw-tVl)ALE=1’B1;#tVlALE=1’B0;#tSlwWRB=1’B0;#(tVwr-tSdw)D=write_value;WRB=1’b1;#tHdwReleaseD;A=14’Hzzzz;CSB=1’B0;endendtaskendmodule//cpu_interface52精選課件pptPage39在測試程序中,實(shí)例化cpu_bfm模塊,直接和被測試的設(shè)計(jì)連接,通過層次關(guān)系調(diào)用元件的cpu任務(wù),實(shí)現(xiàn)對目標(biāo)器件的讀寫操作。moduletestbench;….

cpu_bfmcpu_inst(.A(A),.D(D),.ALE(ALE),.WRB(WRB),.RDB(RDB),.CSB(CSB));DUVDUV_inst(/*othersignal*/…

/*cpusignal*/.A(A),.D(D),.ALE(ALE),.WRB(WRB),.RDB(RDB),.CSB(CSB),

/*othersignal*/….);例4.12cpu_interface的使用方法53精選課件pptPage40initialbegin#300cpu_inst.rd_cpu(14’h0010);

//此時(shí)cpu_inst.work_reg中既存儲了讀出的數(shù)…;//otheroperation#1000cpu_inst.wr_cpu(14’h0001,8’h3C);…;//otheroperationendendmodule//testbench例4.12

cpu_interface

的使用方法54精選課件pptPage414、編寫具有層次結(jié)構(gòu)的仿真代碼4.2.2實(shí)用構(gòu)造Testbench技術(shù)上面的CPU接口的仿真代碼例子中包含了一定的層次結(jié)構(gòu)。驗(yàn)證工程師在最頂層,只需要寫出特定的完成某項(xiàng)功能驗(yàn)證的事務(wù)序列,而這些序列中的事務(wù)去調(diào)用不同的事務(wù)處理程序,這些不同的事務(wù)處理程序又可以去調(diào)用更低層的事務(wù)處理程序,以產(chǎn)生CPU接口所需要的物理信號。這種層次化結(jié)構(gòu),可以為驗(yàn)證工程師提供一個(gè)良好的可操作環(huán)境,使他們更關(guān)注于DUV的驗(yàn)證而不是注意如何產(chǎn)生DUV接口信號。55精選課件pptPage425、編寫具有自檢查功能的仿真程序4.2.2實(shí)用構(gòu)造Testbench技術(shù)設(shè)計(jì)的有效性必須通過設(shè)計(jì)對激勵響應(yīng)的結(jié)果得以體現(xiàn),有幾種方式可以檢查設(shè)計(jì)響應(yīng)是否正確。通過人工觀測DUV輸出波形的結(jié)果是否正確;通過日志的方式,將一些結(jié)果輸出到文件中,在仿真結(jié)束后,分析日志文件;自檢查方式;56精選課件pptPage436、驗(yàn)證代碼的重用4.2.2實(shí)用構(gòu)造Testbench技術(shù)大規(guī)模FPGA/ASIC設(shè)計(jì)一般由多個(gè)層次構(gòu)成,設(shè)計(jì)人員應(yīng)對各個(gè)層次上的子模塊逐一驗(yàn)證,然后將這些驗(yàn)證過的模塊連接在一起形成高層規(guī)模較大的設(shè)計(jì)。為這些不同的子模塊開發(fā)不同的驗(yàn)證環(huán)境需要花費(fèi)大量的時(shí)間和精力,驗(yàn)證重用是解決這一問題的有效方法,驗(yàn)證人員利用大量的可重用驗(yàn)證模塊構(gòu)造出不同層次模塊的驗(yàn)證環(huán)境。57精選課件pptPage446、驗(yàn)證代碼的重用兩種形式4.2.2實(shí)用構(gòu)造Testbench技術(shù)①同一個(gè)芯片設(shè)計(jì)中驗(yàn)證重用在驗(yàn)證的不同周期或設(shè)計(jì)的不同階段驗(yàn)證代碼的重用。好的驗(yàn)證代碼可以在子模塊級和系統(tǒng)級驗(yàn)證時(shí)均可重用。②不同芯片設(shè)計(jì)之間的重用驗(yàn)證代碼可以用于同一芯片的更新?lián)Q代上,或用于一個(gè)包含許多標(biāo)準(zhǔn)設(shè)計(jì)模塊的芯片或與以前設(shè)計(jì)有相同性的新設(shè)計(jì)中。58精選課件pptPage456、驗(yàn)證代碼的重用4.2.2實(shí)用構(gòu)造Testbench技術(shù)重用的模塊越多,所考慮的事項(xiàng)和投入的精力就越多。需要在驗(yàn)證重用所取得的效果和投入重用的資源做些平衡。仿真程序被劃分成兩個(gè)主要的部分:可重用的驗(yàn)證代碼與專用的驗(yàn)證代碼。59精選課件pptPage464.3基于斷言的驗(yàn)證基于斷言的驗(yàn)證是一種有效的“白盒”驗(yàn)證方法,它在RTL設(shè)計(jì)的源代碼中監(jiān)視系統(tǒng)的關(guān)鍵行為,特別是在某些特殊情況下的行為。通過斷言的方法,可以增加觀測點(diǎn),在仿真過程中及時(shí)發(fā)現(xiàn)設(shè)計(jì)錯誤。斷言中用到的概念:特性(Property):用于刻畫設(shè)計(jì)特征的一些行為屬性。事件(Event):驗(yàn)證過程的一個(gè)行為。斷言(Assertion):用于監(jiān)控或檢查施加在設(shè)計(jì)上的一些規(guī)則和假設(shè)的一種機(jī)制。60精選課件pptPage474.3基于斷言的驗(yàn)證用戶可以用各種硬件描述語言如Verilog、VHDL或SystemC等形成斷言以監(jiān)視設(shè)計(jì)在仿真過程中的行為。也可以利用已有的斷言庫,將斷言直接加入到設(shè)計(jì)中。如:Accellera()推出的采用了斷言思想的驗(yàn)證庫OVL(OpenVerificationLibrary),該庫中用HDL語言(VHDL和Verilog),定義和實(shí)現(xiàn)了一些非常常用的屬性聲明。一些專用的硬件特性描述語言(PropertySpecificationLanguage:PSL)和斷言語言已經(jīng)稱為工業(yè)標(biāo)準(zhǔn),并開始推向市場,例如IBM公司開發(fā)的Suger語言已被Accellera組織接受,成為PSL工業(yè)的標(biāo)準(zhǔn)。61精選課件pptPage484.3基于斷言的驗(yàn)證斷言可以有多種實(shí)現(xiàn)方法,最常用、最簡單的方法是所謂的“敘述性”的實(shí)現(xiàn)方法,即在設(shè)計(jì)結(jié)構(gòu)中描述斷言,斷言和設(shè)計(jì)中的其他結(jié)構(gòu)一起并發(fā)地計(jì)算。敘述性斷言實(shí)際上是一些代碼,這些代碼中一般包含三部分:①斷言的條件,②報(bào)告信息,③錯誤的嚴(yán)重程度以及相關(guān)的處理。例:assert_always[#(severity_level,options,msg)]inst_name(clk,

reset_n,

test_expr)備注:assert_always模塊是Accellera組織OVL庫中的標(biāo)準(zhǔn)件,詳見書中page166。62精選課件pptPage49modulecounter_0_to_9(reset_n,clk);

`defineASSERT_ON1

inputreset_n,clk;reg[3:0]count;always@(posedgeclk)beginif(reset_n==0||count>=9)count=1’b0;elsecount=count+1;end

assert_always#(0,0,"error:countnotwithin0and9")valid_count(clk,reset_n,(count>=4’b0000)&&(count<=4’b1001));//always斷言endmodule例4.14模9計(jì)數(shù)器中使用always斷言。63精選課件pptPage504.3基于斷言的驗(yàn)證一個(gè)斷言實(shí)際上就是一段Verilog代碼,用模塊的形式將其封裝起來。使用時(shí)直接實(shí)例化,把斷言嵌入在設(shè)計(jì)中,當(dāng)測試條件不成立的時(shí)候,觸發(fā)該斷言。在驗(yàn)證中使用斷言的優(yōu)點(diǎn):節(jié)約仿真時(shí)間,一旦出現(xiàn)了仿真錯誤,可以立即停止仿真;增加了設(shè)計(jì)的可觀察性;減少設(shè)計(jì)錯誤定位時(shí)間,可以準(zhǔn)確而快速定位設(shè)計(jì)錯誤;減少人為干預(yù),自動監(jiān)控測試。64精選課件pptPage514.4時(shí)序驗(yàn)證時(shí)序驗(yàn)證的目的是為了確認(rèn)物理實(shí)現(xiàn)的電路時(shí)序是否滿足時(shí)序規(guī)范要求。時(shí)序驗(yàn)證的方法分為動態(tài)驗(yàn)證和靜態(tài)驗(yàn)證兩種,本節(jié)簡單地介紹靜態(tài)時(shí)序分析中的一些基本概念。(備注:簡介動態(tài)時(shí)序分析概念。)4.4.1靜態(tài)時(shí)序分析概述靜態(tài)時(shí)序分析是通過分析設(shè)計(jì)中所有可能的信號路徑以確定時(shí)序約束是否滿足時(shí)序規(guī)范,不依賴于激勵,且可以窮盡所有路徑,運(yùn)行速度快,占用內(nèi)存少。對于同步設(shè)計(jì)電路,僅借助于靜態(tài)時(shí)序分析工具即可完成時(shí)序驗(yàn)證的任務(wù)。65精選課件pptPage524.4時(shí)序驗(yàn)證常見的靜態(tài)時(shí)序分析的工具Synopsys公司的Primetime和MentorGraphic公司的SSTVelocity是比較有影響的用于全定制IC時(shí)序分析的工具。FPGA供應(yīng)商如Altera,Xilinx和Actel也在其集成環(huán)境中嵌入了靜態(tài)時(shí)序分析工具。66精選課件pptPage53四種基本時(shí)序路徑:路徑1(Path1):從輸入管腳到D觸發(fā)器的輸入;路徑2(Path2):從D觸發(fā)器的輸入到下一個(gè)D出發(fā)器的輸入;路徑3(Path3):從D觸發(fā)器的輸入到輸出管腳;路徑4(Path4):從輸入到輸出;時(shí)鐘路徑(clockpath):從一個(gè)時(shí)鐘的輸入通過一個(gè)或多個(gè)緩沖器到達(dá)一個(gè)時(shí)序元件的時(shí)鐘管腳的路徑;67精選課件pptPage544.4.1靜態(tài)時(shí)序分析概述一條路徑的延時(shí)等于在該條路徑上所有元件延時(shí)和連線延時(shí)之和。靜態(tài)分析工具通過反向跟蹤路徑終點(diǎn)到起點(diǎn)所有的延時(shí)來計(jì)算路徑的傳輸延時(shí)。在時(shí)序分析中,禁止組合環(huán)的存在,要求所有的反饋路徑都可以在時(shí)鐘邊界被打斷。元件延時(shí)是一個(gè)門的輸入到輸出之間的延時(shí)。連線延時(shí)是時(shí)序分析路徑上一個(gè)元件的輸出到下一個(gè)元件輸入之間的路徑延時(shí)(寄生電容,線電阻,驅(qū)動強(qiáng)度等都會引起延時(shí))。一條路徑的延時(shí)是由該路徑的組合電路、存儲元件、路徑上門的扇出負(fù)載、信號之間的互連線負(fù)載、時(shí)鐘的歪斜率、時(shí)鐘抖動和信號的壓擺率等所決定。goonfromhere06.11.2268精選課件pptPage554.4.2靜態(tài)時(shí)序分析中的基本概念1.扇入和扇出一個(gè)邏輯門的扇入是指連接到該門輸入的數(shù)目,一個(gè)邏輯門的扇出是指連接到該門輸出的負(fù)載門的數(shù)目,扇出越多,延時(shí)越大。69精選課件pptPage564.4.2靜態(tài)時(shí)序分析中的基本概念2.壓擺率(slewrate)壓擺率(slewrate):電壓變化的速度。70精選課件pptPage574.4.2靜態(tài)時(shí)序分析中的基本概念3.時(shí)鐘

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論