SystemVerilog 中的 $sformatf 不在标准输出上打印超链接

$sformatf in SystemVerilog is not printing Hyperlinks on stdout

此 SystemVerilog 代码的输出应在 stdout 上打印未出现的超链接,但它正在捕获文件中的那些超链接。

module top;
string res="some string";
string id="ID1";
string name1="Ram";
string name2="Singh";
string filename="test.sv";
int line=3;
string verbocity="High";
int fd1;

initial begin
res=$sformatf("<message ctxt=\"%s\" kind=\"%s\" id=\"%s\" location=\"%s:%0d\" verbosity=\"%s\" time=\"%0t\">%s</message>\n",name1,name2,id,filename,line,verbocity,$realtime,res);
$display(res);
fd1 = $fopen("data_txt", "w");
$fwrite(fd1, "%s\n", res);
$fclose(fd1);
end
endmodule

您的模拟器应该会在 stdout 上显示格式化的字符串。既然没有,说明你用的模拟器有bug。

例如,在 EDA playground 上使用 Synopsys,我在 stdout 上看到以下内容:

<message ctxt="Ram" kind="Singh" id="ID1" location="test.sv:3" verbosity="High" time="0">some string</message>

然而,使用 Cadence,我看到:

some string

这是 res 的原始值,没有格式化。这是 Cadence 模拟器中的错误。其他三个模拟器显示格式(Synopsys、Mentor、Aldec)。