ModelSim 使用笔记1

 

ModelSim提供了简单仿真方式,还有一种要建立project,目前这种方式暂时够我用了。

总结了以下,做了一个简单的《modelsim quick start》。

简单方针模式下面,操作步骤如下(黄色字符部分为每个操作对应的script指令,打开modelsim软件,在script窗口输入这些指令即可):

1.新建library。“file->new->library"。选择library种类为“Create: a new library and a logical mapping to it”。

vlib newlib

vmap newlib newlib

2.compile所有的源程序。"compile->compile"在弹出对话框选择要编译的源文件即可。compile所有的源程序之后,会将这些编译后的文件全部添加到新建的Library中去。

VHDL程序使用:vcom -work newlib sourcecode.vdl

Verilog程序使用:vlog -work newlib sourcecode.v

(A:源文件编译的前后顺序,对结果没有影响. B:如果前面使用的newlib名字是work,则不许要在这里指定工作lib。)

3.loading module到simulator里面。点击work左侧“+”号,展开lib,双击我们要观察的module。此时,会有signal窗口弹出(窗口标题是vsim)。

vsim  lib_name.module_name

(ATT:可能会因为vopt的缘故使得一些不重要signal被modelsim自动忽略,需添加选项 -novopt,即,vsim -novopt module_name)

4.调整窗口,准备调试。“view->..."来打开想要观察的window。(如果wave,signals等窗口都在,就不用执行这一步了)

view signals source wave

5.添加要观察的signal到wave viewer里面。在对应的信号上右键“Add -> to wave -> all items in region"。

