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. java 数据库迁移工具 flyway

    官方 https://github.com/flyway/flyway 简易demo https://github.com/deadzq/flyway-demo 主要在配置文件上做改动

  2. 洛谷 P2312 解方程 题解

    P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...

  3. 洛谷 P2004 领地选择 题解

    P2004 领地选择 题目描述 作为在虚拟世界里统帅千军万马的领袖,小Z认为天时.地利.人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小T来说是非常重要的. 首都被认为是一个占地C*C的正方形. ...

  4. 计蒜客 38228. Max answer-线段树维护单调栈(The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer 南昌邀请赛网络赛) 2019ICPC南昌邀请赛网络赛

    Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of ...

  5. Connection to newtaotao failed. [08001] Could not create connection to database

    jdbc.url=jdbc:mysql://localhost:3306/newtaotao?serverTimezone=UTC&characterEncoding=utf-8 数据库是5. ...

  6. jmeter接口自动化和性能学习目录

     目录黑色代表未完成的,绿色代表已完成的文章.目录的作用的为了引导和总结自己的学习,也是为了更好的分享给大家. 一.接口自动化 jmeter解决登录token获取 jmeter五种提取器 之 正则表达 ...

  7. 第12组 Alpha事后诸葛亮

    Header 组长博客 Postmortem 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 要解决的是喜欢记录分享旅游生活的人群的行迹记录和分享问题, ...

  8. mysql 升序降序

    默认不指定,order by 按照升序排列. asc:升序 desc:降序

  9. SpringBoot定时任务@Scheduled

    SpringBoot定时任务主要由两个注解完成. @Scheduled加在方法上面. @EnableScheduling加在类上面.可以是Application类,也可以是@Component类,还可 ...

  10. 2D转换模块

    2D转换模块(transform) 1.取值:rotate(45deg)--- 旋转,默认以自己为中心作为参考点来旋转 .translate(100px,0px)--- 平移,第一个参数代表水平方向, ...