概述
简述
在verilog设计验证中,我们经常需要从文件中读取验证数据,有些数据是文本文件,有些数据是二进制文件。但是verilog读写文件的操作和软件语言还是有不同的,下面就具体总结一下verilog中的读写文件的操作。
读写二进制文件
不管是读写二进制文件还是读写文件文件,都要把读取到的数据放入到硬件设计中某个寄存器或者存储器中,这是verilog和软件语言读写文件最大的不同。
其实verilog读写文件的过程和普通的软件语言大同小异,都分为下面几步:
打开文件
重定位文件(可选)
文件读写操作
关闭文件
下面是一个具体的读文件的实例:
initial
begin
always @( negedge rstn_i or posedge clk_i )
begin
if ( rstn_i == 1’b0 )
begin
data_i <= {DW{1’b0}};
file_id =
fopen(“../2−test/2−data/paramdatabend.bin”,“r”);readnum=0;exchangenum=0;endelseif(eni==1′b1)beginif(readnum!=PACKAGENUM)beginreadnum<=readnum+1;endelsebeginreadnum<=1;exchangenum<=exchangenum+1;endr=
fread( data_i, file_id );
end
if( read_num == PACKAGE_NUM-1 )
begin
//en_i <= 1’b0;
//
fclose(fileid);//fileid=
fopen( “../2-test/2-data/param_data_bend.bin”,”r” );
r =
fseek(fileid,exchangenum∗MATRIXLEN∗FW/8,‘SEEKSET);r=
fread( weight_compare, file_id );
#10;
if( weight_compare == weight )
display(“weightdatacheck