我是靠谱客的博主 坚定裙子,最近开发中收集的这篇文章主要介绍SystemVerilog中指定打印格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

本文主要总结一下SystemVerilog中的占位符,通过合理的使用占位符,在log中按自己指定的格式打印信息,方便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或%UUnformatted 2 value data (binary values)
13%z或%ZUnformatted 4 value data
14%v或%VDisplay net signal strength
15%p或%PDisplay as an assignment pattern
16%l或%LDisplay library binding information,显示库关联关系
17%m或%MDisplay hierarchical name,显示当前模块的层次名

说明

%m%l分别可以显示打印语句所在当前模块的模块名,和该模块所在的仿真所构建的运行库路径信息,对于调试跟踪来说非常有用,其效果参见以下代码例。
%t用于打印时间信息,通常跟$time配合使用。
%u%z常用于$fwrite()函数,用于向文件写入数据;其中%u不区分xz数据,并将其映射为’0’;而%z严格区分xz数据,将其分别映射为’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

最后

以上就是坚定裙子为你收集整理的SystemVerilog中指定打印格式的全部内容,希望文章能够帮你解决SystemVerilog中指定打印格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部