命令方式就是在Modelsim的操作中用命令来实现,输入命令的窗口就在Modelsim界面下方的“Transcript”窗口中,如图5.39所示。例5.11 退出仿真命令退出仿真命令执行后,可以通过“vsim”命令重新启动仿真。......
2023-06-26
1.库文件的映射
Modelsim的基本使用需要3种文件,分别是软件配置文件、设计文件和库文件。软件配置文件就是5.3.1节中提到的modelsim.ini,里面有相应的配置信息,是在安装Modelsim时生成的,默认只读,但在关联时需要用到,前文已述;设计文件是工程师们的.v文件和testbench.v文件(测试文件),testbench.v是仿真设计.v文件用的测试代码,也是.v文件,在testbench.v中,不仅要对功能.v文件需要的时钟和复位等信号进行初始化,并且还要产生激励信号,作为我们设计文件的输入,以验证设计文件功能的正确性;库文件是存储已编译的设计单元的目录,包括两种库文件,一种是工作库,其库名默认为work,用于存放当前工程下所有已编译的设计文件,未编译的设计文件在work库中不存在,在建立工程之初就需要建work库,且每个工程只有一个work库,另一种是资源库,用于存放work库中已编译的设计文件所需要的资源,资源库不只一个,用户也可以自建资源库。如图5.18所示。
图5.18中最底部有3个选项:Library、Memory List和Project。Library一栏中列出该工程用到的库文件,第一个库文件就是work库,work库下面包含了一个设计文件(.v文件),work库后面的是资源库,图中资源库是在建立工程时默认建立的基本资源库,对于一些用户自己需要的特殊资源库,可以通过新建资源库将其加载。Memory List中会列出用户在仿真时建立的所有memory,通过命令实现memory的建立,在5.3.3节中“文件的写入和导出”部分会有memory的举例,这里不再赘述。Project一栏中会列出所有的.v文件,包括设计文件和测试文件。
2.设计的编译
新建工程:在图5.16工具栏中选择“File”,在“File”的下拉列表中选择“New”,然后选择“Project”,弹出如图5.19所示的对话框。
图5.18 Library示例
图5.19 新建工程
在图5.19中,第一行“Project Name”栏输入新建工程的名称,第二行“Pro-ject Location”默认指定到Modelsim安装目录下的examples文件夹,用户可以根据自己的需求重新指定新的路径,第三行默认的“Default Library Name”是“work”,即在前文“库文件的映射”中提到的work库,在这里用户可以更名,“Copy Settings From”中设定配置文件,即安装目录下的modelsim.ini文件,并选择“Copy Library Mappings”,单击“OK”按钮,会弹出如图5.20所示的对话框。
在图5.20中,加载文件,选择“Create New File”,新建.v文件,在这个文件中开始撰写代码,并保存在自己设定的路径下。在这里,以前文中交通灯状态机为例,说明工程的建立与编译。过程中,除了建立功能模块的.v文件以外,还需要建立测试.v文件,即testbench.v文件,用来产生测试激励,向功能模块提供输入信号,用户通过观测输出信号来验证模块功能的正确性。testbench.v是没有输入输出端口列表的module,在测试文件testbench.v中对设计模块进行例化调用,并初始化相关信号,然后用always等语句产生测试激励,测试文件的结构如图5.21所示。
图5.20 添加文件
图5.21 testbench.v结构图
交通灯状态机的testbench.v如例5.6所示,交通灯状态机的状态图和代码在5.2.1节中“状态机”部分。
例5.6 交通灯状态机的testbench.v
有了设计文件和测试文件,就可以开始仿真,工程界面如图5.22所示。
图5.22 工程界面
在图5.22中,选中左侧中下部的“Project”,在该栏中,有两个文件:功能模块“traffic_lights_state_machine.v”文件和“testbench.v”测试文件,并且两个文件上都打了问号,这是由于还没有编译,编译的过程会检查语法错误,可以根据报出的error进行针对性的修改,选中其中一个文件,右键单击,弹出图5.23所示选项,单击Compile→Compile Selected,即编译选项,如图5.23所示。
“Compile Selected”表示编译当前选中的文件“traffic_lights_state_machine.v”,“Compile All”表示编译当前工作框“Project”里的所有.v文件,编译后如图5.24所示。
图5.24中,在“traffic_lights_state_machine.v”上出现了对勾,表示编译成功。用相同的方法将所有用到的文件编译成功后,可以启动仿真工具,查看仿真波形。
图5.23 编译
图5.24 编译完成
3.启动仿真工具
当设计文件“traffic_lights_state_machine.v”和测试文件“testbench.v”编译通过之后,启动仿真工具。单击工具栏中仿真按钮,如图5.25所示。
图5.25 启动仿真按钮
在图5.25中,所圈为启动仿真按钮,第一个是编译当前选中.v文件,第二个是编译所有的.v文件,第四个是停止仿真按钮。单击仿真按钮,会弹出图5.26所示的对话框。
在图5.26中,先单击右下角“Optimization Options…”按钮,弹出图5.27所示的对话框。
图5.27中,弹出时默认选中第一个“No design object visibility”,需要改选为第二个“Apply full visibility to all modules(full debug mode)”选项,第二个选项可以使模块内部及模块连接间的信号都能被观察到,能够帮助我们更好地进行调试,而其他选项只能看到部分信号。配置完成后,单击“OK”按钮,会回到图5.26所示对话框,此时要选中“work”库下面所列的当前testbench.v文件,在图5.26中即“traffic_lights_state_mahine_tb”,单击“OK”按钮,启动仿真。
启动仿真后,在工程界面左边“Project”栏中会增加“sim”一列,如图5.28所示。
图5.28中,“sim”栏会列出当前的testbench.v文件和设计文件,选中相应的文件,在旁边“Objects”栏中会显示出该文件的所有信号,例如图5.28中,选中的是testbench.v文件,“Objects”一栏中列出了testbench.v文件中的所有信号。如果界面中没有“Objects”一栏,可以在工具栏中点中“View”,然后勾选“Ob-jects”将其调出。
图5.26 启动仿真配置示图
图5.27 优化选项
选中设计文件“DUT_traffic_lights_state_machine”,由于在testbench.v中例化设计文件时,在其名字前增加“DUT_”前缀,所以“DUT_traffic_lights_state_ma-chine”与“traffic_lights_state_machine”是同一个模块。右键单击选择Add to→Wave→All items in resgion,将设计文件中的所有信号添加到观察波形中,在原来.v文件编辑窗口会增加“Wave”窗口,如图5.29所示。
图5.28 启动仿真后示图
图5.29 Wave窗口
在图5.29中的Wave窗口,将要观测的信号添加进来。单击开始仿真按钮,仿真开始,如图5.30所示。
图5.30 仿真启动选项
在图5.30中,最左侧的按钮表示重新开始“Restart”,在调试中会用到;白框中填写仿真时间,虽然单位是100ms,但并不是生活中用到的时间衡量方式,它只是一个仿真时间,通常500ms就能跑一个通宵,可以说是非常大的仿真了;紧跟白框后面的第一个按钮是仿真开始按钮“Run”,到100ms时就会停止,该按钮与白框里的时间是相关联的,白框里设定的仿真时间就是“Run”的时间;白框后第二按钮是“ContinueRun”按钮,仿真过程中被中止,单击该按钮继续,前面跑出来的波形会保存,然后继续跑;白框后第三个按钮是“Run-All”按钮,单击该按钮后,仿真会一直进行,直到用户单击最后一个按钮“Break”来中止。当然,跑的时间越长,波形中能看到的数据越多,波形文件就越大,有时候波形文件在工程中就能占好几个G,甚至几十个G,不需要时可以将波形文件删除,它们就是工程目录下后缀名为.wlf的文件。
4.调试
调试主要是通过波形查看信号的各个状态,去验证代码功能的正确与否。调试的手段主要是观测波形、查看输出文件等方式。下面是观测波形会用到的基本工具,如图5.31所示。
图5.31中所列是查看波形常用工具。其中第一个图标是以图形界面中轴线为中心放大图形,第二个图标是缩小图形,第三个图标是将所有图形缩放到当前屏幕(图形很密集,但能看见当前仿真时间段内的所有波形),第四个图标是以所选轴线为中心放大波形,这个工具能够将用户想看的那部分波形进行放大,相对于第一个来说选择性更强,目标明确有针对性。
当波形文件较大,波形较密集时,需要用一些便捷工具帮助用户迅速定位想查看的点,比如图5.32中这组工具。
图5.31 观测波形的基本工具按钮
图5.32 便捷工具按钮
在图5.32中,第一个图标用来增加一个cursor(图形标),方便用两个cursor测距(测量时间差),第二个图标用来删去当前选中的cursor,第三个是寻找前一个变化的值,在图形界面中选中一个信号,以该信号为准,找其前面离图形标最近的一个变化值,第四个与第三个功能类似,只是向后寻找,寻找方向不同,第5个和第6个图标用以找所选信号的下降沿,前者向前找,后者向后找,第7个和第8个图标用来找所选信号的上升沿,前者向前找,后者向后找。
对于本文中交通灯状态机这个例子,其仿真波形如图5.33所示。
图5.33的波形图中,竖着的黄线即前文所述图形标,用户移动该标志来查看所需查看的波形,绿灯、黄灯、红灯依次亮起(图5.33中“green_light”、“yellow_light”和“red_light”信号依次被拉高),并维持各自所要求的时间,状态机“CurrentState”指示当前状态,与信号灯输出同步,按照设计文件依次跳转,工作正常,完成设计功能。
图5.33 交通灯仿真示图
另外,如果觉得波形在调试界面中太小,不方便查看,可以单击波形界面右上角的第二个按钮将波形界面弹出,单独作为一个窗口,如图5.34中间的那个图标。
图5.34 弹出窗口按钮
在图5.34中,第一个图标可以将当前查看波形的框图“Wave”放大到Modelsim界面中间的全屏,或者缩小到默认值;第二个图标即弹出窗口;第三个图标是关闭当前波形。
还可以查看某个信号的数据流,通过选择Objects→选中查看信号→Add Data-flow查看,如图5.35和图5.36所示。
在图5.35中,右键单击选中的信号“green_light”弹出右侧选项列表,选中“Add Dataflow”,在右边会弹出图5.36所示的界面。
图5.35 选择Dataflow
图5.36中,显示了产生信号“green_light”的代码块,此时可以选中图中某个信号,双击,会出现信号的连接关系。在工程很大、信号比较多的时候会查看Data-flow,便于用户查看信号走向,追溯信号来源,不用在代码中一一对应,通过图形界面直观便捷地找到信号走过的路径。
在调试的过程中难免需要修改代码,重启仿真,修改完代码后,在左侧“Pro-ject”栏中对应的.v文件又会从对勾变成问号,需要重新编译修改的代码,然后再重新启动仿真。选择工具栏中的Simulate→Restart,弹出图5.37所示的对话框。
图5.36 查看结果界面
图5.37对话框中默认全选,单击“OK”按钮,可以看见“sim”栏和“Ob-jects”栏中的信号会被重新加载,“Wave”界面中的波形也被清除,单击“Run”按钮,开始新一轮的仿真,再重复前面的调试过程。“Restart”对应的快捷键如图5.38所示。
图5.37 Restart对话框
图5.38 Restart快捷键
图5.38所示“Restart”快捷键在界面上方的工具栏中,单击图5.38所示图标同样会弹出图5.37所示的对话框。
有关CMOS集成电路EDA技术的文章
命令方式就是在Modelsim的操作中用命令来实现,输入命令的窗口就在Modelsim界面下方的“Transcript”窗口中,如图5.39所示。例5.11 退出仿真命令退出仿真命令执行后,可以通过“vsim”命令重新启动仿真。......
2023-06-26
学习内容绘图环境设置;显示命令、对象捕捉命令使用;精确定点方法使用;图层操作命令使用;AutoCAD绘图与图形填充命令使用,基本图形绘制;编辑命令灵活使用;剖面填充及文本命令使用;图块命令使用;尺寸标注;工程制图与图纸输出。本章的地位及特点在计算机技术迅速发展的今天,AutoCAD已成为计算机绘图的基本软件,因此,它也是设计领域的重要手段与工具,是从事设计与管理的应用型人才必须学会和掌握的一项重要技能。......
2023-06-28
图5.14中,选中的即为“Simulation Library Compilation”选项,单击进入下一步,在第二步时注意选择Modelsim SE,其他选择默认选项,如图5.15所示。图5.15中线圈需要注意,选中“Modelsim SE”选项,直到编译库,整个过程就是把Xilinx的库编译成功。图5.17 加载modelsim.exe至此,ISE与Modelsim关联成功,在ISE中可直接调用Modelsim SE进行仿真验证,大大提高仿真效率。......
2023-06-26
第一节消息的类别在不同的媒体上,消息的出现方式也不一样,有的叫"本报讯"、"本刊讯",有的叫"某某社某月某日某地电";而电视台、电台上,则称之为"本台消息"。单凭一条消息,难以完成这个任务。另一类动态消息是不连续的,自成一体的。目前,这5个学科中有两个已获得博士学位授予权,被确定为全军重点建设学科;有一个获准建立了博士后科研流动站,成为第二炮兵首屈一指的高层次人才培养基地。......
2024-03-18
经常看报纸的人都知道,看一条消息,最先看到的当然是标题,然后就是"本报讯"这三个字。下面,就详细讲一下消息的具体写作方法。多用于非事件性新闻,如经验性消息等。1994年9月,已过而立之年、时任某部控制排长的曾蛟被保送到某学院,成为该院十队一名本科学员。上面两段中的第一段,是导语;第二段,便是最基本的背景材料。......
2024-03-18
汉朝的隶书在我国书法史上占有重要的地位。隶书的产生为楷行书奠定了基础,同时开了草书的先声。而行书介乎于两者之间,具有简便、通俗、流动和写意的特点。由于有以上一些特点,所以行书一出现便显示出旺盛的生命力,至今仍盛行不衰。......
2024-08-28
在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。......
2023-11-07
本书第十四章里列举的《清晨,寻找澳星整流罩》,就是一篇典型的新闻小故事,其故事性、思想性都比较鲜明。除了故事性和思想性,写新闻故事时还要注意以下几点:一是要戒僵。......
2024-03-18
相关推荐