测试台将意外输出写入文件

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);