2013-03-30 5 views
0

Мой вопрос похож на следующий вопрос. Creating a new file, filename contains loop variable, pythonVerilog имя файла, использующего переменную цикла

В зависимости значение 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

Смежные вопросы