国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

比較時間可以選擇在每個時鐘邊沿,或者沒n個時鐘周期比較一次,總而言之要與設計相符合。比如內存I/O的testbench應該在讀出或寫入一個新數據后就進行比較;如何設計使用了大量組合邏輯模塊,選取比較時間必須考慮組合邏輯延遲。
??對于中小型設計而言,自我檢查的testbench設計方法是一種不錯的選擇,但是對于復雜的大型設計,可能的輸出組合呈指數形式增加,編寫一個自我檢查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; //全局復位結束后開始產生時鐘信號 #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中,需要修改實例化接口和預期的輸出值。如果不需要在每個時鐘沿檢查一次數據,則修改for循環的執行條件。

責任編輯:lq

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

    關注

    189

    文章

    3025

    瀏覽量

    238696
  • 自動化
    +關注

    關注

    31

    文章

    5930

    瀏覽量

    90222
  • 數據庫
    +關注

    關注

    7

    文章

    4019

    瀏覽量

    68339

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    羅克韋爾自動化邀您共赴2025年自動化博覽會

    11 月 17 - 20 日,作為工業自動化、信息和數字轉型領域的全球領先企業之一,羅克韋爾自動化將在芝加哥舉辦的 2025 年自動化
    的頭像 發表于 11-17 17:54 ?1954次閱讀

    宜科電子推出三種不同原理標簽傳感器

    在工業自動化與智能包裝領域,標簽檢測的精度、速度與適應性直接決定了生產線的效率與產品合規性。針對不同材質標簽(如紙質、薄膜、金屬箔)及復雜檢測環境,我們推出超聲波、光電、電容三種不同原理標簽傳感器,以多模融合、精準識別、智能適應為核心,為食品包裝、醫藥制造、物流分揀等行業
    的頭像 發表于 11-08 15:07 ?1961次閱讀

    語法糾錯和testbench自動生成

    ,每次跑仿真都需要修改語法錯誤;另外在寫完一個模塊之后,每次跑仿真前都需要搭建testbench,模塊的實例,這顯然是很麻煩的,查閱資料發現vscode有插件可以解決上述問題,故來分享給大家
    發表于 10-27 07:07

    智芯公司完成智能分布式饋線自動化試點驗證

    近日,智芯公司所屬智芯半導體聯合國網河南電力門峽供電公司、中國移動門峽分公司完成基于 5G LAN技術的智能分布式饋線自動化試點驗證。此次現網試點將5G通信技術與智能分布式饋線
    的頭像 發表于 09-30 15:34 ?1159次閱讀

    伺服電機的三種制動方式有什么區別?

    伺服電機作為自動化控制系統中執行元件的核心部件,其制動性能直接影響設備的定位精度和安全可靠性。目前主流的伺服電機制動方式包括動態制動、再生制動和電磁機械制動三種,它們在制動原理、應用場景及技術特點上
    的頭像 發表于 09-19 18:26 ?1748次閱讀
    伺服電機的<b class='flag-5'>三種</b>制動方式有什么區別?

    電源模塊的短路保護如何通過自動化測試軟件完成測試

    在當今電力電子領域,電源模塊的可靠性至關重要,短路保護作為其關鍵特性,需通過精確的自動化測試軟件進行驗證。本文將整理如何借助自動化測試軟件ATECLOUD完成電源模塊短路保護的測試。 短路測試項目
    的頭像 發表于 09-03 19:10 ?840次閱讀
    電源模塊的短路保護如何通過<b class='flag-5'>自動化</b>測試軟件完成測試

    【干貨】一文帶你了解CAN、Modbus與LoRa三種通信協議的區別

    在工業自動化與物聯網領域,CAN、Modbus和LoRa是三種主流通信技術。而億佰特在該行業具有豐富的產品供客戶選擇與使用,幫助客戶進一步確定需求,本文將結合技術細節與實際案例解析其核心區別。一
    的頭像 發表于 08-28 19:32 ?2127次閱讀
    【干貨】一文帶你了解CAN、Modbus與LoRa<b class='flag-5'>三種</b>通信協議的區別

    相全自動穩壓器在工業自動化領域的重要性與應用

    在工業自動化領域中,電力的穩定性至關重要。我們都知道,電力就像一條河流,穩定的水流才能保證工業設備的平穩運行。而在這條河流中,相全自動穩壓器就像是一個水閘,控制著水流的強度和方向,確保每一個環節都能正常運作。下面就來詳細的說說
    的頭像 發表于 08-18 15:19 ?741次閱讀
    <b class='flag-5'>三</b>相全<b class='flag-5'>自動</b>穩壓器在工業<b class='flag-5'>自動化</b>領域的重要性與應用

    自動化測試如何繞過Cloudflare驗證碼?Python + Selenium 腳本實戰指南!

    01什么是Cloudflare驗證碼Cloudflare提供網絡工具,并提供一套全面的安全功能,以保護網站免受各種在線威脅。Cloudflare驗證碼是一用于區分人類用戶和自動化機器
    的頭像 發表于 08-15 10:01 ?1306次閱讀
    <b class='flag-5'>自動化</b>測試如何繞過Cloudflare<b class='flag-5'>驗證</b>碼?Python + Selenium 腳本實戰指南!

    電源模塊在配電自動化終端中的應用

    配電終端設備的可靠性和自動化程度,直接影響到整個配電自動化系統的可靠性和自動化水平。由于配電終端設備一般安裝于戶外或比較偏僻的地方,不可能有直流電源提供,因此,配電網終端設備的直流供電方式成為各配網
    的頭像 發表于 07-22 10:20 ?2.4w次閱讀
    電源模塊在配電<b class='flag-5'>自動化</b>終端中的應用

    自動化計算機的功能與用途

    工業自動化是指利用自動化計算機來控制工業環境中的流程、機器人和機械,以制造產品或其部件。工業自動化的目的是提高生產率、增加靈活性,并提升制造過程的質量。工業自動化在汽車制造中體現得最為
    的頭像 發表于 07-15 16:32 ?738次閱讀
    <b class='flag-5'>自動化</b>計算機的功能與用途

    redis三種集群方案詳解

    在Redis中提供的集群方案總共有三種(一般一個redis節點不超過10G內存)。
    的頭像 發表于 03-31 10:46 ?1529次閱讀
    redis<b class='flag-5'>三種</b>集群方案詳解

    工業DTU對工業自動化通信格局的重塑

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

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

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

    相濾波器:工業自動化的穩定基石

    自動化中的應用,以及它如何成為這一領域不可或缺的科技力量。 一、相濾波器:工業自動化中的電磁守護者 相濾波器的工作原理與重要性 相濾波
    的頭像 發表于 03-11 11:04 ?980次閱讀