我的问题类似于以下问题。 Creating a new file, filename contains loop variable, 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
答案 0 :(得分:0)
您可以使用$sformatf
动态编写文件名。
initial begin
file[i] = $fopen($sformatf("serial_pu%0d.out", i), "w");
end
这将创建文件名:
答案 1 :(得分:0)
您可以在Verilog(IEEE Std 1364)中使用$sformat
动态构建文件名字符串:
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