首页 > 解决方案 > 在systemverilog中将变量添加到字符串

问题描述

我需要生成名称中包含变量的文件名。例如。文件名需要是wave_mon[0]_ch0_dat.out这个0字符串中的 将根据 for 循环而变化。我的代码如下:

for (i=0; i<16; i=i+1) begin
    fname = {"wave_mon[",i,"]_ch",i,"_dat.out"};
    $display("Filename created is %s \n", fname);
    #1us;
end 

此代码的输出始终如下所示。我错过了什么,它无法i在字符串名称中打印值?

Filename created is wave_mon[]_channel__data.out                                     

Filename created is wave_mon[]_channel__data.out 

Filename created is wave_mon[]_channel__data.out 

标签: string

解决方案


方法一:使用$sformat

$sformat(fname,"wave_mon[%0d]_ch%0d_dat.out",i,i);
$display("Filename created is %s \n",fname);

方法二:使用 $sformatf

fname={$sformatf("wave_mon[%0d]_ch%0d_dat.out",i,i)};
$display("Filename created is %s \n",fname);

我创建了代码片段供您尝试:https ://www.edaplayground.com/x/5uQD

如果您愿意,还有更多关于 SV 中的字符串操作的信息:https ://www.chipverify.com/systemverilog/systemverilog-strings


推荐阅读