system_verilog display format

1. 简介

  • $display 和 $write的区别:

    • $display系的系统函数:会在输出的末尾自动添加换行符(newline character);
    • $write系的系统函数:光标会停留在输出的末尾,不会自动换行。
  • $display 和 $write相同之处:
    • 按照参数列表的顺序输出参数;
    • 参数可以是引号内的字符串(quoted string literal),表达式(expression) 和数值(value);
    • 未指定输出格式的 string 和未压缩的 byte 数据类型,将按照字符串类型输出;
    • 其他未指定输出格式的数据类类型是非法的。
  • 未指定 转义字符 输出特殊字符和特殊格式时,$dispaly 和 $write 的输出类型默认为 string。

2. 转义字符 (Escape sequences)

转义字符可以分为以下三类:

  • ’ \ ’ 表示其后跟随:文字或者不可打印字符(Literal or Nonprintable Character);
  • ’ % ’ 表示其后跟随:格式规范,为后续参数指定格式(Format Specification);
  • ’ %% ’ 表示其后跟随:%字符 (percent sign character).

2.1 转义字符 ‘\’

Escaped Sequence Character Produced by Escaped Sequence
\n newline character -> 换行符
\t tab character -> 制表符
\\ \ character -> 反斜杠
\" “ character -> 引号
\v vertical tab -> 纵向制表符
\f form feed -> 换页符
\a Bell -> 响铃
%% % character -> 百分号
\ddd (1)三位八进制指定的字符,0 ≤ d ≤ 7; (2)字符少于3位,输出非八进制数字; (3)大于\377出错;
\xdd 两位十六进制数字指定的字符,0 ≤ d ≤ F

注意: system_verilog中仅包含以上几种类型的转义字符(IEEE Std 1800TM-2017),未出现于上表中的其他类型将输出原来字符。如转义字符’ \b ‘的输出结果为‘ b ’。这与 c 语言中不同, c 语言中的 ‘ \b ’为退格,而SV中为字符’ b '.

转义字符 >> 输出示例:

2.2 格式说明符 ‘%’

2.2.1 整型数据格式

Argument Description
%h or %H hexadecimal -> 十六进制
%d or %D decimal -> 十进制
%o or %O octal -> 八进制
%b or %B binary->二进制
%c or %C ASCII -> ASCII码
%l or %L Library binding information -> 库索引
%t or %T time->时间
%u or %U unformatted 2 value data ->二值类型
%z or %Z unformatted 4 value data ->四值类型
%v or %V net signal strength -> 线网型信号强度
%m or %M hierarchical name -> 层次名
%p or %P assignment pattern ->
%s or %S string -> 字符串
  • ‘%h’ ~ ‘%z’ 将整形数据显示为对应格式,应用比较常见,此处不再赘述;
  • ‘%l’ 可以显示既定module的library信息,如果某module例化自library0,例化名称为module1,那么最终的打印信息格式为“ library0.module1 ” ;
  • ‘%t’ 根据不同module的时间精度(precision)和时间单元(unit)显示的格式可能不同;
  • ‘%u’ ‘%z’ 常用于$fwrite函数,用于向文件写入数据;其中%u不区分’x’和’z’数据,并将其映射为’0’;%z严格区分x和’z’数据,将其分别映射为’x’,‘z’。

2.2.2 实数显示格式

Argument Description
%e or %E exponential -> 指数型
%f or %F decimal ->十进制
%g or %G exponential or decimal (shorter one)

数字类型 >> 输出示例:

2.3 数据显示尺寸

  • 对表达式参数而言,写入输出文件的尺寸是自动调整的。例如:12 bit的数据在以 ‘hex’ 格式输出的时候自动调整为3个字符长度,以 ‘decimal’ 格式输出的时候,自动调整为4个字符长度,因为参数输出的最大值为FFF(hexadecimal)和4095(decimal)。
  • 默认设置:以十进制显示的数据格式,参数首部的 ‘0’(leading zeros)会被自动替换成空格(space);对其他格式而言,leading zeros 正常显示;ps:如上图第一行打印信息。
  • 可以在%和字母之间插入域宽(field width),改写显示的格式。注意:域宽只能是非负十进制整型常亮(non-negative decimal integer constant) ;
    • field width == 0 : 以最小位宽显示,去除首部的空格和0;
    • field width == others :以others的值显示位宽,不去除首部的空格和0;
      • argument width < others: 向左扩展,增加位宽至others;(arguments 值靠在右侧)
      • argument width > others: 显示完整数据位宽(> others);
      • decimal & string 向左扩展时,补空格 ’ '(space),其他格式,补充 ‘0’.

数字尺寸 >> 输出示例:

