Modelsim是一款优秀的FPGA仿真软件,这里记录一下Modelsim的基本使用。

  一、联合仿真

  联合仿真,即Quartus ii自己调用Modelsim,Modelsim自动出现仿真波形。

  1.Modelsim软件的路径设置,一次设置好,以后就不用重复设置了。打开Quartus ii,点击Tools --- Options --- EDA Tool Optinons,将modelsim的安装路径填写进去。我这用的是QuestaSim,和Modelsim是完全没有区别的。为了防止遗漏,我把下面三个位置都填上:

  2.Quartus ii关联Modelsim,一开始建立工程时就可以设置,如果忘记了或者设置错了也可以再次更改。点击Assignments --- Setings --- Eda Tool Setings,将仿真工具选择好即可。(我的是QuastaSim,就填的QuastaSim)

  3.仿真的前提是你的模块文件和testbench文件都写好了,那么我们需要把模块文件和testbench相关联。点击Assignments --- Setings --- Eda Tool Setings下的simulation,将Tool name选择好,然后点击Compile testbench,之后点击Test Benches

  进去后,点击New,进入另一个小页面,然后点击 。。。选择要的testbench文件,再点击Add,并且记得在上面把该testbench名字写上,然后一路ok就行了。

  4.现在,各种设置都完成了,可以开始仿真了。这里记录一个小知识点:前仿真和后仿真。前仿真又称为功能仿真,即综合编译前理想状态下的仿真;后仿真又称为时序仿真,即综合编译后考虑恶劣情况下的仿真,会将一些线路延时等考虑进去,具体考虑了多少因素我还不是很懂,希望以后能学会。那么现在我们点击Quartus ii界面的Tools --- Run Simulation Tool,需要前仿真就点RTL Simulation,需要后仿真就点击Gate Level Simulation,仿真就自动出现了。当然Quartus ii界面也有这两项的小图标,点小图标是一样的。

  5.现在Modelsim已经打开了,并且呈现出了波形,注意一点的是只有鼠标靠近该信号线的边沿,标杆就会吸附在边沿上,对手抖的人很友好。这里对Modelsim的界面简单记录一下:

  6.注意一点,如果对代码进行了修改,那么需要关闭Modelsim并且重新点击打开才行。

  二、独立仿真

  联合仿真虽然很方便,一点击就自动出波形,但是一共工程模块很多的话还是不太方便,那么就要学会直接使用Modelsim进行仿真。

  1.打开Modelsim,点击File --- New --- Project,出现以下界面,第一行是工程名称,第二行是工作路径,我们按需要填写以下就行。第三行第四行默认即可。完了点击OK

  2.这里是添加文件,点击第一排第二个,Add Existing File,将模块文件和testbench都添加进来(可以跨文件夹一个个添加),如果使用了ip核,那么ip核和仿真库文件altera_mf.v也需要添加进去(该文件在Quartus ii安装路径下可找到)

  3.添加好了后页面如下所示,文件出现了,但是有个问号,这说明我们需要编译一下,鼠标右键选择Compile All即可。我们发现很快就编译好了,问号变成了 √ 号。这比Quartus ii快多了,那么以后我们写代码需要检查语法错误时,其实可以用Modelsim来检查了,真方便。

  4.之后我们点击Library ---- work --- tb文件,右键选择Simulation without Optimization

  5.接着出现以下界面,我们关注信号就行了。选择好要呈现波形的信号,鼠标右键点击Add wava。

  6.波形界面出现了,但是没有波形,我们手动点击顶上的按钮即可,上文已经介绍过了。

  7.注意,如果对代码进行了改动,那么需要进行重新编译,并且波形窗口重置一下再跑即可。此外,独立仿真适合于前仿真,需要后仿真的话得添加很多由Quartus ii产生的相关文件,很是麻烦。所以后仿真还是直接用联合仿真方式吧。

三、界面调整

1.隐藏信号名的路径,波形窗口中,信号名的默认显示方式是包含路径名的,点击该页面左下角的灰色原点即可隐藏路径名。但这样每次打开都得点,软件不会记忆住。可以点击Tools --- Window preference --- display signal path,数值改写成1,ok。这样每次加载信号时,信号名都不包含路径了。

