2

Verilatorを使用して、SystemVerilog で記述されたアルゴリズムをstdin、 およびを介して渡される I/O ストリームを操作する実行可能ユーティリティに組み込みますstdout。残念ながら、SystemVerilog$display()関数を使用すると、出力はstdout. 他の目的のために汚染されないstderrようにしてほしい。stdout

どうすればこれを実現できますか?

4

1 に答える 1

4

$fdisplay()このように使用できるの存在を指摘してくれた @toolic に感謝します...

$fdisplay(STDERR,"hello world"); // also supports formatted arguments

IEEE Std 1800-2012 は、STDERR事前に公開する必要があると述べていますが、Verilator には認識されていないようです。これに対する回避策は次のとおりです。

integer STDERR = 32'h8000_0002;

または、次のように使用するログ ファイル ハンドルを作成することもできます$fdisplay()...

integer logfile;
initial begin
   $system("echo 'initial at ['$(date)']'>>temp.log");
   logfile = $fopen("temp.log","a"); // or open with "w" to start fresh
end

同様に機能するが、選択したファイル記述子を使用するカスタムラッパーを作成できればいいかもしれません$display(毎回指定する必要はありません)。残念ながら、それは言語自体では可能ではないようです-- しかし、おそらくDPIそれを行うことができます。

于 2015-10-16T02:56:54.970 に答える