Testbench学习——$fopen/$display/$fclose

昨天在用Vivado写Testbench顶层时,为了以后便于数据的存储导出分析,需要用的文件数据记录的功能,于是,下面谈谈$fopen/$display/$fclose这三者的用法。

$fopen——打开文件

用法1:$fopen("<文件名>");

用法2:<文件句柄> = $fopen("<文件名>");

$fdisplay——写文件

用法:$fdisplay(<文件描述符>,p1,p2,...pn);

$fclose——关闭文件

用法:$fclose(<文件描述符>);

 

举例

integer handle;//定义后面要用到的变量
//...
//...
 
handle = $fopen("data.txt");//打开文件
//...
//...
always #10 clk = ~clk;//定义时钟
always #20
begin
    $fdisplay(handle,"%d",rand_num);//写数据
    while(!rst_n) $fclose(handle);//关文件
end

 

实例:

//test $fopen
integer handle;
initial begin
handle = $fopen("../data.txt");
end

reg [7:0]test_cnt;
always @ (posedge sys_clk)
begin
    if (sys_rst)
        test_cnt <= 8'h0;
    else if (test_cnt == 8'h1E)
        test_cnt <= test_cnt;
    else if (fix_timer_o[1])
        test_cnt <= test_cnt + 1'b1;
    else
        test_cnt <= test_cnt;
end

always @ (posedge fix_timer_o[1])
    if (test_cnt == 8'h1E)
        $fclose(handle);
    else
        $fdisplay(handle,"%d",test_cnt);

    // else if (fix_timer_o[1])
        // $fdisplay(handle,"%d",test_cnt);
    // else
    // ;    
endmodule

 

备注:

1、在Vivado中使用$fopen时,需要在initial中调用,否则会出现Critical Warnning(可能在Modelsim中没有此问题);

2、只有执行了$fclose语句后,文件才会被写入并保存;

3、输出的文件是在工程的一个XX.sim文件夹底下,网上有帖子说不能指定或者不能用相对路径指定输出文件的存储路径。

转载于:https://www.cnblogs.com/lifei-chan/p/8949496.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值