![邏輯電路的設計驗證_第1頁](http://file4.renrendoc.com/view/dd2c201a3bee039bd919542dcdebf216/dd2c201a3bee039bd919542dcdebf2161.gif)
![邏輯電路的設計驗證_第2頁](http://file4.renrendoc.com/view/dd2c201a3bee039bd919542dcdebf216/dd2c201a3bee039bd919542dcdebf2162.gif)
![邏輯電路的設計驗證_第3頁](http://file4.renrendoc.com/view/dd2c201a3bee039bd919542dcdebf216/dd2c201a3bee039bd919542dcdebf2163.gif)
![邏輯電路的設計驗證_第4頁](http://file4.renrendoc.com/view/dd2c201a3bee039bd919542dcdebf216/dd2c201a3bee039bd919542dcdebf2164.gif)
![邏輯電路的設計驗證_第5頁](http://file4.renrendoc.com/view/dd2c201a3bee039bd919542dcdebf216/dd2c201a3bee039bd919542dcdebf2165.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第6章邏輯電路的設計驗證1驗證(verification)是檢查設計實現(xiàn)的結(jié)果是否達到了設計規(guī)范的要求的過程。這里所指的設計實現(xiàn)的結(jié)果,包括功能、性能、規(guī)模、功耗等方面的實現(xiàn)結(jié)果。驗證是IC設計過程中必不可少的關鍵步驟,對于保證設計的正確性,提高設計效率具有重要意義。隨著IC規(guī)模和設計復雜度的增加,驗證工作量也迅速增加,甚至超過設計本身的工作量。研究IC設計驗證的方法具有重要意義。26.1驗證概述設計過程是將設計規(guī)范轉(zhuǎn)換為設計實現(xiàn)的過程。從規(guī)范到實現(xiàn)是一個從抽象到具體的不斷細化的過程,如最初設計描述采用自然語言方式,然后是系統(tǒng)結(jié)構級描述、算法級描述、RTL代碼、門級網(wǎng)表、晶體管級,最終到物理版圖。驗證過程是一個與設計過程相反的過程。它從實現(xiàn)方案開始,驗證其是否符合設計規(guī)范。在設計的每一步驟都有驗證步驟與之相對應。例如綜合前的RTL模型和綜合后網(wǎng)表的功能等效性驗證。設計和驗證的關系見教材139頁圖6-1。36.1.1驗證方法建立驗證方案,詳細列出需要驗證的功能等項目。需要有一種度量驗證質(zhì)量的尺度:功能覆蓋率和代碼覆蓋率。驗證方法:基于仿真的驗證和形式化驗證?;诜抡娴尿炞C依賴于測試向量,設計者給定輸入,然后評估輸出是否符合規(guī)范要求。形式化驗證方法包括等價性驗證和模型驗證。等價性驗證是指通過分析、對比兩個設計,論證兩個設計實現(xiàn)的功能是否一致。等價性驗證不需要生成測試向量,但必須有一個功能完全正確的參考設計。模型驗證是在一定的約束條件下,遍歷設計的狀態(tài)空間,以數(shù)學建模的方式從理論上推導、論證方案實現(xiàn)的正確性。46.1.2基于仿真的驗證基于仿真(simulation)的驗證可分為軟件仿真、硬件加速、硬件仿真三種方式。軟件仿真是最常用的驗證方法。軟件仿真通過仿真工具(simulator)對設計的行為進行模擬。仿真器的輸入包括:設計模塊和驗證平臺(testbench)。面向驗證的高層次語言HVL:把高級語言中面向?qū)ο蟮姆椒八惴壝枋鐾琀DL中的并行性和時序結(jié)構結(jié)合在一起,可以大大提高驗證代碼的效率。硬件加速用于加速軟件仿真,縮短仿真時間。仿真系統(tǒng)被分為兩部分,其一為軟件仿真器,仿真不可綜合的HDL代碼和驗證平臺;其二為硬件加速器,仿真所有可綜合的代碼。硬件加速器通常為FPGA或處理器陣列,可以將仿真速度提高兩三個數(shù)量級。5硬件仿真又稱為電路仿真或在線仿真,是使用可配置硬件實現(xiàn)設計,并在真實的應用環(huán)境中對設計進行驗證的方法。硬件仿真的優(yōu)點:仿真手段更加接近于設計實現(xiàn)的實際情況,因此仿真的真實性更強,發(fā)現(xiàn)錯誤的可能性更大,對設計正確性的保障更加有力;軟硬件的集成可以在實際的流片之前進行,能夠及時發(fā)現(xiàn)系統(tǒng)級的設計錯誤,提高了流片成功率;仿真速度快,縮短了開發(fā)周期。硬件仿真的缺點:調(diào)試比較困難,通常需要借助專用儀器,如邏輯分析儀和示波器來監(jiān)控信號。軟件仿真和硬件仿真是互為補充的兩種驗證方法。66.1.3形式化驗證方法形式化驗證(conformal)不需要生成測試向量。(1)等價性驗證等價性驗證可用于驗證綜合后網(wǎng)表與原始RTL描述的功能是否一致。等價性驗證也可用于比較兩個網(wǎng)表功能是否等價,如綜合后網(wǎng)表插入測試掃描鏈之后功能是否改變等。等價性驗證也可用于檢查兩個RTL設計在邏輯上是否一致。(2)模型驗證把設計規(guī)范體現(xiàn)的屬性和設計作為輸入,證明或反駁該設計具有這種屬性。模型驗證的思想是在設計的整個狀態(tài)空間中搜索不符合屬性的點。如果發(fā)現(xiàn)這種點,則屬性不滿足,該點就成為一個反例,接著生成一個從反例中導出的路徑,引導設計者排除這個缺陷。7軟件仿真舉例1:RSA加密處理器仿真8RSA算法描述1、密鑰生成算法:(1)隨機取兩個不同且大小相近的大素數(shù)p和q(保密)。(2)計算n=p.q(公開),φ(n)=(p-1)(q-1),其中φ(n)是n的歐拉函數(shù)值(保密)。(3)隨機選取整數(shù)e,使得1<e<φ(n),滿足gcd(e,φ(n))=1(公開)。(4)使用擴展的歐幾里得算法計算d,滿足de≡1(modφ(n))的惟一整數(shù)d,且1<d<φ(n)(保密)。2、加解密算法:(1)加密算法:c=E(m)≡memodn(2)解密算法:m=D(c)≡cdmodn式中,m是明文,c是密文,n稱為模數(shù),e是加密指數(shù),(e,n)對是公鑰,d是解密指數(shù),(d,n)對是私鑰。因為逆運算m=十分復雜,且存在多義性(不定),所以它是一個單向陷門函數(shù)。同時,僅由公鑰e和n是無法求出d的,除非能將n分解求出p和q,這是大素數(shù)分解(NP)難題難以實現(xiàn)。910信號名稱信號寬度傳輸方向信號含義clk1位輸入時鐘信號rst1位輸入復位信號,1有效。load1位輸入數(shù)據(jù)裝載使能信號,用于控制輸入明/密文、密鑰、模數(shù)以及某些參數(shù),1有效。address3位輸入寄存器地址,用于表示明/密文寄存器、密鑰寄存器、模數(shù)寄存器以及某些參數(shù)寄存器。start1位輸入加/解密運算開始使能信號,1有效。din16位輸入輸入數(shù)據(jù)總線,用于輸入明/密文、密鑰、模數(shù)以及某些參數(shù)。wraddress6位輸入將1024位數(shù)據(jù)分成64個16位數(shù)據(jù),每次寫入1個16位數(shù)據(jù),該地址指明16位數(shù)據(jù)的地址。result_shift1位輸入結(jié)果移位使能信號,1有效。有效時,將1024位加/解密結(jié)果右移16位,并將最低16位輸出。ready1位輸出加/解密運算完成標識信號,1有效。dout16位輸出輸出數(shù)據(jù)總線,用于輸出加/解密結(jié)果。表6-1:RSA模塊外部信號說明11RSA加密處理器仿真:(1)測試數(shù)據(jù)輸入數(shù)據(jù):N=0ac66f597f338ca1;//模數(shù)PT=0072418cccccccc3;//明文KEY=0000000000000007;//密鑰A=22kmodn=22048mod776430415944846497=(726986989413441796)10=(A16C6D0AC51A104)16;//常數(shù)AC=2kmodn=21024mod776430415944846497=(686167533972011608)10=(985C1BC96CEBA58)16;//常數(shù)C輸出結(jié)果:CT=52dc2c78533d116;//密文
12(2)驗證平臺設計`timescale1ns/1nsmoduleRSA_tb;
reg
clk,rst,load,start,result_shift;
reg[2:0]address;
reg[15:0]din;
reg[5:0]wraddress;wire[15:0]dout;wireready;RSArsa(clk,rst,load,address,din,start,
dout,ready,wraddress,result_shift);//clk_gen
initialclk=1;always#50clk=~clk;13initialbegin#20rst=1;
result_shift=0;#200rst=0;start=0;load=1;//load1024bitsmodulus.address=3'd0;
wraddress=6'd0;din=16'h8ca1;#100wraddress=6'd1;din=16'h7f33;#100wraddress=6'd2;din=16'h6f59;#100wraddress=6'd3;din=16'h0ac6;#100wraddress=6'd4;din=16'h0000;……#100wraddress=6'd63;din=16'h0000;14#100load=1;//load1024bitsplaintext.address=3'd1;
wraddress=6'd0;din=16'hccc3;#100wraddress=6'd1;din=16'hcccc;#100wraddress=6'd2;din=16'h418c;#100wraddress=6'd3;din=16'h0072;#100wraddress=6'd4;din=16'h0000;……#100wraddress=6'd63;din=16'h0000;15#100load=1;//load1024bitskey.address=3'd2;
wraddress=6'd0;din=16'h0007;#100wraddress=6'd1;din=16'h0000;#100wraddress=6'd2;din=16'h0000;#100wraddress=6'd3;din=16'h0000;#100wraddress=6'd4;din=16'h0000;……#100wraddress=6'd63;din=16'h0000;16#100load=1;//load1024bitsparameterA.address=3'd3;
wraddress=6'd0;din=16'hA104;#100wraddress=6'd1;din=16'hAC51;#100wraddress=6'd2;din=16'hC6D0;#100wraddress=6'd3;din=16'h0A16;#100wraddress=6'd4;din=16'h0000;……#100wraddress=6'd63;din=16'h0000;
17#100load=1;//load1024bitsparameterC.address=3'd4;
wraddress=6'd0;din=16'hBA58;#100wraddress=6'd1;din=16'h96CE;#100wraddress=6'd2;din=16'hC1BC;#100wraddress=6'd3;din=16'h0985;#100wraddress=6'd4;din=16'h0000;……#100wraddress=6'd63;din=16'h0000;
18#100load=0;start=1;
#100start=0;
#106000000result_shift=1;#6300result_shift=0;#200$finish;
end
endmodule
19(3)仿真波形圖20仿真波形圖的局部放大:21軟件仿真舉例2:fifo_usb_rsa_tb仿真。
`timescale1ns/1nsmodulefifo_usb_rsa_tb;
reg
clk,rst;wirefull,empty;wire[15:0]fd;wiresloe,slrd,slwr;wire[1:0]fifoadr;
fifo_rsa
fifo_rsa(clk,rst,full,empty,fd,sloe,slrd,slwr,fifoadr);
usb_rsa
usb_rsa(clk,rst,full,empty,fd,sloe,slrd,slwr,fifoadr); //clockgeneration initialclk=1;always#50clk=~clk;initialbegin #20rst=1;//reset. #200rst=0; #318000000$finish; end endmodule22modulefifo_rsa(clk,rst,full,empty,fd,sloe,slrd,slwr,fifoadr);
inputclk,rst,sloe,slrd,slwr; input[1:0]fifoadr; inout[15:0]fd;
outputfull,empty;
reg[5231:0] readfifo; reg[1023:0]writefifo; reg[8:0]read_wordcount; reg[6:0]write_wordcount;
always@(posedgeclk) begin if(rst) readfifo={16'h0001,16'h0002,2316'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0072,16'h418c,16'hcccc,16'hccc3,16'h0004,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0985,16'hC1BC,16'h96CE,16'hBA58,16'h0008,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0A16,16'hC6D0,16'hAC51,16'hA104,16'h0010,24
16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0007,16'h0020,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0000,16'h0ac6,16'h6f59,16'h7f33,16'h8ca1,16'h0040}; 25 elseif((~slrd)&(fifoadr==2'b00)) readfifo<=(readfifo>>16); else readfifo<=readfifo; end
assignfd=(sloe==0)?readfifo[15:0]:16'bz;
//read_wordcountregister always@(posedgeclk) if(rst) read_wordcount<=9'd0; else if(slrd==0) read_wordcount<=read_wordcount+1; else read_wordcount<=read_wordcount;
assignempty=~(read_wordcount==9'd327);26//write_wordcountregister always@(posedgeclk) if(rst) write_wordcount<=7'd0; else if(slwr==0) write_wordcount<=write_wordcount+1; else write_wordcount<=write_wordcount;
assignfull=~(write_wordcount==7'd64);
always@(posedgeclk) begin if(rst) writefifo=1024'd0; elseif((~slwr)&(fifoadr==2'b10)) writefifo<={fd,writefifo[1023:16]}; else writefifo<=writefifo; end
endmodule27moduleusb_rsa(clk,rst,full,empty,fd,sloe,slrd,slwr,fifoadr);inputclk,rst,full,empty;
inout[15:0]fd;outputsloe,slrd,slwr;output[1:0]fifoadr;wireload,start,result_shift,ready;wire[2:0]address;wire[5:0]wraddress;wire[15:0]din,dout;
usb_rsa_intfu0(clk,rst,full,empty,fd,ready,dout,
load,address,wraddress,din,start,result_shift,
sloe,slrd,slwr,fifoadr);
RSAu1(clk,rst,load,address,din,start,dout,ready,
wraddress,result_shift);endmodule2829AES時序仿真波形圖-輸入密鑰30AES時序仿真波形圖-輸入明文31AES時序仿真波形圖-輸出密文32AES時序仿真波形圖-輸入密文33AES時序仿真波形圖-輸出明文34硬件仿真舉例:可移動電腦加密機。
35可移動電腦加密機樣機的主要技術指標:(1)加/解密算法:可移動高性能電腦加密機能夠?qū)崿F(xiàn)AES加/解密算法和RSA加/解密算法。其中,AES是對稱密鑰分組算法,其密鑰、明文和密文分組長度均為128位;RSA是非對稱密鑰分組算法,其模數(shù)、密鑰、明文和密文分組長度均為1024位。另外,由于加密芯片采用FPGA實現(xiàn),因此可以根據(jù)應用的需要,方便快捷地更換或升級加/解密算法。(2)加/解密芯片的性能與規(guī)模:可移動高性能電腦加密機中的AES加/解密芯片和RSA加/解密芯片均采用Altera公司Cyclone系列的EP1C12Q240C8FPGA實現(xiàn)。其中,AES芯片的加/解密速度可達465Mbps(時鐘頻率40Mhz),規(guī)模為4102個邏輯單元(logicelements)和40960個存儲位(memorybits);RSA芯片的加/解密速度可達7812bps(時鐘頻率48Mhz),規(guī)模為7271個邏輯單元和5120個存儲位。(3)與電腦的接口:可移動高性能電腦加密機采用USB2.0接口與電腦通信,數(shù)據(jù)傳輸率為480Mbps,支持熱插拔,可以即插即用。36USB固件下載界面37FPGA配置文件下載界面38發(fā)送密鑰和S盒數(shù)據(jù)39發(fā)送明文40接收密文41接收解密后的明文
42加密機控制軟件用戶界面43加密機加載文件界面44加密機加密界面456.2驗證平臺編碼風格驗證平臺通常指一段仿真代碼,用來為設計產(chǎn)生特定的輸入向量序列,也用來觀測設計輸出的響應。一般的HDL語言都支持驗證平臺的建模。驗證過程需要模仿設計的外部環(huán)境,為設計提供輸入激勵信號,并監(jiān)視設計的輸出信號。驗證平臺不需要綜合成硬件網(wǎng)表,相對于可綜合的編碼風格,用于驗證的代碼對編碼風格限制較少。驗證平臺相對于設計,往往代碼量更大,也更復雜,且因為驗證代碼沒有可綜合的要求,所以提倡采用更高抽象層次的描述,如行為級描述,以減少代碼工作量,提高仿真速度。RTL編碼風格與驗證編碼風格的不同。RTL編碼要可綜合,驗證編碼僅僅關注行為。見P151例子。466.3驗證平臺模塊設計復雜的驗證平臺需要清晰的結(jié)構。驗證平臺的要求:結(jié)構化、易維護、可重用。驗證平臺一般可分為3個主要部分:激勵產(chǎn)生、響應檢查和覆蓋率收集。6.3.1激勵產(chǎn)生激勵是賦給電路輸入信號的數(shù)據(jù)。信號賦值需要遵循一定的時序規(guī)則。為了使信號賦值簡潔、高效、整齊,建議采用建立信號賦值任務和調(diào)用信號賦值任務的方式實現(xiàn)信號賦值。47信號賦值任務建立舉例:taskwrite_data_mode8;inputA0;input[7:0]send_data;beginRS=A0;RW=1’b0;#40;E=1’b1;#150;MPU_DB[7:0]=send_data[7:0];
data_set=1;#80;E=1’b0;#10;
data_set=0;RS=1’b1;RW=1’b1;#260;endendtask48信號賦值任務調(diào)用舉例:initialbegin…write_data_mode8(1,8’hab);…write_data_mode8(0,8’h38);#2000;$finish;end對于大數(shù)據(jù)量驗證的情況,可預先生成一個測試向量文件,仿真時讀入內(nèi)存,并安時序加載到端口上作為仿真激勵。見下一頁例子。目前在驗證領域?qū)崿F(xiàn)激勵產(chǎn)生的一個趨勢是采用有約束的隨機生成方式,可以提高工作效率和驗證質(zhì)量。49taskapply_vector;inputindex,vector;output[N:1]primary_input;
reg[N:1]vector;begin
generate_vector(index,vector);
primary_input<=vector;endendtaskInitialbegin$load_memory(input_vectors,”stimuli_file”);endalways@(start)begin#10;
apply_vector(i,input_vectors);i=i+1;end506.3.2響應檢查響應檢查(responsechecking)包括兩個內(nèi)容:一是在仿真時對設計節(jié)點的監(jiān)視;二是把節(jié)點的響應值與預期的值相比較。如果二者有差異,則需要分析原因,可能是由于設計缺陷引起的,也可能是由于規(guī)范的缺陷導致的。沒有差異,也不一定沒有缺陷,可能是錯誤的接點沒有被采樣到,也可能是錯誤沒有被激發(fā)。波形觀察是最常見的響應檢查手段。波形按時間連續(xù)顯示,能夠得到完整的信號軌跡。但是,對信號波形連續(xù)的采樣耗費大量的仿真資源,可通過減少采樣信號的數(shù)量或持續(xù)時間,提高仿真速度。這需要在采樣信號的數(shù)量、采樣持續(xù)時間和仿真速度進行折中。一般來講,仿真前期應采樣所有信號,當代碼逐步穩(wěn)定后,或者進入更高層次的集成仿真時,應逐步減少采樣信號。51節(jié)點監(jiān)視方式:固定時間間隔采樣、當數(shù)據(jù)發(fā)生變化時采樣。使用的系統(tǒng)函數(shù):$strobe、$display、$monitor等。例子見p154圖6-12。仿真結(jié)果輸出或者是屏幕打印,或者是寫文件,都會占用機器時間,特別對于大數(shù)據(jù)量的輸出,不僅會減慢仿真速度,而且還會導致觀察者因數(shù)據(jù)量過大而忽略重要信息。所以應盡量減少輸出數(shù)據(jù)量,某些系統(tǒng)函數(shù)可以利用,如$monitoron,$monitoroff等。見p155圖6-13。人工檢查只適合處理較少數(shù)量的信號,不適合大型設計。把采樣信息與已知的正確信息(稱為黃金向量)相比較,比較由軟件工具自動完成(文本比較、波形比較),這樣的方式適合于大數(shù)據(jù)量的響應檢查。黃金向量可以直接從規(guī)范生成,也可以由不同的設計模型(例如,不可綜合的高層模型或者C\C++模型)生成,例如p155圖6-15。52黃金向量文件的存儲占用大量存儲資源,維護困難,可以通過在驗證平臺中增加自檢代碼的方法解決。在驗證平臺中對信號采樣并與預期的行為進行比較,這種技術稱為自檢。自檢代碼由兩部分構成:自檢和警告。參見p156圖6-16。預期的行為可以離線先期完成或者即時生成。如果被檢測的信號與所預期的行為不匹配,則檢測錯誤并將其分類為不同嚴重等級。根據(jù)錯誤的嚴重程度,可以在發(fā)出錯誤信息后繼續(xù)仿真,或者可以退出仿真狀態(tài),也可以轉(zhuǎn)儲信號跟蹤信息。檢查代碼應該與設計代碼相分離,因為檢查代碼不是最終代碼的構成部分。分離的方法:給檢查代碼加條件編譯指令,把檢查代碼單獨寫到一個任務中,在調(diào)用處加編譯開關。53舉例:乘法器自檢驗證。multiplierinstance(.in1(mult1),in2(mult2),.prod(product));assignexpected=mult1*mult2;always@(product)beginif(expected!=product)$display(“ERROR:incorrectproduct.result=%d,multiplicant1=%d,multiplicant2=%d”,product,mult1,mult2);$finish;end舉例:帶條件編譯指令的自檢驗證代碼,見p157。自檢代碼也可利用C/C++編程,然后利用PLI接口與HDL驗證環(huán)境相連。見p157圖6-18。54參考模型驗證技術:參考模型通常采用高級語言或行為級HDL編寫,實現(xiàn)設計的規(guī)范并將其響應和RTL模型的響應進行比較。參考模型可以和RTL模型一起或單獨運行。對于獨立運行,參考模型取得一組RTL模型上仿真的激勵,并把響應寫入文件,然后RTL模型用同一組激勵仿真,將響應與參考模型的響應進行比較。如果參考模型與RTL模型并發(fā)運行,稱為協(xié)同仿真。參見p158圖6-19。隨著仿真工具的發(fā)展,協(xié)同仿真逐漸成為主流,可以將C/C++、SystemC、Matlab等工具和仿真工具聯(lián)合起來進行協(xié)同仿真。這種協(xié)同仿真的優(yōu)點是在完成系統(tǒng)級和RTL級設計后,可以將RTL設計和系統(tǒng)級設計結(jié)合進行結(jié)果比對,從而保證設計結(jié)果的一致性。556.3.3初始化初始化(initialization)是把系統(tǒng)正常工作所需要的一些值賦給某些輸入信號和存儲器等變量。初始化使用HDL代碼或編程語言接口實現(xiàn)。HDL代碼初始化通常封裝在initial語句塊中,參見p159圖6-20例子。初始化的代碼描述了一個過程,它不能綜合,不應把他們放在任何庫單元內(nèi)部。6.3.4時鐘生成與同步時鐘是主要的同步(synchronization)信號。時鐘波形是周期性的,只要寫出一個時鐘周期的HDL代碼,就可以循環(huán)產(chǎn)生完整的波形。生成單周期波形可以使用過程賦值,也可以利用邏輯取反操作。舉例:見p159圖6-21。56時鐘的分頻和倍頻:參見p160圖6-22。無關時鐘:對于相對獨立的時鐘,為了強調(diào)它們更多的獨立性,在其中一個時鐘引入抖動的概念,使得兩個無關時鐘具有不確定的相對移位??梢岳秒S機數(shù)使時鐘抖動,參見p160圖6-23。移相時鐘:兩個時鐘信號之間存在確定的相位差。參見p160圖6-24。6.3.5驗證平臺和設計之間的接口驗證平臺到系統(tǒng)設計之間的接口負責它們之間的數(shù)據(jù)交換,這包括4個方面和渠道:設計的I/O端口、分層訪問、文件I/O以及PLI接口。設計的I/O端口是設計功能體現(xiàn)的基本界面,也是與驗證平臺連通的基本接口。驗證平臺通過這些I/O端口輸入激勵信號,也從中獲取響應信號。57分層訪問是驗證平臺快速訪問設計內(nèi)部的通道,因為通過I/O訪問或改變設計內(nèi)部狀態(tài)需要長的控制序列。分層訪問是驗證平臺提供的虛擬接口得以直接訪問設計的內(nèi)部信息,最終在物理上是無法實現(xiàn)的。文件I/O是設計和驗證平臺交流信息的媒介。驗證平臺把激勵信號寫入文件,設計讀出后相當于獲得相應的輸入信號;設計把響應寫入文件供驗證平臺讀出分析。設計通過PLI與驗證平臺也有一個接口。HDL通過任務調(diào)用用戶C/C++程序,這些程序提供算法級的參考模型,同時參考模型通過PLI接口可以反向訪問設計內(nèi)部資源。擴展利用PLI可以實現(xiàn)設計與參考模型的協(xié)同仿真。586.4驗證平臺結(jié)構設計6.4.1基于harness封裝的驗證平臺結(jié)構良好的驗證平臺結(jié)構應該是由多個可復用的驗證模塊組成,利用這些可復用的驗證模塊可以很方便地構造出驗證功能所需要的多個測試用例。通常,整個驗證平臺用一個分層模塊結(jié)構實現(xiàn),將一些固定的序列激勵用task封裝。在保證task賦值序列的時序沒有問題的情況下,不同的測試用例調(diào)用相同的task和使用不同的參數(shù)。舉例:參見p161圖6-25。從外部來看設計,通常設計可以看作有多個接口的黑盒子。如p162圖6-26所示。并且,很多接口為標準接口,如PCI接口、MCU接口、USB接口等。這些接口在很多設計中使用,接口驅(qū)動任務也可以在很多設計的驗證平臺中重用。59基于總線的驗證平臺,如p163圖6-27所示。該平臺包括總線功能模型(BFM),設計和測試用例。所有的測試用例都通過總線功能模型與待驗證設計連接起來,這樣就可以把待驗證設計和總線功能模型封裝在一起,作為所有驗證平臺共用的、更高層次的驗證對象,稱為驗證平臺的外殼(harness)。每個測試用例加上harness形成各自的驗證平臺。采用harness結(jié)構將大大簡化驗證平臺,降低驗證的工作量。參見p163圖6-28。6.4.2用Verilog構建結(jié)構化的驗證平臺p164圖6-30是一個用Verilog語言構建的驗證平臺。包含測試用例、harness平臺、harness平臺中包括的模塊。圖6-31是應用層封裝的驗證平臺。6.4.3用SystemVerilog構建結(jié)構化的驗證平臺常用的高級驗證語言:SystemVerilog、SystemC、Vera、e等,高級驗證語言通??梢蕴峁┗谒惴ǖ拿枋鲆约皩碗s數(shù)據(jù)結(jié)構的描述和封裝。參見p167圖6-32。606.5斷言6.5.1斷言簡介斷言是由一組語句組成的結(jié)構,用于對信號或變量是否滿足某個條件進行檢測
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年可編程鹽霧試驗箱企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年手工首飾盒設計企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 二零二五年電影院停車場車位租賃及觀影體驗合同3篇
- 家用按摩設備智能化控制算法研究進展考核試卷
- 建筑消防工程招投標管理與合同履行考核試卷
- 二零二五年度私人購房定金合同及家居配套服務
- 醫(yī)藥代理居間合同示例范本
- 絲綢產(chǎn)業(yè)電子商務應用考核試卷
- 成人高等教育環(huán)境藝術設計考核試卷
- 2025年度危廢運輸安全生產(chǎn)保障協(xié)議
- GB/T 10205-2009磷酸一銨、磷酸二銨
- 公司財務制度及流程
- 高支模專項施工方案(專家論證)
- 深圳版初中英語單詞匯總
- 健康養(yǎng)生,快樂生活課件
- 《物流與供應鏈管理-新商業(yè)、新鏈接、新物流》配套教學課件
- 物聯(lián)網(wǎng)項目實施進度計劃表
- MDD指令附錄一 基本要求檢查表2013版
- 駱駝祥子1一24章批注
- 新部編人教版四年級下冊道德與法治全冊教案(教學設計)
- 2021年胃腸外科規(guī)培出科考試試題及答案
評論
0/150
提交評論