SV中系统常见的I/O方法以及bit vector 操作方法

在check中,如果需要读取cmodel的数据,然后进行check,经常会使用下面的系统方法,

$fopen(file_name,operation_type):    打开文件句柄

$ftell(file_handle) :获取当前文件的位置信息(这个位置信息指得是操作到文件那个字节了)

$fseek(file_handle,offset,base):重定向文件操作的位置,base+offset等于文件中具体字节位置

$fscanf(file_handle," string format",args):读取file,按照string format的形式读,并将值赋值给args

module  file_function
    
         integer iFile;
         integer i;
         integer fp_offset;
         string data_string;
         bit[63:0] data1;
         bit[63:0] data2;

     initial begin
         iFile=$fopen("data.txt","r");
         fp_offset=$ftell(iFile);
         i=$fscanf(iFile,"%s %h %h",data_string,data1,data2);
         fp_offset=$ftell(iFile);
         i=$fseek(iFile,fp_offset,0);
         i=$fscanf(iFile,"%s %h %h",data_string,data1,data2);
     end
endmodule

输出:根据我自己的data.txt输出的结果
fp_offset is 0
fp_offset is 20

bit  vector   function

$countbits(expression,control_bit):  control_bit可以是任意4值逻辑(0,1,Z,X) ,单bit值,统计control_bit的个数

$countones(expression):统计1的个数

$onehot(expression):检测expression中1的个数是否是1

$onehot0(expression):检测expression中1的个数最大是1

$isunknown(expression):检测expression是否存在X/Z。


版权声明:本文为liuwei848原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。