• ModelSim之命令行仿真入门


    下面是我们的Tcl仿真步骤:
    启动ModelSim SE, 首先看到在在ModelSim SE右边的窗口有ModelSim> 这样的提示符。在提示符后,顺序运行以下命令:
        vlib work  该命令的作用是在该目录下建立一个work目录,请注意不要用操作系统来新建一个work的文件夹,因为用操作系统建立的work文件夹并没有ModelSim SE自动生成的_info文件。
        vmap work work    该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应。
        vlog camera.v  camera_tb.v  该命令的作用是编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的文件。假如是VHDL文件就可以用vcom file1,file2命令来编译。
        vsim camera_tb  仿真命令, 注意后面的参数必须为camera_tb.v文件中的模块名。
        add wave/camera_tb/ * 该命令的作用是将testbench文件camera_tb.v中模块camera_tb下所有的信号变量加到波形文件中去,注意在“*”前要加空格。这时候你也可以看到wave文件被打开。当然也可以单个信号的添加,例如添加时钟:add wave clk 等等。
        run 2000  该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿真下去。
        这时候就可以在wave窗口文件中看到你的仿真结果。
        当然也可以观察其它窗口的结果,用view命令显示    
         view * 观察包括signals、wave、dataflow等窗口文件。也可以分别打开。例如用view signals来观察信号变量。

        quit -f/-force/-sim  该命令分别是退出ModelSim(-f/-force)和退出仿真(-sim)。


        ModelSim SE6..2b还有一个很好用的功能。就是可以看整个文件所形成的数据流程,各个模块之间的逻辑联系。具体方法是在仿真后执行命令  view datalflow 就可以打开dataflow文件,在dataflow的窗口菜单中点击add中的view all nets就可以观察到各个模块之间的逻辑联系,模块一般都为initial模块、always模块、assign模块等等。点击中一个模块,则这个模块变为红色。这时候在view菜单下点击show wave就可以在窗口下方弹出wave窗口,不同的是这个wave窗口所显示的信号变量仅为点击中的模块所包括的信号变量,这时候也可以点击仿真run –all小图标来仿真有关这个模块的输入输出关系。

        以上命令,就是ModelSim SE仿真程序所用到的基本命令。实际上都可以在窗口菜单中找到,效果是一样的,可能大家觉得每次用鼠标点击菜单方式更快一点,但是在ModelSim SE中开可以执行一种批处理文件,就是file.do文件,相当于DOS中的.bat文件。你可以用批处理方式来使你仿真简单化,具体做法为,将你所要执行的命令编辑在一起,以上面所讲为例,我可以编辑一个camera.do文件,文件内容如下:
    vlib work                                 // 建库
    vmap work work                      // 映射
    vlog camer.v camera_tb.v         // 编译
    vsim camera_tb                      // 仿真(模块名称)
    add wave/camera_tb/ *            // 将camera_tb下的所有信号变量加入到wave窗口中,注意”*”前必须有空格
    run 2000                  // 或者用run –all等。
    view  dataflow             // 用navigate  nets观察dataflow,不想观察就可以不加这条指令

    将上述内容保存后,每次用命令do  camera.do 就可以自动执行想要的仿真动作。

    另外,对tcl命令作一个小小的整理:

    1、编译(它们的效果是等效的):

        vlog div.v div_tb.v

        vlog -work work div.v div_tb.v

       或者将它们分开进行单独编译

    2、仿真(效果等效):

        vsim div_tb

        vsim -lib work div_tb

        vsim work.div_tb

        sim -L D:/Modelsim/Installfiles/altera/altera_mf work.videoin_tb

    3、添加波形

        add wave/div_tb/ *

        add wave sim:/div_tb/*       //*前面没有空格

    也可以单独添加波形(可以将它们直接写成一个wave.do文件,以便直接执行do wave.do就可以完成各种波形的编辑设置):

    add wave -divider Input
    add wave sim:/divider_tb/rst_n
    add wave sim:/divider_tb/clk_in
    add wave -divider Ouput
    add wave sim:/divider_tb/clk_out
    #配置wave相关命令
    WaveRestoreCursors {{Cursors 1} {200ns} 0} {{Cursors 2} {400ns} 0}
    configure wave -rowmargin 4
    configure wave -childrowmargin 2
    configure wave -namecolwidth 150
    configure wave -valuecolwidth 100
    configure wave -signalnamewidth 0
    configure wave -justifyvalue left
    configure wave -snapdistance 10
    configure wave -datasetprefix 0
    configure wave -gridoffset 0
    configure wave -gridperiod 1
    configure wave -griddelta 40
    configure wave -timeline 0

    update

    WaveRestoreZoom {0 ns} {1000 ns}

    上面就是一些常用的Modelsim的tcl命令,至于其它的tcl命令有待后续补充。

  • 相关阅读:
    链表
    Python中安装Requests库
    在vs中使用python
    CentOS添加windows引导
    c#创建windows服务
    SQLServer查询结果另存为csv格式中文乱码问题
    用svn管理GitHub项目
    Jquery操作select
    sqlserver2016安装
    信号处理函数陷阱:调用malloc导致死锁[转]
  • 原文地址:https://www.cnblogs.com/asus119/p/2002525.html
Copyright © 2020-2023  润新知