【SV】SystemVerilog系统函数文件读写
一、简介
在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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341