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、打印效果
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)題。
審核編輯:劉清
-
芯片設(shè)計(jì)
+關(guān)注
關(guān)注
15文章
1015瀏覽量
54878 -
仿真器
+關(guān)注
關(guān)注
14文章
1017瀏覽量
83722 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59761 -
Verilog語(yǔ)言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8224
原文標(biāo)題:Verilog :使用display 提高debug效率
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論