$display的定义与应用

$display 是 SystemVerilog 中的一个系统任务,类似于 C 语言中的 printf 函数。

$display("Current value of signal: %0d", signal);

在这里,%0d 是格式符,表示以十进制形式输出 signal 的值。

$sformatf的定义与应用

$sformatf 是 SystemVerilog 中用于格式化字符串的系统函数,类似于 C 语言的 sprintf。
与$display 不同,$sformatf 不会自动输出结果,而是返回一个字符串,便于进一步处理。

string formatted_str;
$sformatf(formatted_str, "The value of signal is: %0d", signal);
$display(formatted_str);

这里,$sformatf 将格式化后的字符串存储在 formatted_str 中,并通过 $display 输出。

virtual function string print_transaction();
  string str;
  str = {str, "\n=================================================" };
  str = $sformatf("%s\n%s",str,"# VARIABLES OF TRANSACTION");
  str = $sformatf("%s\n%s",str,print_uart());
  str = $sformatf("%s\n%s",str,print_hardware_reset());
  str = {str, "\n=================================================" };
  str = {str, "\n" };
  return str;
endfunction:print_transaction

`uvm_info(get_full_name(),$sformatf("\n\nxx_monitor got No.%0d transaction\n%s",num,ufcs_tr.print_transaction_for_monitor()),UVM_LOW)

格式符的定义与应用

格式符是在 SystemVerilog 中用于控制数据输出格式的特殊字符。格式符用于 $display$sformatf 等系统任务和函数中,帮助定义变量或表达式的显示方式。

格式符 数据类型 描述
%d 整数 以十进制格式输出整数 (int, integer)
%0d 整数 自动根据数值宽度调整,不留多余空格
%4d 整数 宽度为4,右对齐,数据没填满宽度前面不会补0
%04d 整数 宽度为4,右对齐,数据没填满宽度前面会补0
%-4d 整数 宽度为4,左对齐
%h 整数 以十六进制输出(不带 0x)
%x 整数 以十六进制输出(带 x 标志)
%b 整数 以二进制输出
%o 整数 以八进制输出
%f 浮点数 默认保留 6 位小数, real表示实数 (real number),其本质上是一个双精度浮点数。
%2f 浮点数 没有预期实际效果
%0.2f 浮点数 指定保留 2 位小数(推荐)
%e 浮点数 科学计数法表示
%g 浮点数 根据数值自动选择最优格式(科学计数法或普通表示)
%s 字符串 字符串格式
%p 任意类型 任意数据类型(结构体、数组)的打印(自动推断数据类型)
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