2.更改界面颜色,点击Tools --- Edit preferences,这里可以修改你的界面颜色。如果想单独改变某个波形的颜色,可以直接选择该信号右键点最后一项,里面也有color的设置。

3.Modelsim上面很多快捷按钮供我们使用,但是它经常跑偏而且太杂了。鼠标停在按钮那,点鼠标右键,将Standard、Compile、Simulate、Zoom保留打钩,其他项都不打钩。这样快捷按钮栏就变得简洁了。留下的这四个快捷按钮基本够我们用了,以后还要用到哪个快捷按钮再鼠标右键打钩就行。

四、保存波形

  变好颜色,设置显示格式,定位时间点,终于看到想要的漂亮波形啦!这时按Crtl + S 保存当前状态为wave.do,路径为默认路径。关闭软件,走人!下次想再看到之前的费了半天调好的漂亮波形,只需要这样做:

1.在你刚刚那个工程的文件夹,出现一个vsim.wlf文件和刚刚保存的wave.do文件。我们双击vsim.wlf,Modelsim就打开了,并且定位到了之前的文件夹,也打开了sim区域,但是没有波形。

2.如果你在sim区域选中模块右键点击add wave,那么波形出现了,却不是你之前的那个漂亮波形,所以我不建议这么做。你应该在做完上面第1步后直接在Transcript输入:do wave.do,按Enter回车键。噔噔噔噔,原来的波形回来了!

五、脚本自动化仿真

  Modelsim是支持命令的,我们可以用 .do 文件将这些命令先写好然后在Modelsim上调用。因为我的编辑器不支持.do的语法,所以这里改用 .tcl文件,它和 .do 的使用是没有任何区别的。

1. 我习惯设置一个test文件夹,里面放着仿真文件 XX_tb.v,然后在这test文件夹里放一个sim文件夹,在此文件夹内新建一个sim.tcl文件,这样后面的工程和乱七八糟的文件都在内部的sim文件夹里。

2. 在sim .tcl文件里写好以下代码,这些代码建议保存或制作成代码片段,以后只需要稍微改一改就能用。

 # ==========================================================================
