0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用三種自動(dòng)化testbench驗(yàn)證方法

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:OpenFPGA ? 2020-11-20 11:26 ? 次閱讀

Testbench編寫(xiě)指南(4)自動(dòng)化驗(yàn)證方法

自動(dòng)化驗(yàn)證testbench結(jié)果可以減少人工檢查的時(shí)間和可能犯的失誤,尤其對(duì)于比較大的設(shè)計(jì)。目前普遍使用三種自動(dòng)化testbench驗(yàn)證方法:

數(shù)據(jù)庫(kù)比較:首先創(chuàng)建一個(gè)包含預(yù)期輸出的數(shù)據(jù)庫(kù)文件(稱作golden
vector文件),然后捕獲仿真輸出與該文件中的參考向量作比較。但是由于沒(méi)有提供從輸出到輸入文件的指針,該方法的缺點(diǎn)是難以追蹤導(dǎo)致不正確輸出的錯(cuò)誤源。

波形比較:將testbench輸出波形與預(yù)期波形作比較。Xilinx曾推出過(guò)一款HDL
Bencher的工具,可以執(zhí)行自動(dòng)化的波形比較,不過(guò)目前由于該方法很少使用,Xilinx也下架了該工具。

自我檢查testbench設(shè)計(jì):與前兩種方法不同,該方法實(shí)時(shí)檢查預(yù)期結(jié)果和實(shí)際結(jié)果,而不是仿真結(jié)束后才檢查。在testbench中插入錯(cuò)誤追蹤信息可以顯示設(shè)計(jì)在哪里失敗,從而縮短調(diào)試時(shí)間。

本文將介紹最后一種自動(dòng)化驗(yàn)證方法。將一系列預(yù)期向量(比如由MATLAB等軟件產(chǎn)生)放在testbench文件中,在運(yùn)行時(shí)間間隔與實(shí)際仿真結(jié)果比較,如果匹配則表明仿真成功;不匹配則報(bào)告結(jié)果不符。

比較時(shí)間可以選擇在每個(gè)時(shí)鐘邊沿,或者沒(méi)n個(gè)時(shí)鐘周期比較一次,總而言之要與設(shè)計(jì)相符合。比如內(nèi)存I/O的testbench應(yīng)該在讀出或?qū)懭胍粋€(gè)新數(shù)據(jù)后就進(jìn)行比較;如何設(shè)計(jì)使用了大量組合邏輯模塊,選取比較時(shí)間必須考慮組合邏輯延遲。
??對(duì)于中小型設(shè)計(jì)而言,自我檢查的testbench設(shè)計(jì)方法是一種不錯(cuò)的選擇,但是對(duì)于復(fù)雜的大型設(shè)計(jì),可能的輸出組合呈指數(shù)形式增加,編寫(xiě)一個(gè)自我檢查testbench將會(huì)困難很多。下面給出一個(gè)自我檢查testbench的設(shè)計(jì)示例(來(lái)源于xapp199):

