1

テストベンチで SystemVerilog にバイナリ ファイルを書き込もうとしました。

int file   = $fopen(path,"w");
if (!file) begin
    $error("File could not be open: ", path);
    return;
end
$fwrite(file, "%u", 32'h4D424D42);
$fclose(file);

結果を取得: 02 0c 02 0c

QuestaSum 10.2c を使用しています。なぜこの結果が得られるのですか? ありがとう。

4

1 に答える 1

4

%u は、フォーマットされていない未加工のバイナリ データをファイルに書き込みます。読み取り可能な形式であるとは思わないでください。ファイルをバイナリ形式「rb」または「wb」で開いていることを確認してください....バイナリデータを読み戻してみると、書き込まれた値が表示されます。

4 つの状態値を保存する場合は、%z を使用できます。

int rd;
int file   = $fopen(path,"wb"); // open in binary mode
if (!file) begin
    $error("File could not be open: ", path);
    return;
end
$fwrite(file, "%u", 32'h4D424D42);
$fclose(file);
 // read back binary data from file 
file = $fopen (path,"rb");  // open in binary mode
if (!file) begin
    $error("File could not be open: ", path);
    return;
end
$fscanf(file,"%u",rd);
$fclose(file);
$display("%h",rd);
于 2016-07-21T13:39:06.917 に答える