zoukankan      html  css  js  c++  java
  • 用Modelsim产生/打开VCD文件的方法

    很多时候,需要把VCS仿真的波形导入到Modelsim中进行观察,这个时候无法直接查看,因为Modelsim只支持.wlf波形文件,所以需要做格式转换。

    VCS仿真后的波形可保存为VCDvalue change dump:值变转储)文件,是ASCII格式,该文件包含设计中指定变量的取值变化信息。包括文件头信息、节点变化、取值变化。那么如何用Modelsim来打开该文件呢?

    Modelsim打开VCD文件

    1)在Modelsim中的控制台输入:vcd2wlf file1.vcd file2.wlf

    其中,file1是要转换的.vcd文件名,file2是转换后的文件名。转换完成后该文件位于当前Modelsim工程目录下。

    2)在ModelsimFile->Open->file2.wlf->object标签中选取需要观察的信号添加到波形窗即可,后面同一般的Modelsim工程仿真。

    ①打开modelsim,点击“File”,点击“Change Directory”。

       

    ②选择vcd文件所在的目录。

    ③输入命令:vcd2wlf test.vcd test.wlf,回车。(ps:这里我的vcd文件是test.vcd)

       

    ④生成wlf文件。

      

    ⑤把它拖到modelsim中的console窗口。

    ⑥右键“Add Wave”,查看波形。

    Modelsim产生VCD文件

    方法一:

    有时候为了便于格式转换,比如把Modelsim仿真的波形在其他仿真软件上显示(如:VCS)就需要把Modelsim的波形仿真文件保存为VCD格式。具体如下:

    1)将Modelsim工程编译,排除语法错误,然后在菜单栏Simulation标签中点击Start simulation加载设计;

    2)在Modelsim控制台输入命令:vcd file filename.vcd 创建.vcd文件,其中filename是要生成的文件的文件名;

    3)继续输入命令:vcd add path/*,需要注意的是path是你生成的.vcd文件保存的路径,若就是当前工程,则直接是vcd add /*即可;

    4)在Modelsim中运行仿真,产生VCD波形文件;

    5)当波形文件产生完成后,需要退出仿真。命令:quit -sim

    通过上述方法可以完成ModelsimVCD文件的产生和转换。

       

    方法二:

    在testbench加入

    以下代码

    initial begin
    
    $dumpvars();
    
    $dumpfile("test.vcd");
    
    End

    运行仿真后,工程目录下会自动保存相应的vcd文件

    VCD文件还可以用系统命令产生,具体来说,常用的有下面的命令:
      

       $dumpfile();                     打开一个VCD数据库用于记录
       $dumpvars();                     选择要记录的信号
       $dumpflush;                      将VCD数据保存到磁盘
       $dumpoff;                        停止记录
       $dumpon;                         重新开始记录
       $dumplimit();                    限制VCD文件的大小(以字节为单位)
       $dumpall;                        记录所有指定的信号值

       比如,我在Verilog代码中可以加入
        

    initial begin
        $dumpfile ("cla_4.vcd");
        $dumpvars (0,U_1.a,U_1.b,U_1.cin);
        $dumpvars (0,U_1.cout);
        $dumpvars (0,U_1.sum);
        #200 $dumpoff;
        #100 $dumpon;
        end

        U_1是测试模块名,a b cin cout sum都是信号名

    关于$dumpvars的用法如下:

    $dumpvars; // Dump所有层次的信号
    $dumpvars (1, top); // Dump top模块中的所有信号
    $dumpvars (2, top.u1); // Dump实例top. u1及其下一层的信号
    $dumpvars (0, top.u2, top.u1.u13.q); // Dump top.u2及其以下所有信号,以及信号top.u1.u13.q。
    $dumpvars (3, top.u2, top.u1); // Dump top. u1和top. u2及其下两层中的所有信号。
  • 相关阅读:
    T-SQL:Varchar和Nvarchar区别(八)
    UI5-文档-4.1-Hello World!
    UI5-文档-4-Walkthrough
    UI5-文档-3-Hello World!
    UI5-文档-2.5-开发混合Web容器
    UI5-文档-2.4-Node.js-Based开发环境
    UI5-文档-2.3-使用SAPUI5工具为Eclipse开发应用程序
    UI5-文档-2.2-使用SAP Web IDE开发应用程序
    UI5-文档-2.1-使用OpenUI5开发应用
    UI5-文档-2-开发环境
  • 原文地址:https://www.cnblogs.com/nevel/p/14456217.html
Copyright © 2011-2022 走看看