一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用三種自動化testbench驗證方法

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2020-11-20 11:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Testbench編寫指南(4)自動化驗證方法

自動化驗證testbench結果可以減少人工檢查的時間和可能犯的失誤,尤其對于比較大的設計。目前普遍使用三種自動化testbench驗證方法:

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

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

自我檢查testbench設計:與前兩種方法不同,該方法實時檢查預期結果和實際結果,而不是仿真結束后才檢查。在testbench中插入錯誤追蹤信息可以顯示設計在哪里失敗,從而縮短調試時間。

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

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

`timescale 1 ns / 1 ps module test_sc; // 信號申明 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]; // 實例化設計 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); //------------------------------------------------------------- // 預期結果 //------------------------------------------------------------- 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; // 等到全局復位結束 #100 GSR = 0; end //建立一個時鐘 initial begin tbclk = 0; //全局復位結束后開始產(chǎn)生時鐘信號 #100 forever #60 tbclk = ~tbclk; end //給出設計激勵 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 //------------------------------------------------------------- // 在每個時鐘的下降沿比較預期結果和實際結果 //------------------------------------------------------------- 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) ? ? ? ?// 每個下降沿檢查結果 ? ? ? ?$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

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

責任編輯:lq

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

    關注

    189

    文章

    3001

    瀏覽量

    234097
  • 自動化
    +關注

    關注

    29

    文章

    5780

    瀏覽量

    84828
  • 數(shù)據(jù)庫

    關注

    7

    文章

    3926

    瀏覽量

    66201

原文標題:Testbench編寫指南(4)自動化驗證方法

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    工業(yè)DTU對工業(yè)自動化通信格局的重塑

    隨著工業(yè)4.0和智能制造的快速發(fā)展,工業(yè)自動化系統(tǒng)對通信技術的要求越來越高。工業(yè)數(shù)據(jù)傳輸單元(DTU,DataTransferUnit)作為一新興的通信設備,正在逐步重塑工業(yè)自動化通信格局,為工業(yè)
    的頭像 發(fā)表于 03-28 14:09 ?286次閱讀
    工業(yè)DTU對工業(yè)<b class='flag-5'>自動化</b>通信格局的重塑

    告別人工檢測!casaim自動化維激光掃描

    casaim自動化維激光掃描技術通過集成傳感器、智能算法和自動化控制系統(tǒng),解決了傳統(tǒng)人工檢測的諸多問題。
    的頭像 發(fā)表于 03-12 13:20 ?333次閱讀
    告別人工檢測!casaim<b class='flag-5'>自動化</b><b class='flag-5'>三</b>維激光掃描

    HFSS 自動化建模工具

    因工作需求,自己寫的HFSS參數(shù)自動化建模工具,目前只實現(xiàn)了常用的四模型,可定制,如需可聯(lián)系 qq:1300038043 附件下載鏈接:https://pan.baidu.com/s/1TVeTTFiJw-pxSyT1AT
    發(fā)表于 02-27 17:44

    casaim自動化維激光掃描

    CASAIM自動化維激光掃描技術通過非接觸式高精度數(shù)據(jù)采集與智能分析系統(tǒng),為工業(yè)檢測提供全流程數(shù)字化解決方案。
    的頭像 發(fā)表于 02-27 10:32 ?370次閱讀

    自動化設備中滾珠螺桿的清洗方法有哪些?

    滾珠螺桿是一常見的精密傳動元件,廣泛應用于機床、自動化設備等領域。
    的頭像 發(fā)表于 02-05 17:58 ?392次閱讀
    <b class='flag-5'>自動化</b>設備中滾珠螺桿的清洗<b class='flag-5'>方法</b>有哪些?

    示波器的三種觸發(fā)模式

    示波器的觸發(fā)方式不僅影響波形捕捉的時機,還決定了顯示的波形是否穩(wěn)定。 常見的觸發(fā)模式有三種: 單次觸發(fā) (Single)、 正常觸發(fā) (Normal)和 自動觸發(fā) (Auto)。下面將對這三種觸發(fā)
    的頭像 發(fā)表于 01-07 11:04 ?7583次閱讀
    示波器的<b class='flag-5'>三種</b>觸發(fā)模式

    串口屏自動化測試

    嚴謹而高效的自動化測試方案顯得尤為重要。以下是對串口屏自動化測試策略的深度解析,旨在通過高質量的測試設計,嚴格控制產(chǎn)品設計質量,推動產(chǎn)業(yè)升級。 引言 串口屏自動化測試是連接軟件開發(fā)與硬件性能
    的頭像 發(fā)表于 12-27 17:17 ?1473次閱讀

    菱PLC在工業(yè)自動化中的作用

    、增強系統(tǒng)穩(wěn)定性和安全性方面發(fā)揮著不可替代的作用。 一、菱PLC的定義與特點 菱PLC是一專為工業(yè)環(huán)境設計的數(shù)字運算操作的電子系統(tǒng),用于控制機器或生產(chǎn)過程。它通過軟件編程來實現(xiàn)自動化
    的頭像 發(fā)表于 12-26 17:56 ?1212次閱讀

    菱PLC自動化控制應用領域

    在現(xiàn)代工業(yè)生產(chǎn)中,自動化控制技術扮演著至關重要的角色。菱電機作為自動化技術的先驅之一,其PLC產(chǎn)品以其高可靠性、高性能和易用性在全球范圍內被廣泛采用。 1. 制造業(yè) 制造業(yè)是PLC應用最廣泛的領域
    的頭像 發(fā)表于 12-26 17:34 ?2490次閱讀

    編寫高效Testbench的指南和示例

    Testbench驗證HDL設計的主要手段,本文提供了布局和構建高效Testbench的指南以及示例。另外,本文還提供了一示例,可以為任何設計開發(fā)自檢
    的頭像 發(fā)表于 10-29 16:14 ?1877次閱讀
    編寫高效<b class='flag-5'>Testbench</b>的指南和示例

    MR30系列IO——工業(yè)自動化的智慧紐帶

    工業(yè)生產(chǎn)的智能與高效提供了堅實的支撐。明達技術將為您深入淺出地介紹這三種模塊的基本概念、功能特性及其應用場景,特別聚焦于MR30系列IO模塊的獨特之處
    的頭像 發(fā)表于 10-10 13:27 ?500次閱讀
    MR30系列IO——工業(yè)<b class='flag-5'>自動化</b>的智慧紐帶

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

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

    復雜工件的高效測量方案:自動化坐標測量與影像測量技術集成

    在現(xiàn)代制造業(yè)的快速發(fā)展中,復雜工件的精密測量成為了質量控制的關鍵。隨著工業(yè)4.0的推進,自動化技術與精密測量設備的結合,為生產(chǎn)效率和產(chǎn)品質量的提升提供了新的解決方案。全自動化坐標測量站全自動
    的頭像 發(fā)表于 08-30 16:49 ?856次閱讀
    復雜工件的高效測量方案:<b class='flag-5'>自動化</b><b class='flag-5'>三</b>坐標測量與影像測量技術集成

    MCUXpresso IDE下在線聯(lián)合調試雙核MCU工程的三種方法

    大家好,我是痞子衡,是正經(jīng)搞技術的痞子。今天痞子衡給大家分享的是MCUXpresso IDE下在線聯(lián)合調試i.MXRT1170雙核工程的三種方法。
    的頭像 發(fā)表于 08-08 15:18 ?1360次閱讀
    MCUXpresso IDE下在線聯(lián)合調試雙核MCU工程的<b class='flag-5'>三種方法</b>

    數(shù)字示波器的測量方法有哪三種

    數(shù)字示波器是一廣泛應用于電子測量領域的儀器,它能夠實時顯示電壓波形,幫助工程師和技術人員對電子信號進行分析和測量。數(shù)字示波器的測量方法有很多種,不同的測量方法適用于不同的應用場景。以下是三種
    的頭像 發(fā)表于 07-17 18:02 ?3175次閱讀