# == 清空软件残留信息
# ========================================================================== # 退出之前仿真
quit -sim # 清空信息
.main clear # ==========================================================================
# == 建立工程并仿真
# ========================================================================== # 建立新的工程库
vlib work # 映射逻辑库到物理目录
vmap work work # 编译仿真文件
vlog ./../*.v # 编译设计文件
vlog ./../../rtl/*.v # 无优化simulation *** 请修改文件名 ***
vsim -novopt work.fsm_tb # ==========================================================================
# == 状态机名称查看器,如若不用请删除!!!
# ========================================================================== # 结构体设置
virtual type {
{'b0001 S0}
{4'b0010 S1}
{'b0100 S2}
{4'b1000 S3}
} fsm_type; # 结构体和信号名关联,命名为state_name
virtual function {(fsm_type)/fsm_tb/u_fsm/state} state_name # ==========================================================================
# == 加载波形
# ========================================================================== # 添加波形,高度30,以unsigned格式显示 *** 请修改路径名 ***
add wave -height -radix unsigned /fsm_tb/u_fsm/* # 跑完
run -all

3.打开Modelsim,点击 Files --- Change Directory ,找到刚刚那个 tcl 文件所在的文件夹。

4.在Transcript窗口输入 do sim.tcl,敲击Enter回车键。现在Modelsim就会自动帮你工作啦!

ps: 

1.如果你的文件夹结构设置的和我一样,而且testbench文件命名为:XX_tb.v,里面例化的名称为 u_XX ,那么以后只需要将上述代码的 fsm 以"不匹配全词"方式替换成XX即可,当然手动修改也是很方便的,毕竟只要改2处地方即可。

2.这样操作在Project区域是空白的,那我们改了代码后怎么编译调试呢?在Library里找到模块用鼠标右键选择编译即可,和在Project里编译是一样的效果。然后在波形那restart一下重跑就行了。

六、用bat命令直接运行Modelsim

  如果你懒得连Modelsim都不想打开,那可以试试 .bat文件的操作。

1.在 sim.tcl文件边上新建一个txt文件,里面写好下面的的代码然后保存。注意第4行需要和你的 .tcl 文件名称保持一致。

::请按任意键继续...
pause

::打开Modelsim并执行do sim.tcl
vsim -do sim.tcl

2.将刚刚那个 .txt 文件重命名为 .bat 文件

3.打开这个bat文件,敲Enter回车键,OK,电脑自动打开Modelsim自动仿真出波形了!

Modelsim的记录就到这了,这个工具很强大,很多功能我还不懂,以后再添加吧。

Modelsim——工程建立和常用设置的更多相关文章

  1. Quartus II——工程建立和常用设置

    Quartus ii是针对Altera FPGA的一款EDA软件,在此以一个led闪烁工程来简单说一下基本操作: 一.注意事项 Quartus ii最大的注意事项就一点:工程名称以及工程里面的文件名称 ...

  2. Source Insight 常用设置和快捷键大全

    Source Insight 常用设置和快捷键大全 退出程序 : Alt+F4 重画屏幕 : Ctrl+Alt+Space 完成语法 : Ctrl+E 复制一行 : Ctrl+K 恰好复制该位置右边的 ...

  3. eclipse 常用设置,常用快捷键修改

    eclipse 常用设置,常用快捷键,myeclipse和eclipse类似' 首先打开eclipse的首选项-->搜索 keys' 常用的一些快捷键: Ctrl+1 快速修复(最经典的快捷键, ...

  4. IntelliJ IDEA快捷键和常用设置

    一   快捷键的使用       1.文本编辑删除 ctr + y复制 ctr + D2.智能提示提示 ctr + space智能提示 ctr + shift + space完成当前语句 ctr + ...

  5. PHPSTORM/IntelliJ IDEA 常用 设置配置优化

    PHPSTORM/IntelliJ IDEA 常用 设置配置优化 - meetrice 时间 2014-09-06 10:17:00  博客园-所有随笔区 原文  http://www.cnblogs ...

  6. Eclipse下Tomcat常用设置

    Eclipse下Tomcat常用设置 1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomc ...

  7. QuartusII13.0使用教程详解(一个完整的工程建立)

    好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...

  8. linux云服务器常用设置

    前面的话 由于在云服务器上配置自己的网站,将Linux里的常用设置记录如下 更改shell 默认地, ubuntu系统默认的shell是dash,但更常用的shell是bash 通过下面命令可以将da ...

  9. Davinci DM6446开发攻略——DSP开发工程建立

    前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...

随机推荐

  1. 使用rbenv 进行ruby 多版本的管理

    今天需要安装一个ruby 包,但是ruby 版本过低,以前使用过rvm,但是在安装rvm 的时候发现系统有异常 错误信息,发现还有另外一个不错的可选工具 rbenv 安装 我是mac 系统 使用bre ...

  2. dbt 0.13.0 新添加特性sources 试用

    dbt 0.13 添加了一个新的功能sources 我呢可以用来做以下事情 从基础模型的源表中进行数据选择 测试对于源数据的假设 计算源数据的freshness source 操作 定义source ...

  3. JavaScript高级程序编程(二)

    JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...

  4. 干货 | 10分钟搞懂branch and bound(分支定界)算法的代码实现附带java代码

    Outline 前言 Example-1 Example-2 运行说明 00 前言 前面一篇文章我们讲了branch and bound算法的相关概念.可能大家对精确算法实现的印象大概只有一个,调用求 ...

  5. Markdown 打出上下标

    1. 打上标,下标 2<sup>10</sup> <!--下标--> 2.同时打上下标 $x^p_ {ij}$ <!--上标为p,下标为ij,{}是用来组合i ...

  6. 如何在 Debian 9 上安装和使用 Docker

    Docker 是一个容器化平台,允许您快速构建,测试和部署应用程序,作为便携式,自给自足的容器,几乎可以在任何地方运行. Docker 是容器技术的事实上的标准,它是 DevOps 工程师及其持续集成 ...

  7. MySql 三大知识点——索引、锁、事

    作者:莫那鲁道原文:http://thinkinjava.cn/2019/03/16/2019-03-16-mysql/ 1. 索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容. ...

  8. 第09组 Alpha冲刺(4/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  9. 剑指offer:左旋转字符串

    题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”ab ...

  10. mariadb 10.2/mysql 8.0实现递归

    借助mysql 8.0的cte(它是iso sql标准的一部分),可以实现递归,mariadb 10.2.2开始支持递归cte,如下: +----+----------+--------------+ ...