2.4 ‘x’ & ‘z’ 态数据显示

  • 十进制 显示规则 (decimal specification)

    • 全部 bits 为 ‘x’ 态 : 单个小写 ‘x’ (single lowercase x);
    • 全部 bits 为 ‘z’ 态:单个小写 ‘z’ (single lowercase z);
    • 部分 bits 为 ‘x’ 态:单个大写 ‘X’ (single uppercase X);
    • 部分 bits 为 ‘z’ 态:单个大写 ‘Z’ (single uppercase Z);
    • 部分 bits 为 ‘x’ 态 & 部分 bits 为 ‘z’ 态:单个大写 ‘X’ (single uppercase X); (x takes precedence over z)
  • 十六进制/八进制 显示规则 (hexadecimal/octal specification)
    • 每 4 bits 为一组,映射 hex 的一位;每 3 bits 为一组,映射 octal 的一位; (single digit)
    • 某组内全部 bits 为 ‘x’ 态 : 单个小写 ‘x’ (single lowercase x);
    • 某组内全部 bits 为 ‘z’ 态:单个小写 ‘z’ (single lowercase z);
    • 某组内部分 bits 为 ‘x’ 态:单个大写 ‘X’ (single uppercase X);
    • 某组内部分 bits 为 ‘z’ 态:单个大写 ‘Z’ (single uppercase Z);
    • 某组内部分 bits 为 ‘x’ 态 & 部分 bits 为 ‘z’ 态:单个大写 ‘X’ (single uppercase X); (x takes precedence over z)
  • 二进制 显示规则 (binary specification)
    • each bit 分别显示为 ‘0’ ‘1’ ‘x’ ‘z’;

‘x’ & ‘z’ 态 >> 输出示例:

2.5 强度显示格式

  • %v or %V 格式定义用于显示 标量线网型数据 的强度。
  • 标量线网型数据显示为三个字符(3-character),前两个表示强度(strength character),第三个代表参数当前的逻辑值(current logic character);
  • 逻辑字符和强度字符的可选范围如表2.5.1 和表2.5.2所示:

Table 2.5.1 Logic value of scalar nets

Arguments Description
0 value 0 -> 逻辑0
1 value 1 -> 逻辑1
X unknown value -> 不定值 ‘x’
Z high-impedance -> 高阻 ‘z’
L 0 or high-impedance -> 0 或 ‘z’
H 1 or high-impedance -> 1 或 ‘z’

Table 2.5.2 Strength of scalar nets

Mnemonics Strength name Strength levels
Su Supply drive 7
St Strong drive 6
Pu Pull drive 5
La Large capacitor 4
We weak drive 3
Me Medium capacitor 2
Sm Small capacitor 1
Hi High-impedance 0

表2.5.2中定义了 4 种驱动强度和 3 种电荷存储强度:驱动强度与 gate output 和 continuous assignment有关;电荷存储强度用于 trireg 类型 net. (see clause 28 gate-level and switch-level modeling)

那么逻辑字符和强度字符如何配合使用呢?

  • 对逻辑 ‘0’ 和 ‘1’ :

    • 信号强度为定值时,使用助记符(mnemonic)表示强度字符;
    • 信号强度为区间时,使用两位10进制数字表示强度字符范围(strength level中的等级,0~7);
  • 对不定值’x’ :

    • 信号强度和逻辑’0’ & '1’相同时,使用助记符(mnemonic)表示强度字符;
    • 信号强度和逻辑’0’ & '1’相同时,使用两位10进制数字分别表示逻辑 ‘0’ 和 ‘1’ 的强度(strength level中的等级);
  • 对于高阻态’z’

    • 只能采用 0 等级的Hi,表示高阻 ‘z’ 态的信号强度;
  • 对于 L 和 H:

    • 只能使用助记符(mnemonic)表示信号强度;

    信号强度 >> 输出示例:

2.6 层次名格式 (Hierarchical name)

  • %m or %M 不接受参数输入。 相反,它使设计元素,子例程,命名块或标记语句的层次结构名称,该语句调用包含格式说明符的系统任务。 当某模块的许多实例调用系统任务时,%m可以指示具体哪个实例调用次任务。

2.7 Assignment pattern format

  • %p or %P 格式说明符可用于打印聚合表达式,例如解压缩结构,数组和联合(unpacked structure,array,unions).
  • 对于解压缩的数据结构,遍历搜索该结构并打印找到的单值数据类型(single data type),单值类型数据的输出需要遵循以下要求:
    • 枚举类型:显示枚举类型的name (其值在enum类型的有效范围内),否则显示value;
    • 字符串:显示为双引号内的字符串形式(quoted string);
    • 各种句柄:显示默认格式名字,如果为空句柄显示 null;
    • 其他格式:按照未定义的默认格式显示。
  • %0p 格式说明符使得unpacked structure,array,unions可以以更短的形式显示打印;
  • %p 和 %0p 也可以用于打印单值表达式,此时显示结果和上述的几种显示格式相同。