add wave -r /*

add signal_name 添加单个信号到wave窗口

6.点击run快捷按钮或者是,simulate->run,开始仿真

run 500(运行500单位时间)

run @ 3000(特定时刻观察)

run -all (运行,直到testbench定义的stop时间)

7.可以使用breakbutton来终止run,“simulate->break”

break

8.设置断点,直接单击要设置断点行的左侧 (不是所有行都可以设置断点,不同版本软件下自行实验)。

当程序停止在设置的断点上时,通过以下方法查看变量值:

1)在signal window里面直接看变量的值

2)在source window里面,鼠标指针停留在变量上面时,会自动显示该变量的值(不确定是否全部版本都有)。

3)在source window里面,右键examine。

4)使用examine命令。在script窗口输入“examine var”

9.wave观察

观察一个数组时,可以选择用二进制,十进制,十六进制,还可以设置有符号无符号。

还可以把它转化为analog方式,如调试一个供da使用sine输出,可以选择用analog方式来查看dout。

Extra topic:compile the ISE standard lib for modelsim SE:

1. use the ISE native tools.(Preferred)
$ise_install_path/ise/bin/lin64/compxlibgui(compxlib is available for cmdline only)
ATT: u'd better run it as root.

2. Copy compiled libs from modelsim XE.

3. compile the library in modelsim.
cd $modelsim_install_path/
mkdir ise_lib
cd ise_lib
mkdir unisim_ver
vlib unisim_ver
vmap unisim_ver unisim_ver
vlog -work unisim_ver $ise_install_path/ise/verilog/src/unisim/*.v
(source code for VHDL is in another dir)

Do such for all libs.

u need to modify the modelsim.ini before using the lib:

$ise_install_path/ise/modelsim.ini

add the flowing context(before[vcom]):

unisim = $MODEL_TECH/../ise/unisim
simprim = $MODEL_TECH/../ise/simprim
xilinxcorelib = $MODEL_TECH/../ise/xilinxcorelib
cpld = $MODEL_TECH/../ise/cpld
secureip = $MODEL_TECH/../ise/secureip
unimacro = $MODEL_TECH/../ise/unimacro
cpld_ver = $MODEL_TECH/../ise/cpld_ver
simprims_ver = $MODEL_TECH/../ise/simprims_ver
uni9000_ver = $MODEL_TECH/../ise/uni9000_ver
unimacro_ver = $MODEL_TECH/../ise/unimacro_ver
unisims_ver = $MODEL_TECH/../ise/unisims_ver
xilinxcorelib_ver = $MODEL_TECH/../ise/xilinxcorelib_ver

=========================分割线=================================

其他一些零碎:

1.在当前工作目录下,会产生一个名为transcript的文本文件,里面记录了你在modelsim中的所有操作。

——————
无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的
 
转载:https://www.cnblogs.com/pied/archive/2012/03/22/2396621.html

ModelSim 使用笔记1的更多相关文章

  1. Modelsim使用笔记(一个完成工程的仿真)

    这学期在玩Altera的板子,不不, 现在应该叫intel PSG.在QuartusII13.0上老喜欢用modelsim_ae做仿真,小工程用起来也方便,但是我做IIC配置摄像头的时序仿真时,就显得 ...

  2. lattice 与 modelsim 仿真 笔记

    对于 lattice  Diamond 与 modelsim 的联合仿真,我总结了一句话,那就是—— 难者不会,会者不难.  也许刚开始 觉得 摸不着 头脑,但是 一旦学会 感觉还是很简单和直观的. ...

  3. 易懂的modelsim学习笔记

    1. 建一个总文件夹,如cnt2. 为源代码,测试台文件,仿真各建一文件夹.如src,tb,sim3. 编写源代码,testbench.如cnt.v,tb_cnt.v文件,同时文件名里的模块名与文件名 ...

  4. 基于脚本的modelsim自动化仿真笔记

    这里记录一下基于脚本的modelsim自动化仿真的一些知识和模板,以后忘记了可以到这里查找.转载请标明出处:http://www.cnblogs.com/IClearner/ . 一.基本介绍 这里介 ...

  5. [笔记]Modelsim系列01:编译Altera库的方法

    意义:一劳永逸,不用每次对那些包含Quartus II生成文件的工程进行功能仿真时,都需要重新编译一堆东西.节约时间成本. 版本:ModelSim SE 6.5d 打开Modelsim软件,默认会打开 ...

  6. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置

    本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...

  7. VCS使用学习笔记(0)——写在前面的话

    由于毕业设计做的是数字IC相关,虽然不是纯设计,但是也有设计相关.有设计就要有仿真验证,我就趁此机会来学习一下VCS的使用吧.当然,这里只是学习其简单的逻辑仿真功能,从波形仿真到覆盖率等,基本上不涉其 ...

  8. 搭建Modelsim SE仿真环境-使用do文件仿真

    本章我们介绍仿真环境搭建是基于Modelsim SE的.Modelsim有很多版本,比如说Modelsim-Altera,但是笔者还是建议大家使用Modelsim-SE,Modelsim-Altera ...

  9. Modelsim SE 破解教程

    第一步:打开我们提供的破解工具包. 第二步:拷贝crack.bat和MentorKG.exe到"C:\modeltech64_10.2c\win64"路径下,如果你的电脑为32位, ...

随机推荐

  1. MongoError: topology was destroyed解决方法

    MongoError: topology was destroyed 分析得出,出现这个问题是因为,当mongodb尝试写入某个数据的时候,连接被中断了! 解决方法:检查代码中是否存在操作数据的过程中 ...

  2. AtCoder - 2064 Many Easy Problems

    Problem Statement One day, Takahashi was given the following problem from Aoki: You are given a tree ...

  3. Codechef ForbiddenSum

    Mike likes to invent new functions. The latest one he has invented is called ForbiddenSum. Let's con ...

  4. codeforces 314E Sereja and Squares

    discription Sereja painted n points on the plane, point number i (1 ≤ i ≤ n) has coordinates (i, 0). ...

  5. 【动态规划】Gym - 101147H - Commandos

    裸dp,看代码. #include<cstdio> #include<algorithm> #include<cstring> using namespace st ...

  6. BUG The user specified as a definer ('root'@'%') does not exist' in

    BUG描述:通过点击实现页面无刷新提交数据. 链接服务器数据库时-提交成功 当把数据库下载到本地后链接,提交失败 查看日志显示:The user specified as a definer ('ro ...

  7. 一个简单的假vue全家桶(vue+vue-router+require)

    首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...

  8. 纯JS操作获取桌面路径方法

    //active 控件获取当前用户的桌面的路径的方法 var wsh = new ActiveXObject("wscript.shell"); listall(wsh.Speci ...

  9. Coherence的集群成员的离开和加入机制研究

    最近在客户那里环境中coherence集群不稳定,所以找出一些文档,需要搞清楚Coherence内部的一些机制 1.集群成员的离开 关于状态的检测,官方的说法是: Death detection is ...

  10. extjs4权限管理,actioncolumn列显示隐藏或禁用

    //隐藏getClass: function(v, meta, rec) { if ( someCondition ) { return 'x-hidden' } }//加入其他样式getClass: ...