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

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

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

如何使用display提高debug效率呢?

sanyue7758 ? 來(lái)源:IC的世界 ? 2023-08-27 17:25 ? 次閱讀

1、display的使用

verilog中雖然沒(méi)有system verilog的assertion,但是我們依舊可以使用display打印檢查各類(lèi)錯(cuò)誤,在RTL級(jí)的仿真中能夠快速定位問(wèn)題。

例如:

檢查不合理的配置,不合理的配置組合;

檢查不合理的輸入數(shù)據(jù)類(lèi)型,例如vld/sop/eop 組合缺少了sop或者eop;

案例:

如下案例中,如果復(fù)位釋放且cfg_mode_in為INVLD_CFG狀態(tài),則打印ERROR。%0t表示的是以當(dāng)前時(shí)間格式顯示,即仿真中的時(shí)間。%0t中的0指的是以數(shù)值的真實(shí)位寬顯示,不會(huì)額外再補(bǔ)充0。%m 顯示當(dāng)前模塊層級(jí),即下圖中的display_exp_top.u_display_exp。$write在屏幕顯示時(shí)是不換行的,$display自帶換行符,顯示后換行。

Verilog代碼

`timescale 1ns/1ps`define INVLD_CFG 2'b0module display_exp (   input                                               clk                                  ,   //   input                                               rst_n                                ,   //   input       [1:0]                                   cfg_mode_in                              //);  reg   [1:0]  cfg_mode ;  always@(posedge clk or negedge rst_n)if(~rst_n)          cfg_mode <= 1'b0;else          cfg_mode <= cfg_mode_in; `ifdef WAR_ERR_PRINT  always@(posedge clk or negedge rst_n)     if((rst_n==1)&&(cfg_mode_in==`INVLD_CFG))       begin          $write("%0t ps: %m : ERROR : ",    $time) ;          $display("cfg_mode not be INVLD CFG when rst_n is release") ;      end `endifendmodule

Testbench

module display_exp_top();


reg clk;
reg rst_n;
reg [1:0] cfg_mode_in ;




initial begin
clk = 0;
forever #1 clk = ~clk;
end


initial begin
rst_n = 1'b0;
   #2.5 rst_n = 1;
end




display_exp  u_display_exp(
.clk(clk),
.rst_n(rst_n),
.cfg_mode_in(cfg_mode_in)
);


initial begin
cfg_mode_in = 2'b0 ;
   #10
cfg_mode_in = 2'b1 ;
   #10
cfg_mode_in = 2'b10 ;
   #10
cfg_mode_in = 2'b11 ;
end




endmodule

2、打印效果

25e40cba-4360-11ee-a2ef-92fbcf53809c.png25f8ea68-4360-11ee-a2ef-92fbcf53809c.png

3、注意事項(xiàng)

$write和$display是不可綜合的語(yǔ)句,因此在設(shè)計(jì)中,我們通常使用宏定義來(lái)生效打印語(yǔ)句。案例中就采用了`ifdef WAR_ERR_PRINT和`endif。在RTL仿真中,可以生效WAR_ERR_PRINT,而在綜合時(shí)不能生效WAR_ERR_PRINT。

4、打印的優(yōu)缺點(diǎn)

采用$display的優(yōu)勢(shì)在于它不會(huì)占用硬件資源,因此設(shè)計(jì)人員可以添加任意多的檢測(cè)語(yǔ)句,方便快速定位問(wèn)題。缺點(diǎn)就是不可綜合,在網(wǎng)表中以及芯片中不存在此檢測(cè)手段,無(wú)法像中斷,統(tǒng)計(jì)計(jì)數(shù)那樣去debug問(wèn)題。





審核編輯:劉清

聲明:本文內(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)投訴
  • 芯片設(shè)計(jì)
    +關(guān)注

    關(guān)注

    15

    文章

    993

    瀏覽量

    54773
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1014

    瀏覽量

    83591
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59665
  • Verilog語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8206

原文標(biāo)題:Verilog :使用display 提高debug效率

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    提高LED驅(qū)動(dòng)電源效率的八種技巧

    大家都知道提高LED驅(qū)動(dòng)電源效率最常見(jiàn)的就是優(yōu)化電子變壓器參數(shù)設(shè)計(jì),減少振鈴帶來(lái)的渦流損耗。但是除了這樣還有沒(méi)有相關(guān)的技巧?現(xiàn)在跟大家分享提高LED驅(qū)動(dòng)電源
    發(fā)表于 09-22 16:21 ?4255次閱讀

    提高待機(jī)效率的方法

    提高待機(jī)效率的方法  根據(jù)損耗分析可知,切斷啟動(dòng)電阻,降低開(kāi)關(guān)頻率,減小開(kāi)關(guān)次數(shù)可減小待機(jī)損耗,提高待機(jī)效率。具體的方法有:降低時(shí)鐘頻率;由高頻工作模式切換至低頻工作模式,如準(zhǔn)諧振模式
    發(fā)表于 06-10 10:21

    如何提高STM32的學(xué)習(xí)效率

    如何提高STM32的學(xué)習(xí)效率
    發(fā)表于 11-08 17:23

    怎么提高labview的運(yùn)行效率

    怎么提高labview的運(yùn)行效率?那位給出點(diǎn)建議
    發(fā)表于 02-25 10:09

    無(wú)線充電怎么提高效率,急需

    無(wú)線充電怎么提高效率,急需
    發(fā)表于 10-19 10:43

    怎樣做才能提高電路板的維修效率?

    怎樣做才能提高電路板維修效率?有哪些原則需要去遵循?
    發(fā)表于 04-23 06:40

    如何提高線性穩(wěn)壓器的效率

    開(kāi)關(guān)電源基礎(chǔ)線性穩(wěn)壓器等效電路如果輸入是39V,輸出是13V,那么效率為33.3%,過(guò)低的效率導(dǎo)致能量的浪費(fèi)。如何提高線性穩(wěn)壓器的效率?這
    發(fā)表于 10-29 09:11

    怎么通過(guò)修改電源選項(xiàng)提高cpu使用效率

    怎么通過(guò)修改電源選項(xiàng)提高cpu使用效率~首先,確定你的系統(tǒng)是win10,1804版本以上。其次,管理員身份打開(kāi)windows powershell,輸入powercfg
    發(fā)表于 12-27 06:53

    怎么才能提高開(kāi)關(guān)電源的效率

    我公司要做個(gè)5.25V,5.5A,輸入174-500VAC ,效率為80%的開(kāi)關(guān)電源;我用EFD25磁芯,匝比為112/3/14,頻率為65KHZ,做出來(lái)的效率僅有65%,請(qǐng)教各位大俠,怎么調(diào)才能提高電源的
    發(fā)表于 08-01 10:58

    如何提高led發(fā)光效率

    過(guò)去十多年來(lái),通過(guò)在材料和器件設(shè)計(jì)方面的改進(jìn),使得LED的發(fā)光效率獲得了極大提高。在2000年,外量子效率為25%,而如今對(duì)藍(lán)光GaN基LED最好的外量子效率已超過(guò)70%。圖2.9給出
    的頭像 發(fā)表于 01-29 14:30 ?1.1w次閱讀

    如何提高伺服液壓機(jī)的作業(yè)效率

    如何提高伺服液壓機(jī)的作業(yè)效率? 伺服液壓機(jī)的生產(chǎn)使用過(guò)程中,除了留意操作時(shí)的規(guī)范和守時(shí)的修理和養(yǎng)護(hù),咱們還要想辦法提高伺服液壓機(jī)的作業(yè)效率
    發(fā)表于 07-12 10:42 ?638次閱讀

    有沒(méi)有辦法像debug RTL代碼一樣將UVM中變量拉到波形上看

    我們常用的debug UVM的方法是通過(guò)打印log實(shí)現(xiàn)。有沒(méi)有辦法像 debug RTL代碼一樣將 UVM 中變量拉到波形上看?答案是有的,下面讓我們看看是怎么做到的。
    的頭像 發(fā)表于 06-29 15:14 ?1407次閱讀
    有沒(méi)有辦法像<b class='flag-5'>debug</b> RTL代碼一樣將UVM中變量拉到波形上看<b class='flag-5'>呢</b>?

    怎樣提高開(kāi)關(guān)電源效率

    最為關(guān)心的因素之一,它能夠在提供輸出電能的同時(shí)減少損失,延長(zhǎng)設(shè)備的壽命,為用戶(hù)節(jié)約成本。那么如何提高開(kāi)關(guān)電源的效率?本文將從開(kāi)關(guān)電源的結(jié)構(gòu)、工作原理、影響效率因素的分析,系統(tǒng)闡述如何
    的頭像 發(fā)表于 08-27 16:05 ?2471次閱讀

    焊縫跟蹤系統(tǒng)如何提高生產(chǎn)效率

      焊縫跟蹤系統(tǒng)是一種智能化的焊接輔助設(shè)備,可以自動(dòng)識(shí)別和跟蹤焊縫,調(diào)整焊接路徑和參數(shù),從而提高焊接質(zhì)量和效率。那么,焊縫跟蹤系統(tǒng)是如何提高生產(chǎn)效率
    的頭像 發(fā)表于 09-06 14:36 ?411次閱讀

    為什么我的項(xiàng)目Debug運(yùn)行沒(méi)問(wèn)題,編譯成Release包就報(bào)錯(cuò)?

    ,以提高應(yīng)用性能和減少最終包的大小。相比之下,Debug模式優(yōu)化級(jí)別較低,側(cè)重于縮短編譯時(shí)間和提高調(diào)試效率,
    的頭像 發(fā)表于 06-12 11:18 ?729次閱讀
    為什么我的項(xiàng)目<b class='flag-5'>Debug</b>運(yùn)行沒(méi)問(wèn)題,編譯成Release包就報(bào)錯(cuò)?