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