我尝试在我的测试平台中的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。 为什么我得到这个结果?感谢。
答案 0 :(得分:1)
%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);