下面是我们的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命令有待后续补充。

ModelSim之命令行仿真入门的更多相关文章

  1. [转]命令行 Subversion 入门

    http://omyyal.iteye.com/blog/1762831 命令行 Subversion 入门 如果您参与的项目正在使用 Subversion 进行版本控制,您将需要使用 Subvers ...

  2. NET Core 环境搭建和命令行CLI入门

    NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文 ...

  3. NET Core 环境搭建和命令行CLI入门[转]

      NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19      阅读:258      评论:0      收藏:0      [点我收藏+]   标签: N ...

  4. modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法

    安装完modelsim后,用过命令行模式仿真,如“vsim -c -do run.do”,开始时是可以的. 后来偶然再用该仿真方式,发现命令行提示“vsim 不是内部或外部命令,也不是可运行的程序或批 ...

  5. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  6. mysql 命令行操作入门(详细讲解版)

    之前分享过多次Mysql主题,今天继续分享mysql命令行入门   1. 那么多mysql客户端工具,为何要分享命令行操作? -快捷.简单.方便 -在没有客户端的情况下怎么办 -如果是mysql未开启 ...

  7. 探索Windows命令行系列(2):命令行工具入门

    1.理论基础 1.1.命令行的前世今生 1.2.命令执行规则 1.3.使用命令历史 2.使用入门 2.1.启动和关闭命令行 2.2.执行简单的命令 2.3.命令行执行程序使用技巧 3.总结 1.理论基 ...

  8. go Cobra命令行工具入门

    简介 Github:https://github.com/spf13/cobra Star:26.5K   Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kuberne ...

  9. linux命令行—《命令行快速入门》

    pwd print working directory 打印工作目录 hostname my computer's network name 电脑在网络中的名称 mkdir make director ...

随机推荐

  1. MySQL事务之数据结构

    事务是关系型数据库的核心,贯穿整个源代码,先来瞅瞅相关的数据结构,揭开面纱: server层和innodb引擎层分别对应了不同的数据结构,但相互关联: server层需要引擎注册事务,以便server ...

  2. Reflector+Reflexil 相结合实现对DLL文件修改

    在工作过程中,我们有可能遇到这样的问题:公司发给客户的软件包突然报错了,但是你知道哪里报错了,而这个代码已经编译成DLL文件了,源代码不在自己这里.怎么办呢?还好现在有Reflexil插件,这个插件只 ...

  3. ASP.NET MVC 3.0 Controller基础

    ASP.NET MVC 3.0 Controller基础   1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...

  4. 利用HttpWebRequest和HttpWebResponse获取Cookie

    之前看过某个同学的一篇有关与使用JSoup解析学校图书馆的文章,仔细一看,发现竟然是同校!!既然对方用的是java,那么我也就来个C#好了,虽然我的入门语言是java. C#没有JSoup这样方便的东 ...

  5. How to detect and avoid memory and resources leaks in .NET applications

    By Fabrice Marguerie Despite what a lot of people believe, it's easy to introduce memory and resourc ...

  6. HDU5649 DZY Loves Sorting 线段树

    题意:BC 76 div1 1004 有中文题面 然后奉上官方题解: 这是一道良心的基础数据结构题. 我们二分a[k]的值,假设当前是mid,然后把大于mid的数字标为1,不大于mid的数字标为0.然 ...

  7. C(n,k)在n个不重复数中获得k个数

    //比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6 package 再次开始; import java.util.ArrayList; //本次实现的是在n个不重复 ...

  8. UVALive 5135 Mining Your Own Business 双连通分量 2011final

    题意:n条隧道由一些点连接而成,其中每条隧道链接两个连接点.任意两个连接点之间最多只有一条隧道.任务就是在这些连接点中,安装尽量少的太平井和逃生装置,使得不管哪个连接点倒塌,工人都能从其他太平井逃脱, ...

  9. HDU FatMouse's Speed 基本DP

    题意:要求找到的体重递增,速度递减的老鼠,并且输出最长的长度数,而且输出各自的序列数.Special Judge 思路:先按体重由小到大排序,再找最长速度递减序列. 转移方程:mou[i].w> ...

  10. Java 并发之共享对象

    上一篇文章说的是,避免多个线程在同一时间访问对象中的同一数据,这篇文章来详细说说共享和发布对象. 在没有同步的情况下,我们无法预料编译器.处理器安排操作执行的顺序,经常会发生以为“一定会”发生的动作实 ...