1

我的问题类似于以下问题。 创建一个新文件,文件名包含循环变量,python

根据 的值NUM_PU,我想将输出文件名定义为

serial_pu0.out
serial_pu1.out
... etc

以下代码不起作用,因为模拟器将引号 ( "") 中的字符视为字符串。有什么建议么?

integer file [0:NUM_PU-1];
generate
    for(i=0;i<NUM_PU;i=i+1) begin : serial_data_gen
        initial begin
            file[i] = $fopen ("serial_pu[i].out", "w");
        end
        always@(posedge i_Clk) begin
            if(serial_wr[i]) begin
                $fwrite (file[i], "%c", serial_data_2d[i]);
                $write("%c",serial_data_2d[i]);
            end
        end
    end
endgenerate
4

2 回答 2

0

您可以使用动态组合文件名$sformatf

initial begin
    file[i] = $fopen($sformatf("serial_pu%0d.out", i), "w");
end

这将创建文件名:

  • serial_pu0.out
  • serial_pu1.out
  • ...
于 2013-03-30T01:39:58.493 回答
0

$sformat您可以使用Verilog (IEEE Std 1364)动态构造文件名字符串:

module tb;

parameter NUM_PU=2;

integer file [0:NUM_PU-1];
genvar i;
reg [999:0] filename;

generate
    for(i=0;i<NUM_PU;i=i+1) begin : serial_data_gen
        initial begin
            $sformat(filename, "serial_pu%0d.out", i);
            file[i] = $fopen(filename, "w");
        end
    end
endgenerate

endmodule
于 2020-06-17T18:20:56.053 回答