Modelsim的仿真之路(基础仿真流程)ipqsn1年前更新80 前言 缓了一段时间,该接着开始系列记录了,这一次将开始ModelSim的仿真之路,对于学FPGA或者从业于该行业的人来说,仿真是必不可免的一件事,而仿真的工具也不少,不过感觉ModelSim推荐的指数要高很多,或许和它优化的能力有关吧~ ~Show Time~ 仿真前夕 在ModelSim中对一个设计进行仿真有几种模式,基本的仿真、工程形式的仿真,还有使用多个库进行仿真,逐个进行介绍下使用步骤; 一:基础仿真步骤: 1、创建工作库 在ModelSim中,所有设计都被编译到一个库中。通常通过创建名为“work”的工作库来启动一个新的仿真,这是编译器使用的默认库名,作为已编译设计单元的目标库; 2、编译设计文件 创建工作库之后,就要将设计模块编译到其中,编译后的库格式支持在多个平台上使用,比如在Linux上编译了,然后可以不需要重新编译,就直接移到Windows上用, 3、载入且运行仿真 编译完成后,选择顶层的激励文件来加载仿真器,载入完成后,仿真界面将处于初始状态,再Run一下就可以开始仿真了~ 4、对仿真结果进行Debug Debug就是在仿真的时候,如果发现结果不是你想要的,就一步步调试了,当然,是可以借用工具滴! 二:工程形式的仿真步骤: 1、创建工程 2、添加设计文件到工程 3、编译设计文件 4、载入且运行仿真 5、对仿真结果进行Debug 可以看出来,工程形式的仿真和基础仿真很相似,多了个工程来对设计文件进行管理,其中,工作库在工程创建好后就自动生成了,如果没有使用close来关闭工程,下次启动ModelSim时,工程还会处于打开状态,都不需要再去麻烦的找了。 三:多个库的使用 除了工作库,ModelSim还有一种资源库的用法,和工作库有个明显的不同,就是工作库是处于设计文件的编译目录下,而资源库则可以处于其他位置,然后链接后就可以使用,这个资源库可以是第三方的(比如Vivado编译的库,然后在ModelSim里使用) 多个库的使用步骤再简单总结下 1、创建工程 2、添加激励文件到工程 3、编译设计文件 4、链接资源库 5、载入且运行仿真 6、对仿真结果进行Debug 如果没有使用工程的形式,就直接创建工作库替换步骤1和2就好了。 基础仿真 根据上一部分的基础仿真步骤来正式踏入仿真之路~ 先准备好要仿真的文件,将文件放到自己想要的路径下(不要出现中文字符,不然要出问题),准备好之后,打开ModelSim,软件安装的版本可以根据自己情况来装,我这装的是:ModelSim DE 16.C(也还装了另外的版本),至于为什么装这个版本,就看下一篇 《Vivado与ModelSim的联合仿真》 1、软件打开后,界面如下(有弹窗的话,直接Close掉就好了) 2、将工作路径改变到要准备好的文件路径下(File > Change Directory) 直接使用TCL命令也可以,按以上操作后,也会有相应的命令出现在Transcript的窗口中。 举例:cd E:/Soft_File/Sim_File/basicSimulation 3、创建工作库(File > New > Library) 会出现一个弹窗,然后在这个窗口可以创建一个新的库,也可以映射已存在的库,库名的栏中会有个默认的值”work“,没有的话就自己输入一下。 然后OK一下,工作库就创建好了,在软件的库界面会出现一个work的选项,不过此时还处于empty的状态 观察一下work库对应的路径,会发现多了个work的文件夹(内含一个“_info”的文件)以及一个modelsim.ini的文件;“_info”是运行的一些信息,和work是一起的,不要随意改动它;ini那个文件则是初始文件,里头是复制的安装路径下的ini文件,然后将work库加入了库的映射中。 在 Transcript 窗口也有这两个操作的相应Tcl命令 vlib work vmap work work 4、编译文件(Compile > Compile) 注:如果开着工程的话,该选项是灰色的,需要使用File > Close先关闭 点击后,在弹窗的文件窗口选中两个.v文件,注意左上角的Library选中的是否为work,然后点Compile进行编译 编译完后,Transcript窗口会出现编译结果,然后就可以点Done完成且关闭编译界面 这时再看work,会发现,已经是非空状态了,多了个 “+” ,点击后,出现了两个模块的名字,即刚刚编译的文件,类型为Module 5、如上图一样,选中test_counter,然后直接双击它,载入仿真界面 启动仿真还可以选中test文件,点右键,再选择 Simulate ;或者选中菜单栏上的Simulate > Start Simulation ,然后弹出以下的窗口,选择好文件,点OK也一样进入仿真界面; 仿真界面如下,这时候的界面主要由三个部分组成 1:文件层次;2:根据1中选中的模块,对模块内的变量信息(Objects)以及当前仿真状态(Processes)进行显示;3:波形窗口 如果缺了需要的,在菜单栏 View下开启对应的即可 若Wave窗口中无信号,则在1窗口中,选中模块,然后右键,点击Add Wave ,Wave中就添加对应的信号变量了 6、找到控制仿真运行的菜单,然后点 Run,或者直接在脚本窗口输入:run 100ns,也可运行仿真,时长根据自己需要设定,要注意的是,当以后变量多了,运行则会相对变慢;点 Run -All 的图标,则会一直运行,直到运行到停止的信号或者点了 Stop 那个图标 可以看到 Wave 中的信号变量运行了一段时间,接着 Restart,将状态全部复位,准备后续的演示 7、准备简单的Debug一下,先在菜单栏 View > Files ,打开文件窗口,双击counter.v 打开counter.v后,在always处点下侧边栏,会出现一个红色的点,即断点,再次单击就会变灰色,如果要移除就右键然后Remove Breakpoint 断点设好后,直接点 Run -All 的图标,会发现运行的蓝箭头停在了设置的断点处 这时候看Objects窗口的变量值,为当前停下时,各变量的值 把鼠标移到变量上,也会出现此时相应的变量与其值,和Objects的一样 或者选中某个信号,然后右键,选中 Examine 这时也会弹出对应变量的值 接着找到调试窗口,图标的含义和玩C的Debug是一样的,单步调试那些啥的 点两下Step Into,箭头就一步步的到了count的赋值处 基础仿真就讲到这了,不熟悉的话,可以自己多试几遍,对应产生的一些简单的脚本命令也可以记一下,之后直接跑命令有时候会方便些,最后菜单栏 Simulate > End Simulation 结束并退出仿真,出现提示框的话,点是就可以了(quit -sim)。 本篇对最基本的一个仿真操作流程直接过了一遍,下一篇就开始工程的形式来操作仿真了,还没上手的赶快学起来吧~
没有回复内容