$display、$sformatf、格式符的定义与应用
display 是 SystemVerilog 中的一个系统任务,类似于 C 语言中的 printf 函数。在这里,%0d是格式符,表示以十进制形式输出signal的值。$sformatf 是 SystemVerilog 中用于格式化字符串的系统函数,类似于 C 语言的 sprintf。与$display 不同,$sformatf 不会自动输出结果,而是返回一个字符串,便于进一步处理。这里,$sf
·
$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 | 任意类型 | 任意数据类型(结构体、数组)的打印(自动推断数据类型) |
更多推荐



所有评论(0)