파일에서 읽고 평가 한 모든 값을 텍스트 파일로 출력하는 테스트 벤치를 작성하려고합니다. 하지만 출력 파일에서 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을 기록
A = 10111010, B = 00,111,011, 결과 = 0000000000000000
.
fa lien이 작동하지 않고 fclose가 작동하지 않는 것 같습니다. 내가 모델을 닫을 경우에만 출력을 .txt 파일에 기록 할 수 있습니다. 또한 출력은 한 줄씩 표시되지 않고 같은 줄에 표시됩니다. 어떻게 다른 줄에 나타나게합니까? – JUBER
모든 모듈의 전체 코드를 추가하십시오. 시뮬레이션 할 수 있습니다. – Roman