【SystemVerilog】$fscanf

$fscanf

$fscanf按照格式将文件中的数据读到变量中, 格式可以参考$display 中的格式化内容。如果遇到空格或者换行,表示一次读取结束。 读取时,如果发生错误 则返回值为0,正常读取数据时为1, 读取文件结束时为-1。

integer <integer>;
<integer> = $fscanf(<file_desc>, "<format>", <destination_regs>);

integer:定义一个整型数值,正常读取为1,出错时为0,文件读取结束为 -1。

file_desc:为打开的文件句柄

format: 格式化输出,具体可以参照$display 中的格式化参数。表示以什么样的格式读取文件

destination_regs: 读取文件数据后, 保存在这个目标寄存器中。

示例:

integer fd;
integer char_num;
reg [8*10-1:0]   fbuf = 0;
initial begin
    fd = $fopen(FILE_TXT, "r");
    if(fd == 0)
    begin
        $display("$open file failed") ;
        $stop;
    end
    char_num = $fscanf(fd,"%s",fbuf);
    while ($signed(char_num) != -1)
    begin
        $display("%s", fbuf) ;
        #10;
        char_num = $fscanf(fd,"%s",fbuf);
    end
    #10;
    $fclose(fd) ;
end

另外的例子,个人觉得很实用

在systemverilog中读取如下文件

file.txt 内容
addr  12345678
data  aa55aa55
attri  cececece

并把这些键值对存储在一个hash数组h_array[string]中.

在读入后,再遍历一次数组,通过打印检测是否读取成功。

相关代码如下:

program file_read;
integer file;
string  variable;
reg [31:0] value;
reg [31:0] h_array [string] ;
initial
begin:file_block
  file=$fopen("file.txt","r");
  if (file == 0)
    disable file_block;
  while(!$feof(file))
    begin
      $fscanf(file,"%s %h\n",variable,value);
      h_array[variable] = value;
    end
  $fclose(file);
//check read result.
foreach (h_array[i])
  begin
    $display("hash index %0s value %0h",i, h_array[i]);
  end
end
endprogram

用vcs编译后,运行,输出如下结果

hash index addr value 12345678
hash index attri value cececece
hash index data value aa55aa55

————————————————

原文链接:verilog从txt中读取_systemverilog读取文本文件-CSDN博客

原文链接:【精选】systemverilog中输入输出系统任务和函数(二)——文件输入输出相关的任务和函数_systemverilog打印函数_hh199203的博客-CSDN博客

systemverilog 字符串类型 - 爱码网

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值