当前位置: 首页 > news >正文

[SV]SystemVerilog中指定打印格式

SystemVerilog中指定打印格式

       前言:本文主要总结一下SystemVerilog中的占位符,通过合理的使用占位符,可以再log中按自己指定的格式打印信息,方便case分析及debug。

一、指定输出打印格式

       在指定输出打印格式时,转义字符“%”后跟格式说明字符用于指定输出打印格式,除了(%m, %l, and %%)以外,每个%所指定的输出打印格式在后面都应该有一个对应的表达式参数。

       当存在多个格式说明的时候,格式说明与表达式参数按位置关系形成一一对应。

No.占位符意义
1%d或%D   以十进制的形式输出
2%o或%O   以八进制的形式输出
3%b或%B   以二进制的形式输出
4%h或%H   以十六进制的形式输出,打印的字母小写或者大写
5%x或%X   以十六进制的形式输出
6%c或%C   以ASCII码字符的形式输出
7%s或%S   以字符串的形式输出
8%t或%T   以当前的时间格式的形式输出
9%e或%E   以指数的形式输出实型数
10%f或%F   以十进制的形式输出实型数
11%g或%G   以指数或者十进制的形式输出实型数,无论何种格式都以较短的结果输出
12%u或%U Unformatted 2 value data (binary values)
13%z或%Z Unformatted 4 value data
14%v或%V     Display net signal strength
15%p或%P     Display as an assignment pattern
16%l或%L         Display library binding information,显示库关联关系
17%m或%M     Display hierarchical name,显示当前模块的层次名

注:

  • %m和%l分别可以显示打印语句所在当前模块的模块名,和该模块所在的仿真所构建的运行库路径信息,对于调试跟踪来说非常有用,其效果参见以下代码例。
  • %t用于打印时间信息,通常跟$time配合使用
  • %u和%z常用于$fwrite()函数,用于向文件写入数据;其中%u不区分x和z数据,并将其映射为’0’;而%z严格区分x和z数据,将其分别映射为’x’,‘z’。如果需要保持以及区分x(不确定值)和z(高阻)的话,推荐使用%z。
  • %p用于打印聚合表达式,例如解压缩结构,数组和联合(unpacked structure,array,unions),结构体等等,非常方便,其效果如以下代码例所示
`timescale 1ns/1ps

module hvl_top( );
 
  typedef struct packed {
    logic bit1;
    logic [7:0] byte1;
  } packet_t;
 
  packet_t  my_packet;    
    
  logic     x;
  logic     y = 1'bz;    
  
  initial begin        
    # 100;
    $display("[1]: %m:  Welcome to SystemVerilog");
    $display("[2]: %l:  SystemVerilog is very powerful, @%0t(ps)", $realtime());
       
    # 100;
    my_packet.bit1  = 1;
    my_packet.byte1 = 8'h37;

    $display("my_packet = %p, @%0t(ps)", my_packet, $realtime);
 
    $finish();
  end
 
endmodule

相关文章:

  • 长期主义就是坚持重复的做一件事?
  • 各位程序员们,睡眠不足产生的后果超出你想象!
  • c++学习
  • 6步搭建一个飞机大战游戏
  • 前端与后端传递数据 — — JSON
  • CANoe/CAPL ,QQ消息远程通知
  • 3D 视觉算法初学概述
  • 特征点检测和特征点匹配(ORB)
  • MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析
  • 【Spring依赖循环】提前曝光,直接曝光到二级缓存已经可以解决循环依赖问题了,为什么一定要三级缓存?
  • REACT全家桶(1)
  • 对Spring的后置处理器BeanPostProcessor的使用
  • 【day9】【洛谷算法题】-P2433小学数学N合一-刷题反思集[入门2分支结构]
  • halcon脚本-深度学习【目标检测】
  • 线上服务器内存飙升怎么排查?
  • [数据结构]链表的实现在PHP中
  • Angular2开发踩坑系列-生产环境编译
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java多线程
  • jquery ajax学习笔记
  • Node 版本管理
  • Otto开发初探——微服务依赖管理新利器
  • Redux 中间件分析
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 闭包--闭包作用之保存(一)
  • 番外篇1:在Windows环境下安装JDK
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 记录一下第一次使用npm
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 我看到的前端
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​如何在iOS手机上查看应用日志
  • #Linux(make工具和makefile文件以及makefile语法)
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #前后端分离# 头条发布系统
  • (4)logging(日志模块)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (ros//EnvironmentVariables)ros环境变量
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Remoting学习笔记(三)信道
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .net中调用windows performance记录性能信息
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @DependsOn:解析 Spring 中的依赖关系之艺术