zoukankan      html  css  js  c++  java
  • 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文件夹底下,网上有帖子说不能指定或者不能用相对路径指定输出文件的存储路径。

  • 相关阅读:
    ios手势复习值之换图片-转场动画(纯代码)
    ios地图小例子和手势的使用 供大家参考一下呦
    basicAnimation移动图形
    一个layer可以跟着画完的线移动ios程序 好玩啊。
    kvo深入浅出举例
    kvc简单实现
    block 浅析
    从相册中取图片
    绘图quartz之渐变
    绘图quartz之加水印
  • 原文地址:https://www.cnblogs.com/lifei-chan/p/8949496.html
Copyright © 2011-2022 走看看