Modelsim——工程建立和常用设置
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——工程建立和常用设置的更多相关文章
- Quartus II——工程建立和常用设置
Quartus ii是针对Altera FPGA的一款EDA软件,在此以一个led闪烁工程来简单说一下基本操作: 一.注意事项 Quartus ii最大的注意事项就一点:工程名称以及工程里面的文件名称 ...
- Source Insight 常用设置和快捷键大全
Source Insight 常用设置和快捷键大全 退出程序 : Alt+F4 重画屏幕 : Ctrl+Alt+Space 完成语法 : Ctrl+E 复制一行 : Ctrl+K 恰好复制该位置右边的 ...
- eclipse 常用设置,常用快捷键修改
eclipse 常用设置,常用快捷键,myeclipse和eclipse类似' 首先打开eclipse的首选项-->搜索 keys' 常用的一些快捷键: Ctrl+1 快速修复(最经典的快捷键, ...
- IntelliJ IDEA快捷键和常用设置
一 快捷键的使用 1.文本编辑删除 ctr + y复制 ctr + D2.智能提示提示 ctr + space智能提示 ctr + shift + space完成当前语句 ctr + ...
- PHPSTORM/IntelliJ IDEA 常用 设置配置优化
PHPSTORM/IntelliJ IDEA 常用 设置配置优化 - meetrice 时间 2014-09-06 10:17:00 博客园-所有随笔区 原文 http://www.cnblogs ...
- Eclipse下Tomcat常用设置
Eclipse下Tomcat常用设置 1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomc ...
- QuartusII13.0使用教程详解(一个完整的工程建立)
好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...
- linux云服务器常用设置
前面的话 由于在云服务器上配置自己的网站,将Linux里的常用设置记录如下 更改shell 默认地, ubuntu系统默认的shell是dash,但更常用的shell是bash 通过下面命令可以将da ...
- Davinci DM6446开发攻略——DSP开发工程建立
前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...
随机推荐
- Python json数据写入csv json excel文件
一.写入 写入csv和json, 可以使用csv这个包写, 我这里没有使用, 并且把写csv和json的写到一起了 具体的代码就不解释了 def write_file(file_name, items ...
- [RN] React Native 使用 react-navigation 报错 "Unable to resolve module `react-native-gesture-handler`
在React Native 使用 react-navigation 过程中,报错 "Unable to resolve module `react-native-gesture-handle ...
- codevs 1814 最长链题解
codevs 1814 最长链题解 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Descripti ...
- Mac下删除自己安装的Python
删除Python框架sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x 删除Python程序sudo rm -rf “/Appl ...
- Tex家族关系
小书匠 声明:文章自一份其实很短的 LaTeX 入门文档学习,整理所得. Tex家族关系 Tex家族关系图 1.排版引擎 1.所谓的引擎,是指能够实现断行.分页等操作的程序(请注意这并不是定义) 2. ...
- linux命令之------Find命令
Find命令 1)作用:用来在指定目录下查找文件. 2)案例:将当前目录及其子目录下所有延申档名是c的文件列出来. Find -name “*.txt” 其中:*表示通配任意个字符:?表示通配单个字符 ...
- Tkinter 之爬虫框架项目实战
一.效果图 二.源码 ''' 测试内容页爬取''' def test_content_url(self): try: url = self.test_url_var.get().strip() ite ...
- [开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码
前言 FreeSql 发布至今已经有9个月,功能渐渐完善,自身的生态也逐步形成,早在几个月前写过一篇文章<ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE>,您可以 ...
- hdu1237 简单计算器[STL 栈]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu1237 题干 代码和解释 解本题时使用了STL 栈,要记得使用#include<stack>. 解本题时使用了isdigit()函 ...
- 第10组 Beta冲刺(3/5)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增修改用户信息.任务完成反馈等功能API 服务器后端部署,API接口的bet ...