全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-08-27 17:25

人气:

作者:admin

标签: RTL  仿真器  芯片 

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

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、打印效果

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

3、注意事项

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

4、打印的优缺点

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





审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信