测试台将意外输出写入文件
testbench writing unexpected output to file
我正在为 LFSR 编写测试台,并希望将输出值写入 txt 文件,以便稍后将其用于某些脚本。在我的波形中,结果的十六进制值是正确的,但输出文件只包含 1,而不是实际值。我一直无法确定原因。这是测试平台:
module lfsr13_tb();
reg clk, rst_n, en;
reg[12:0] seed;
wire[12:0] pseudo_random_val;
integer file, i;
lfsr13 iDUT(.clk(clk), .en(en), .rst_n(rst_n), .seed(seed), .pseudo_random_val(pseudo_random_val));
initial begin
seed = 1;
clk = 0;
rst_n = 0; // assert reset
en = 0; // disabled to start
file = $fopen("lfsr_output.txt", "w");
@(negedge clk) rst_n = 1; // deassert reset
@(posedge clk) en = 1; // assert enable to begin lfsr function
for(i=0; i<=8191; i=i+1) begin
$fwrite(file, "%h\n", pseudo_random_val);
end
$fclose(file);
end
always
#5 clk = ~clk;
endmodule
我需要在每个周期将 "pseudo_random_val" 写入输出文件。
这是你的测试平台所做的:在一个时间点(具体来说,clk 的第一个姿势),你将 pseudo_random_val
的当前值写入 8192 次(这将是相同的值)到文件。
这将在模拟期间每个时钟周期将 pseudo_random_val
的值写入文件一次(可能多于或少于 8192 次):
always @(posedge clk) $fwrite(file, "%h\n", pseudo_random_val);
我正在为 LFSR 编写测试台,并希望将输出值写入 txt 文件,以便稍后将其用于某些脚本。在我的波形中,结果的十六进制值是正确的,但输出文件只包含 1,而不是实际值。我一直无法确定原因。这是测试平台:
module lfsr13_tb();
reg clk, rst_n, en;
reg[12:0] seed;
wire[12:0] pseudo_random_val;
integer file, i;
lfsr13 iDUT(.clk(clk), .en(en), .rst_n(rst_n), .seed(seed), .pseudo_random_val(pseudo_random_val));
initial begin
seed = 1;
clk = 0;
rst_n = 0; // assert reset
en = 0; // disabled to start
file = $fopen("lfsr_output.txt", "w");
@(negedge clk) rst_n = 1; // deassert reset
@(posedge clk) en = 1; // assert enable to begin lfsr function
for(i=0; i<=8191; i=i+1) begin
$fwrite(file, "%h\n", pseudo_random_val);
end
$fclose(file);
end
always
#5 clk = ~clk;
endmodule
我需要在每个周期将 "pseudo_random_val" 写入输出文件。
这是你的测试平台所做的:在一个时间点(具体来说,clk 的第一个姿势),你将 pseudo_random_val
的当前值写入 8192 次(这将是相同的值)到文件。
这将在模拟期间每个时钟周期将 pseudo_random_val
的值写入文件一次(可能多于或少于 8192 次):
always @(posedge clk) $fwrite(file, "%h\n", pseudo_random_val);