2013-03-30 44 views
0

我的問題與以下問題類似。 Creating a new file, filename contains loop variable, python使用for循環變量的Verilog文件名稱

根據NUM_PU的價值,我想我的定義文件名輸出作爲 serial_pu0.out serial_pu1.out ..等

下面的代碼不起作用,因爲模擬器把裏面的人物「」作爲字符串。 有什麼建議嗎?

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 
     [email protected](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

沒有測試此我自己,但看起來有可能成爲你的答案在這裏:http://www.fpgarelated.com/usenet/fpga/show/15972-2.php – Tim

回答

0

您可以編寫動態使用$sformatf的文件名。

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

這將創建文件名:

  • serial_pu0.out
  • serial_pu1.out
  • ...
+0

感謝您的答覆。 $ sformatf似乎不適用於Verilog。看起來像它只在System Verilog中支持。 –

+0

的確,它只是在SV標準中,儘管有些模擬器可能支持Verilog。您可能還想嘗試'$ psprintf',它的工作方式與一些模擬器可能支持的方式相同。 – dwikle