ファイルから読み込んで評価したすべての値をテキストファイルに出力するテストベンチを作成しようとしています。しかし、32行ではなく、出力ファイルで1行しか得られません。誰かが光を当てることはできますか?Verilogの出力ファイルに32行すべての出力を書き込むことができません
`timescale 100ns/1ps
module multtest;
reg clk,reset;
reg signed [7:0] a, b;
reg signed [15:0] result,res;
integer fread, fw;
reg [7:0] in_a, in_b;
reg [47:0] in_r;
wire signed[15:0] result1;
mult mult_0 (.clk(clk) , .reset(reset), .A(a), .B(b), .result(result1));
initial
begin
fread = $fopen ("goldenresult","r");
fw = $fopen ("goldresult.txt","w");
clk = 1'b0;
reset = 1'b1;
#200;
reset = 1'b0;
#200;
reset = 1'b1;
end
always
#2.5 clk = ~clk;
//conditon for reset
always @ (reset == 1'b1)
begin
a <= 0;
b <= 0;
result <= 0;
end
always @(posedge clk)
begin
//Verifying the result when testmode = 0 and reset = 0
if (reset == 1'b0)
begin
while ($fscanf(fread, "%s = %b, %s = %b, %s = %b", in_a, a, in_b, b, in_r, result) != 6) begin end
$display ("a = %b, b = %b, result = %b", a, b, result);
end
end
/*always @(posedge clk)
@(negedge reset)
if (reset == 1'b0)
begin
while ($fscanf(fread, "%s = %b, %s = %b, %s = %b", in_a, a, in_b, b, in_r, result) != 6) begin end
$fwrite(fw, "%s = %b, %s = %b, %s = %b", in_a, a, in_b, b, in_r, res);
end*/
endmodule
私は、書かなければならなかったコードの部分をコメントアウトしました。私は間違ったことをしていますか?出力は次の形式になります。そのすべての32行を書くことになったが、それは正しくModelSimの中に出力を表示しますが、代わりにのみ1を書き込み
= 10111010、B = 00111011、結果= 0000000000000000
。
fa lienは動作しておらず、fcloseも動作していないようです。私はモデルファイルを閉じる場合に限り、出力を.txtファイルに書き出すことができます。また、出力は行ごとに表示されず、同じ行に表示されます。どのように私はそれを別の行に表示させるのですか? – JUBER
私はそれをシミュレートできるすべてのモジュールの完全なコードを追加してください – Roman