我在Verilog中有一个ALU,我想在verilog中进行简单的验证测试。
我想写一个文件,即ALU的输出。我使用以下代码:
$fwrite(File,"La salida es: %d",uut.ALUOutput);
我的输出向量的大小为32位,带有符号。操作正确但当ALUOutput为负数时,在文件中,输出将保存为整数unsigned。
例如,在负数的文件中,我获得了以下不正确的表示:
4294967264
但我想获得以下结果:
-32
有人能说我怎样才能在文件中写下负数?
答案 0 :(得分:3)
使用$signed
(IEEE Std 1800-2012,第11.7节和第34条;签名表达式"):
module tb;
integer f1;
reg signed [31:0] ALUOutput;
initial begin
f1 = $fopen("foo.txt", "w");
ALUOutput = -32;
$fwrite(f1, "ALUOutput: %d", $signed(ALUOutput));
$fdisplay(f1);
ALUOutput = 32;
$fwrite(f1, "ALUOutput: %d", $signed(ALUOutput));
$fdisplay(f1);
$fclose(f1);
end
endmodule
/*
foo.txt:
ALUOutput: -32
ALUOutput: 32
*/