在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Testbench自動化驗證方法介紹

FPGA之家 ? 來源:FPGA之家 ? 2023-09-04 09:15 ? 次閱讀

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

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

波形比較:將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循環的執行條件。






審核編輯:劉清

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

    關注

    14

    文章

    1651

    瀏覽量

    107220
  • MATLAB仿真
    +關注

    關注

    4

    文章

    176

    瀏覽量

    19929
  • HDL語言
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8916

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

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

收藏 人收藏

    評論

    相關推薦

    是德科技的 Type-C 測試解決方案為高速接口提供最廣泛的物理層自動化驗證

    over Type-C 進行無限制的自動化驗證,是是德科技高速驗證系統的重要組成部分。N7018A 能夠將最大功率設置為高達 100 W,并將設備設置為交替模式(DisplayPort 和 Thunderbolt)。
    發表于 09-22 20:01 ?2294次閱讀

    EDA形式化驗證漫談:仿真之外,驗證之內

    “在未來五年內仿真將逐漸被淘汰,僅用于子系統和系統級驗證。與此同時,形式化驗證方法已經開始處理一些系統級任務。隨著技術發展,更多Formal相關的商業標準化會推出。” Intel?fellow
    的頭像 發表于 09-01 09:10 ?1423次閱讀

    自動煤炭氟氯離子化驗儀器DT-5A型

    `全自動煤炭氟氯離子化驗儀器DT-5A型 全自動煤炭氟氯離子化驗儀器DT-5A型 英特儀器煤炭氟氯分析儀,電腦氟氯化驗設備,測試氟氯離子的設
    發表于 07-01 08:44

    驗證方法簡介

    上是基于 Verisity Design 在 2001 年開發的用于 e 驗證語言的eRM(e Reuse Methodology)。UVM 類庫為SystemVerilog 語言,如序列和數據自動化功能(打包、復制、比較
    發表于 02-13 17:03

    化驗證和封裝形式有關系嗎?

    無關,任何形式的封裝,皆需要做老化實驗。蘇試宜特提供客戶量身訂制全方位的一站式服務, 從老化驗證的硬件設計/制造到樣品調試/實驗/報告, 蘇試宜特都可以協助客戶完成。
    發表于 09-13 09:46

    硬件驗證方法簡明介紹

    硬件驗證方法簡明介紹本書“硬件驗證方法簡明介紹”是“半導體 IP 核——不僅僅是設計”系列叢書中
    發表于 11-26 20:43

    超大規模集成電路的自動化驗證方法

    超大規模集成電路的自動化驗證方法 隨著數字邏輯的設計復雜度的提高,驗證的困難度也逐級上升。本文結合作者在一款以太網交換芯片項目中的實踐經驗,提
    發表于 03-17 18:24 ?23次下載

    基于串空間的協議認證屬性標準化驗證過程

    針對目前串空間理論依賴分析人員主觀判斷、無法使用自動化工具進行驗證的問題,提出了基于串空間理論的協議認證屬性標準化驗證過程。首先為協議消息項定義類型標簽,對串空間及認證測試理論進行擴展;然后通過判斷
    發表于 01-07 12:13 ?0次下載

    VaaS平臺已支持區塊鏈平臺智能合約的形式化驗證

    VaaS形式化驗證平臺,采用了多種形式化驗證方法,具有驗證效率高、自動化程度高、人工參與度低、易于使用、支持多個合約開發語言、可支持大容量區
    發表于 12-14 10:18 ?1102次閱讀

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

    自我檢查testbench設計:與前兩種方法不同,該方法實時檢查預期結果和實際結果,而不是仿真結束后才檢查。在testbench中插入錯誤追蹤信息可以顯示設計在哪里失敗,從而縮短調試時
    的頭像 發表于 11-20 11:26 ?3750次閱讀

    軟件的順序語句塊自動化規約與驗證研究

    軟件的形式化驗證是保障軟件可證明性、可靠性和安全性的重要手段,但傳統形式化驗證腳本的生成過程復雜且需要形式化驗證專家的大量手工驗證。為提高證明效率,構建一種
    發表于 06-03 14:31 ?5次下載

    安世亞太:中國仿真如何進行切實可行的工程化驗證

    的工程化驗證更尤為關鍵。 中國仿真工程化驗證的無效路徑 過去企業一般有兩種方法進行工程化驗證,一是用實驗的方法,二是通過多年用戶現場觀察工程
    的頭像 發表于 01-24 11:06 ?1366次閱讀

    從小眾走向普及,形式化驗證對系統級芯片開發有多重要?

    形式化驗證作為一種全新的驗證方法,近年來在芯片開發中快速發展,正逐漸取代傳統的仿真方法。 雖然仿真在系統級驗證方面仍然發揮著重要的作用,但對
    的頭像 發表于 04-21 19:35 ?668次閱讀
    從小眾走向普及,形式<b class='flag-5'>化驗證</b>對系統級芯片開發有多重要?

    如何可靠、快速、自動驗證處理器硬件

    你是否會遇到以下問題:bug可能比較微妙,不直觀,無法手動推斷;或者在被觀察到之前就被激活很久了,傳統的模擬設計需要花很長時間自動驗證工作量隨著設計復雜性的增加而增加,人工推理和手動編寫屬性不再可行,等等。目前驗證CPU的主流
    的頭像 發表于 11-16 12:29 ?613次閱讀
    如何可靠、快速、<b class='flag-5'>自動</b>地<b class='flag-5'>驗證</b>處理器硬件

    編寫高效Testbench的指南和示例

    Testbench驗證HDL設計的主要手段,本文提供了布局和構建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設計開發自檢Testbench
    的頭像 發表于 10-29 16:14 ?267次閱讀
    編寫高效<b class='flag-5'>Testbench</b>的指南和示例
    主站蜘蛛池模板: 国产亚洲美女| 天天曰天天干| 免费午夜视频在线观看| 在线观看免费av网| 日本加勒比高清一本大道| 狂野欧美性色xo影院| 性欧美video视频另类| 天天视频国产精品| 狠狠色噜噜| 免费看欧美一级特黄α大片| 欧美视频三区| 欧美一级视频高清片| 五月天狠狠操| 亚洲一成人毛片| 欧美一区二区三区四区视频| 天天欧美| 玖玖在线国产精品| 美女免费视频是黄的| 日本巨黄视频| 操白虎美女| 色香蕉在线| 夜夜爱夜夜做| 轻点灬大ji巴太粗太长了啊h| 欧美精品二区| 欧美一级看片a免费观看| 中文天堂在线观看| 国产一区二区三区在线影院| 操操操天天操| 色多多官网| 人人搞人人| 亚洲免费人成在线视频观看| 国产经典三级在线| 49pao强力免费打造在线高清| 日本一卡二卡≡卡四卡精品| 播放一级毛片| h黄视频| 香蕉黄色网| video欧美性精品| a级午夜毛片免费一区二区| 婷婷影院在线综合免费视频| 在线观看免费高清|