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

电子说

1.2w人已加入

描述

1、display的使用 

在verilog中虽然没有system verilog的assertion,但是我们依旧可以使用display打印检查各类错误,在RTL级的仿真中能够快速定位问题。

例如:

检查不合理的配置,不合理的配置组合;

检查不合理的输入数据类型,例如vld/sop/eop 组合缺少了sop或者eop;

案例:

    如下案例中,如果复位释放且cfg_mode_in为INVLD_CFG状态,则打印ERROR。%0t表示的是以当前时间格式显示,即仿真中的时间。%0t中的0指的是以数值的真实位宽显示,不会额外再补充0。%m 显示当前模块层级,即下图中的display_exp_top.u_display_exp。$write在屏幕显示时是不换行的,$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、注意事项

    $write和$display是不可综合的语句,因此在设计中,我们通常使用宏定义来生效打印语句。案例中就采用了`ifdef WAR_ERR_PRINT和`endif。在RTL仿真中,可以生效WAR_ERR_PRINT,而在综合时不能生效WAR_ERR_PRINT。

4、打印的优缺点 

    采用$display的优势在于它不会占用硬件资源,因此设计人员可以添加任意多的检测语句,方便快速定位问题。缺点就是不可综合,在网表中以及芯片中不存在此检测手段,无法像中断,统计计数那样去debug问题。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分