0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

sanyue7758 来源:IC的世界 2023-08-27 17:25 次阅读

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问题。





审核编辑:刘清

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

    关注

    15

    文章

    901

    浏览量

    54426
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    83002
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59078
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8164

原文标题:Verilog :使用display 提高debug效率

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    提高待机效率的方法

    提高待机效率的方法  根据损耗分析可知,切断启动电阻,降低开关频率,减小开关次数可减小待机损耗,提高待机效率。具体的方法有:降低时钟频率;由高频工作模式切换至低频工作模式,如准谐振模式
    发表于 06-10 10:21

    如何提高STM32的学习效率

    如何提高STM32的学习效率
    发表于 11-08 17:23

    怎么提高labview的运行效率

    怎么提高labview的运行效率?那位给出点建议
    发表于 02-25 10:09

    LED电源的转换效率提高

    电源的效率提高了吗?
    发表于 04-29 18:42

    无线充电怎么提高效率,急需

    无线充电怎么提高效率,急需
    发表于 10-19 10:43

    如何提高隔离式电源的效率

    问题:如何提高隔离式电源的效率
    发表于 03-01 08:59

    Git和Github效率提高的技巧整理

    用 Git 和 Github 提高效率的 10 个技巧!
    发表于 11-08 08:46

    怎样做才能提高电路板的维修效率

    怎样做才能提高电路板维修效率?有哪些原则需要去遵循
    发表于 04-23 06:40

    如何提高线性稳压器的效率

    开关电源基础线性稳压器等效电路如果输入是39V,输出是13V,那么效率为33.3%,过低的效率导致能量的浪费。如何提高线性稳压器的效率?这
    发表于 10-29 09:11

    如何去解决STM32 Debug无法添加断点的问题

    STM32 Debug为什么不能添加断点?如何去解决STM32 Debug无法添加断点的问题
    发表于 11-25 08:46

    怎么通过修改电源选项提高cpu使用效率

    怎么通过修改电源选项提高cpu使用效率~首先,确定你的系统是win10,1804版本以上。其次,管理员身份打开windows powershell,输入powercfg
    发表于 12-27 06:53

    提高MCU设计效率的方法

    MCUs扩散到越来越多的权力约束的设计,加工效率成为提高系统设计的关注。在更小的功率下获得额外的处理能力的驱动器不仅在电池操作的产品中是重要的,而且,越来越多地,功率也被限制在许多“插件”模块中
    发表于 02-08 07:45

    怎么才能提高开关电源的效率

    我公司要做个5.25V,5.5A,输入174-500VAC ,效率为80%的开关电源;我用EFD25磁芯,匝比为112/3/14,频率为65KHZ,做出来的效率仅有65%,请教各位大侠,怎么调才能提高电源的
    发表于 08-01 10:58

    DEBUG程序的使用

    实 验   DEBUG程序的使用 一、 实验目的 1. 学习使用DEBUG程序的各种命令
    发表于 09-28 23:10 6895次阅读

    如何提高led发光效率

    过去十多年来,通过在材料和器件设计方面的改进,使得LED的发光效率获得了极大提高。在2000年,外量子效率为25%,而如今对蓝光GaN基LED最好的外量子效率已超过70%。图2.9给出
    的头像 发表于 01-29 14:30 1.1w次阅读