File io testbench将意外输出写入文件

File io testbench将意外输出写入文件,file-io,verilog,File Io,Verilog,我正在为LFSR编写一个测试台,并希望将输出的值写入一个txt文件,以便稍后在一些脚本中使用它。在我的波形中,结果的十六进制值是正确的,但输出文件只包含1s,而不是实际值。我一直无法确定原因。这是测试台: 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

我正在为LFSR编写一个测试台,并希望将输出的值写入一个txt文件,以便稍后在一些脚本中使用它。在我的波形中,结果的十六进制值是正确的,但输出文件只包含1s,而不是实际值。我一直无法确定原因。这是测试台:

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 
模块lfsr13_tb();
注册时钟,rst_n,en;
reg[12:0]种子;
导线[12:0]伪随机值;
整数文件,i;
lfsr13 iDUT(.clk(clk),.en(en),.rst_n(rst_n),.seed(seed),.pseudo_random_val(pseudo_random_val));
初始开始
种子=1;
clk=0;
rst_n=0;//断言重置
en=0;//无法启动
file=$fopen(“lfsr_output.txt”,“w”);
@(负边缘时钟)rst_n=1;//解除资产重置
@(posedge clk)en=1;//断言启用以开始lfsr函数

对于(i=0;i您的测试台就是这样做的:在某个时间点(特别是clk的第一个posedge),您将当前值
pseudo_random_val
8192次(将是相同的值)写入文件

这将在模拟期间(可能大于或小于8192次),每个时钟周期向文件写入一次伪随机值
pseudo_random_val

always @(posedge clk) $fwrite(file, "%h\n", pseudo_random_val);