Assignment pattern format >> 输出格式:

2.8 字符串格式

  • %s or %S 格式说明符用于将ASCII代码以字符样式打印。
  • 对于出现在字符串中的每个%s,相应的参数应遵循参数列表中的字符串定义。
  • 相关参数被映射为一个8位十六进制ASCII码序列,每8位代表一个字符。
  • 如果参数是变量,则其值是右对齐的,以便该值的最右边的位是字符串中最后一个字符的LSB。
  • 字符串末尾不需要终止字符或值,并且永远不会打印前导零(leading zeros)。
  • 打印字符串时,一般使用%s即可满足要求,可以打印出全部字符。

>> IEEE Standard for SystemVerilog - Unified Hardware Design, Specification and Verification Language, 1800TM-2017
>> clause 21 Input/output system tasks and system functions

转载请注明出处!

System_Verilog打印格式相关推荐

  1. 【转载】System_Verilog打印格式

    system_verilog display format 1. 简介 $display 和 $write的区别: $display系的系统函数:会在输出的末尾自动添加换行符(newline char ...

  2. Smartforms 设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮-->选 ...

  3. smartforms设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮-->选 ...

  4. Smartforms 在sap系统设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮-->选 ...

  5. 打印格式设置(SPAD)

    TCODE: SPAD. A4的大小建议参考系统的DINA4(210MM/297MM) REPORT zbesg line-size 124 no standard page heading line ...

  6. java的printf语法_java printf的一些常用的打印格式总结

    package baseDemo1; /** * printf的一些常用的打印格式总结 * @author chen 2014年11月27日16:26:07 * */ public class Pri ...

  7. 常用的NSLOG日志打印格式

    2019独角兽企业重金招聘Python工程师标准>>> 常用的NSLOG日志打印格式 以下是常用的LOG打印,如果有特殊,请@我 ,这边会不定期更新. %@        对象 %d ...

  8. EBMIDE——打印格式管理

    Fixcel简介 Fixcel电子表格主要解决信息系统的表单.打印.报表等需求,主要包括:表单的设计.表单的填写:打印格式的设计与表单打印:报表的设计与展现. 填报与打印 一个简单的业务操作流程:用户 ...

  9. python 日期格式打印_Python打印格式

    python 日期格式打印 In this lesson, we will study about various ways for Python print format, through whic ...

最新文章

  1. 如何debug函数_如何使用 pdb 来性感 debug 你的 Python 代码?
  2. App主流UI框架结构
  3. Play 2.0框架和XA交易
  4. linux 磁盘科隆,Linux中ln命令用法详解(硬链接)
  5. php 半角,php 中全半角转换
  6. 小程序弹框出现,底部页面也跟随滚动
  7. php 上传文件工具类,PHP 图片上传工具类(支持多文件上传)
  8. ionic打包中的那些坑
  9. 分析如何查找Linux死机的原因
  10. 一文彻底弄懂 for forEach for-in for-of 的区别
  11. qq视频转码失败怎么办_qq影音为什么不能转码 进行视频转码方法
  12. ACM程序设计大赛题目分类
  13. c语言爱心函数3D,C语言控制台打印3D爱心图案
  14. FreeSWITCH折腾笔记9——使用FS做一个i-SBC
  15. 在坦桑尼亚如何打国际长途,打给你中国的朋友?
  16. zabbix通过yum安装,启动报错zabbix-agent.service never wrote its PID file. Failing.
  17. 漫画人工智能:人工智能简史
  18. 金属学复习【3】 --- 二元合金相图和合金的凝固
  19. C语言拼图游戏——Windows下基于EasyX且支持鼠标与键盘操作
  20. php对接AliGenie天猫精灵服务器控制智能硬件esp8266② 全面认识第三方授权机制 oauth2.0 协议,如何在 php 上搭建 oauth2.0服务端!(附带demo)

热门文章

  1. allure下载及使用
  2. vue高德单条(可批量)路线规划+单条(可批量)路线带途径节点marker+单条(可批量)路线分段渲染各颜色
  3. GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG解释 + 数据解析
  4. 8位并行左移串行转换电路_三菱plc试题及答案
  5. 直播平台建设教程之聊天服务器该如何搭建,开发直播app软件必看
  6. css中如何写标题,css样式标题类
  7. P4363 [九省联考2018]一双木棋
  8. 第四周项目1姓名读音首字母
  9. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(二)——ImGui
  10. JMS(Java Messaging Service)基础知识