`timescale 1 ns / 1 ps module test_sc; // 信號(hào)申明 reg tbreset, tbstrtstop; reg tbclk; wire [6:0] onesout, tensout; wire [9:0] tbtenthsout; parameter cycles = 25; reg [9:0] Data_in_t [0:cycles]; // 實(shí)例化設(shè)計(jì) stopwatch UUT (.CLK (tbclk), .RESET (tbreset), .STRTSTOP (tbstrtstop), .ONESOUT (onesout), .TENSOUT (tensout), .TENTHSOUT (tbtenthsout)); wire [4:0] tbonesout, tbtensout; assign tbtensout = led2hex(tensout); assign tbonesout = led2hex(onesout); //------------------------------------------------------------- // 預(yù)期結(jié)果 //------------------------------------------------------------- initial begin Data_in_t[1] =10'b1111111110; Data_in_t[2] =10'b1111111101; Data_in_t[3] =10'b1111111011; Data_in_t[4] =10'b1111110111; Data_in_t[5] =10'b1111101111; Data_in_t[6] =10'b1111011111; Data_in_t[7] =10'b1110111111; Data_in_t[8] =10'b1101111111; Data_in_t[9] =10'b1011111111; Data_in_t[10]=10'b0111111111; Data_in_t[11]=10'b1111111110; Data_in_t[12]=10'b1111111110; Data_in_t[13]=10'b1111111101; Data_in_t[14]=10'b1111111011; Data_in_t[15]=10'b1111110111; Data_in_t[16]=10'b1111101111; Data_in_t[17]=10'b1111011111; Data_in_t[18]=10'b1110111111; Data_in_t[19]=10'b1101111111; Data_in_t[20]=10'b1011111111; Data_in_t[21]=10'b0111111111; Data_in_t[22]=10'b1111111110; Data_in_t[23]=10'b1111111110; Data_in_t[24]=10'b1111111101; Data_in_t[25]=10'b1111111011; end reg GSR; assign glbl.GSR = GSR; initial begin GSR = 1; // 等到全局復(fù)位結(jié)束 #100 GSR = 0; end //建立一個(gè)時(shí)鐘 initial begin tbclk = 0; //全局復(fù)位結(jié)束后開(kāi)始產(chǎn)生時(shí)鐘信號(hào) #100 forever #60 tbclk = ~tbclk; end //給出設(shè)計(jì)激勵(lì) initial begin tbreset = 1; tbstrtstop = 1; #240 tbreset = 0; tbstrtstop = 0; #5000 tbstrtstop = 1; #8125 tbstrtstop = 0; #500 tbstrtstop = 1; #875 tbreset = 1; #375 tbreset = 0; #700 tbstrtstop = 0; #550 tbstrtstop = 1; #100000 $stop; end //------------------------------------------------------------- // 在每個(gè)時(shí)鐘的下降沿比較預(yù)期結(jié)果和實(shí)際結(jié)果 //------------------------------------------------------------- integer i,errors; always @ (posedge tbclk) begin if (tbstrtstop) begin i = 0; errors = 0; end else begin for (i = 1; i <= cycles; i = i + 1) begin ? ? ? ?@(negedge tbclk) ? ? ? ?// 每個(gè)下降沿檢查結(jié)果 ? ? ? ?$display("Time%d ns; TBSTRTSTOP=%b; Reset=%h; Expected ? ? ? ?TenthsOut=%b; Actual TenthsOut=%b", $stime, tbstrtstop, tbreset, ? ? ? ?Data_in_t[i], tbtenthsout); ? ? ? ?if ( tbtenthsout !== Data_in_t[i] ) begin ? ? ? ? ? ?$display(" ------ERROR. A mismatch has occurred-----"); ? ? ? ? ? ?errors = errors + 1; ? ? ? ?end ? ?end ? ?if (errors == 0) ? ? ? ?$display("Simulation finished Successfully."); ? ?else if (errors > 1) $display("%0d ERROR! See log above for details.",errors); else $display("ERROR! See log above for details."); #100 $stop; end end endmodule

上述代碼中,將預(yù)期結(jié)果和實(shí)際結(jié)果的比較情況顯示在終端。該代碼模板可應(yīng)用于任何設(shè)計(jì)的自我檢查testbench中,需要修改實(shí)例化接口和預(yù)期的輸出值。如果不需要在每個(gè)時(shí)鐘沿檢查一次數(shù)據(jù),則修改for循環(huán)的執(zhí)行條件。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    180

    文章

    2952

    瀏覽量

    229864
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    28

    文章

    5433

    瀏覽量

    78901
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3737

    瀏覽量

    64173

原文標(biāo)題:Testbench編寫(xiě)指南(4)自動(dòng)化驗(yàn)證方法

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TI RF Transceiver EVM自動(dòng)化環(huán)境搭建方法

    電子發(fā)燒友網(wǎng)站提供《TI RF Transceiver EVM自動(dòng)化環(huán)境搭建方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-04 09:35 ?0次下載
    TI RF Transceiver EVM<b class='flag-5'>自動(dòng)化</b>環(huán)境搭建<b class='flag-5'>方法</b>

    OTA自動(dòng)化測(cè)試解決方案——實(shí)車級(jí)OTA測(cè)試系統(tǒng)PAVELINK.OTABOX

    ,并簡(jiǎn)單介紹北匯信息的實(shí)車級(jí)OTA自動(dòng)化測(cè)試解決方案——PAVELINK.OTABOX。實(shí)車級(jí)OTA自動(dòng)化系統(tǒng)目前,OTA自動(dòng)化測(cè)試系統(tǒng)的落地方式主要包含以下三種
    的頭像 發(fā)表于 07-11 08:26 ?536次閱讀
    OTA<b class='flag-5'>自動(dòng)化</b>測(cè)試解決方案——實(shí)車級(jí)OTA測(cè)試系統(tǒng)PAVELINK.OTABOX

    機(jī)械自動(dòng)化和電氣自動(dòng)化區(qū)別是什么

    機(jī)械自動(dòng)化和電氣自動(dòng)化是現(xiàn)代工業(yè)生產(chǎn)中兩個(gè)重要的領(lǐng)域,它們?cè)谠S多方面有著密切的聯(lián)系,但也存在一些明顯的區(qū)別。 一、基本概念 機(jī)械自動(dòng)化 機(jī)械自動(dòng)化是指利用機(jī)械設(shè)備、傳感器、控制系統(tǒng)等技
    的頭像 發(fā)表于 07-01 09:33 ?3190次閱讀

    機(jī)械自動(dòng)化自動(dòng)化的一

    引言 自動(dòng)化技術(shù)是指利用控制裝置對(duì)生產(chǎn)過(guò)程進(jìn)行控制,以實(shí)現(xiàn)生產(chǎn)過(guò)程的自動(dòng)化。機(jī)械自動(dòng)化自動(dòng)化技術(shù)的一,它主要涉及到使用機(jī)械設(shè)備和控制系統(tǒng)
    的頭像 發(fā)表于 07-01 09:32 ?1334次閱讀

    機(jī)械制造與自動(dòng)化自動(dòng)化類嗎

    機(jī)械制造與自動(dòng)化自動(dòng)化領(lǐng)域的一個(gè)重要分支,它涉及到機(jī)械設(shè)計(jì)、制造、檢測(cè)、控制等多個(gè)方面,是現(xiàn)代制造業(yè)的核心組成部分。 機(jī)械制造與自動(dòng)化是指利用計(jì)算機(jī)、機(jī)器人、傳感器等自動(dòng)化設(shè)備和技術(shù)
    的頭像 發(fā)表于 06-11 11:18 ?1302次閱讀

    工業(yè)自動(dòng)化自動(dòng)化區(qū)別是什么

    工業(yè)自動(dòng)化自動(dòng)化是兩個(gè)密切相關(guān)但又有所區(qū)別的概念。在這篇文章中,我們將詳細(xì)探討它們之間的區(qū)別,以及它們?cè)诂F(xiàn)代工業(yè)生產(chǎn)中的應(yīng)用。 一、自動(dòng)化的定義 自動(dòng)化是指通過(guò)使用機(jī)器、計(jì)算機(jī)和其他
    的頭像 發(fā)表于 06-11 11:13 ?1389次閱讀

    菱M70 PLC增加注解的三種方法簡(jiǎn)析

    菱M70 PLC增加注解的三種方法
    的頭像 發(fā)表于 02-26 09:59 ?976次閱讀
    <b class='flag-5'>三</b>菱M70 PLC增加注解的<b class='flag-5'>三種方法</b>簡(jiǎn)析

    傳統(tǒng)激光功率衰減的三種方法

    傳統(tǒng)激光功率衰減通常使用以下三種方法,分別為中性密度衰減片衰減法、偏振衰減法、鍍膜光學(xué)鏡片衰減法。
    的頭像 發(fā)表于 01-20 10:42 ?1524次閱讀
    傳統(tǒng)激光功率衰減的<b class='flag-5'>三種方法</b>

    異步電機(jī)主要的三種調(diào)速方法解析

    異步電機(jī)主要的三種調(diào)速方法解析
    的頭像 發(fā)表于 01-07 17:50 ?2093次閱讀
    異步電機(jī)主要的<b class='flag-5'>三種</b>調(diào)速<b class='flag-5'>方法</b>解析

    LabVIEW與Tektronix示波器實(shí)現(xiàn)電源測(cè)試自動(dòng)化

    LabVIEW與Tektronix示波器實(shí)現(xiàn)電源測(cè)試自動(dòng)化 在現(xiàn)代電子測(cè)試與測(cè)量領(lǐng)域,自動(dòng)化測(cè)試系統(tǒng)的構(gòu)建是提高效率和精確度的關(guān)鍵。本案例介紹了如何利用LabVIEW軟件結(jié)合Tektronix
    發(fā)表于 12-09 20:37

    電源的三種常用冷卻方法

    在電源領(lǐng)域,散熱至關(guān)重要,它可直接影響電源性能、可靠性和壽命。隨著電子元件的尺寸不斷縮小,功率越來(lái)越大,有效的冷卻方法對(duì)于防止過(guò)熱和確保最佳功能至關(guān)重要。在本文中,我們將深入獨(dú)具吸引力的電源冷卻領(lǐng)域,并探討三種常用方法的優(yōu)缺點(diǎn):
    的頭像 發(fā)表于 12-03 10:29 ?869次閱讀

    淺析中國(guó)工業(yè)自動(dòng)化與智能應(yīng)用

    自動(dòng)化驅(qū)動(dòng)產(chǎn)品與智能操控系統(tǒng)主要用于工業(yè)自動(dòng)化中的設(shè)備自動(dòng)化領(lǐng)域,其中自動(dòng)化驅(qū)動(dòng)產(chǎn)品是實(shí)現(xiàn)設(shè)備單機(jī)自動(dòng)化的核心部件;智能操控系統(tǒng)是在設(shè)備單機(jī)
    發(fā)表于 12-01 10:11 ?821次閱讀
    淺析中國(guó)工業(yè)<b class='flag-5'>自動(dòng)化</b>與智能<b class='flag-5'>化</b>應(yīng)用

    通過(guò)網(wǎng)絡(luò)方法提高制造自動(dòng)化系統(tǒng)的能源效率

    電子發(fā)燒友網(wǎng)站提供《通過(guò)網(wǎng)絡(luò)方法提高制造自動(dòng)化系統(tǒng)的能源效率.pdf》資料免費(fèi)下載
    發(fā)表于 11-27 11:51 ?0次下載
    通過(guò)網(wǎng)絡(luò)<b class='flag-5'>化</b><b class='flag-5'>方法</b>提高制造<b class='flag-5'>自動(dòng)化</b>系統(tǒng)的能源效率

    修復(fù)鋰電池的三種方法

    電子發(fā)燒友網(wǎng)站提供《修復(fù)鋰電池的三種方法.doc》資料免費(fèi)下載
    發(fā)表于 11-15 10:40 ?5次下載
    修復(fù)鋰電池的<b class='flag-5'>三種方法</b>

    如何用三種不同的方法來(lái)用按鈕控制燈光

    在電子和自動(dòng)化中,一個(gè)常見(jiàn)的任務(wù)是使用按鈕來(lái)控制燈的開(kāi)/關(guān)狀態(tài)。這可以用不同的方式實(shí)現(xiàn),取決于設(shè)備的類型和涉及的邏輯。在本文中,我們將比較使用單片機(jī)、PLC和硬件連接來(lái)實(shí)現(xiàn)這個(gè)任務(wù)的三種方法。我們將討論每種方法的優(yōu)缺點(diǎn),以及所需
    的頭像 發(fā)表于 11-10 11:47 ?2454次閱讀
    如何用<b class='flag-5'>三種</b>不同的<b class='flag-5'>方法</b>來(lái)用按鈕控制燈光