一、简介
在systemverilog验证环境中,可能需要使用读写文本的操作,本文主要介绍sytemverilog中常用的文件处理系统函数。
二、常用系统函数
1.打开关闭文件
打开文件:fd = $fopen(file_name,type),文件打开成功fd返回1,打开失败返回0。file_name是一个带hierarchy的字符串。type有如下类型:
“r” or “rb”,只读打开
“w” or “wb”,打开从0开始或创建只写
“a” or “ab”,打开文件追加从文件末尾(EOF)写或创建文件写
“r+” or “rb+”,打开文件,可读可写
“w+” or "wb+",打开或创建文件写
关闭文件:$fclose(fd),一个良好的习惯,打开文件处理完后关闭文件。
检测EOF:$feof(fd)
2.写文件
向文件中格式化写一行:$fdisplay(fd,"地址:%h,数据:%b ",addr,data)
向文件中格式化写(不换行):$fwrite(fd,"地址:%h,数据:%b ",addr,data)
3.读文件
一次读一行:fd_line = $fgets(str,fd),按行读取字符串存取到str中
一次格式化读一行:$fscanf(fd,format,args),从文件中按给定格式读取对应内容到对应变量中
$sscanf(str,format,args),从字符串str中给定格式读取对应内容到对应变量中
其中format有如下选项:
%b,匹配一个二进制数,0,1,X,x,Z,z,_
%o,匹配一个八进制
%d,匹配一个十进制
%h or %x,匹配一个十六进制
%s,匹配一个字符串
例子:
integer fd;
integer index;
string str_tmp;
while(!$feof(fd)) begin
fd = $fgets(str_line,fd_file);//从文件中按行读取内容到str_line
$sscanf(str_line,"%d %s",index,str_tmp) //格式化读出到指定变量中
end
详细解释可以翻看systemverilog手册。
来源地址:https://blog.csdn.net/xuhe0206/article/details/125919675