QUESTA-SIM(QuestaSim)10.2入门指南平台软件:Questa-Sim 10.2 版本Starter Edition,也适用于高版本的ModelSim软件。
内容一. 设计流程典型设计流程包括如下所示:(1)设计输入设计的行为或结构描述(2)RTL仿真(ModelSim)功能仿真验证逻辑模型(没有使用时间延迟)可能要求编辑设计(3)综合把设计翻译成原始的目标工艺最优化——合适的面积要求和性能要求(4)布局和布线映射设计到目标工艺里指定位置指定的布线资源应被使用(5)门级仿真(ModelSim)时序仿真验证设计一旦编程或配置将能在目标工艺里工作可能要求编辑设计(6)时序分析(7)验证合乎性能规范可能要求编辑设计(8)版图设计(9)仿真版图设计(10)在板编程和测试器件使用QuestaSi/ModelSim仿真的基本流程为:图1.1 使用QuestaSim仿真的基本流程2 开始1.1 新建工程打开QuestaSim后,其画面如图2.1所示。
图2.1 QuestaSim画面1. 创建工作目录E:/QuestaSim/, 在其路径下创建子文件夹/ip、/prj、/rtl、/tb, prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl 是代码目录,tb是testbench目录。
2. 选择File>New>Preject创建一个新工程。
打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。
一般情况下,设定Default Library Name为work。
指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。
该对话框如图2.2所示,此外还允许通过修改初始化文件QuestaSim.ini文件来映射库设置。
图2.2 创建工程的对话框2. 设置Project Name为BG0806,Project Location为E:/QuestaSim/prj, 勾选Copy Library Mappings ,点击OK。
3. 出现Add Items to the Project的对话框,如图2.3所示,图2.3 在工程中,添加新项目1.2 在工程中添加新项目在Add Items to the Project对话框中,包括以下选项:∙Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件∙Add Existing File——添加一个已存在的文件∙Create Simulation——创建指定源文件和仿真选项的仿真配置∙Create New Folder——创建一个新的组织文件夹1.2.3 创建新文件1. 单击Create New File。
打开图2.4所示窗口。
图2.4创建工程文件夹2. 输入文件名称:bg0806_dp_top,然后选择文件类型为Verilog。
图2.5 输入工程文件信息3. 单击OK,关闭本对话框。
新的工程文件将会在工程窗口显示。
单击Close,以关闭Add Items to the Project。
图2.6 RTL设计文件4. 双击打开datapath_top.v文件(注意:若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。
每一个.v文件录入完成后,单击Save,保存rtl代码。
1.2.4 添加RTL代码通常情况下,程序员不会在QuestaSim直接录入RTL代码,推荐使用GVIM8.0代码编辑器编辑RTL代码,然后选择Add Existing File 则直接将E:/QuestaSim/rtl/*.v添加到工程,不用特意指定顶层文件,仿真时软件会自动识别顶层文件。
1. 选择Project>Add to Project>Existing File,如图2.14所示。
图2.7添加文件到工程中2. 单击打开,在Add file to the project窗口,单击OK。
1.2.5 添加TestBench代码TB文件保存在E:/QuestaSim/tb/,同样添加到工程目录下,TestBench文件的写法参考相关文献,此处不赘述。
1.3 编译文件在Project标签下的Status列的问号,表示文件尚未编译进工程,或者在最后编译前,源文件有所改动。
欲编译文件,选择Compile<Compile ALL,或者右击Project标签,选择Compile>Compile All。
倘若此处没有错误,编译成功的消息,就会在Transcript窗口如图2.8所示,如果有错误,双击出错的地方,修改RTL代码。
图2.8 编译成功1.4 仿真1.4.1 仿真环境设置1. 点击工具栏上的图2.9 仿真设置1(1) 点击Optimization Options > Visibility,勾选full debug mode图2.9 仿真设置2(2) 点击Libraries,添加仿真库,xilinx仿真库的添加方法参考下文图2.10 仿真设置2(3) 添加define库,在Project工程目录空白处右键选择Propereies,在Project Compiler Setting窗口选择verilog & SystemVerilog>other verilog options>Include Directory添加define文件所在的目录,点击OK。
图2.11 仿真设置31.4.2 开始仿真单击图标,选择Design,然后选择TestBench。
单击OK,如下图所示。
图2.12 开始仿真仿真完之后出现多了2个窗口sim和Objects,sim窗口显示了层次目录,Objects窗口显示了sim窗口选择的模块的所有信号列表,可以筛选所需信号。
图2.13 仿真结束后的界面截图1.4.2 添加波形右键信号,然后选择Add to> Wave>Select Signals,在Wave窗口出现下图所示,在Run Length列输入仿真时间长度为10ms,点击图标,运行若干秒后,查看波形。
Debug 常用按键 f : 可查看仿真的完整波形,也可以单击Zoom Out(O)图标。
ctrl + 鼠标左键选择:选定任意波形区间进行放大。
注:修改完RTL代码之后必须重新编译,然后点击重新仿真。
二. 软件设置常见问题2.1 如何在Questa-Sim软件里添加xilinx的仿真库QuestaSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下。
本人是安装在D:\software\QuestaSim目录下,Xilinx软件也最好安装在不带空格的目录下。
1、找到开始菜单->程序->Xilinx Design Tools 11 -> 64/32-bit tools -> Simulation Library Compilation Wizard.2、选定QuestaSim的版本,以及指定QuestaSim的安装路径。
3、选择Both VHDL and Verilog。
4、选择支持哪些系列的芯片,看自己需要增减。
5、默认选全上即可。
6、指定编译完后的库存放位置,这里作者在QuestaSim安装目录下新建了xilinx_lib的文件夹,并指定到这里。
(注意不要指向带空格的路径)7、运行Lauch Compile Process,即开始编译库文件,需要几十分钟。
编译完成后应该在xilinx_lib目录下多出如下文件夹:8、右键打开QuestaSim目录下的QuestaSim.ini文件,先将其“只读”属性去掉。
然后用记事本打开。
在[Library]下面添加如下代码,即之前编译好的Xilinx库的路径。
unimacro = D:/softwares/QuestaSim/xilinx_lib/unimacrounimacro_ver = D:/softwares/QuestaSim/xilinx_lib/unimacro_verunisim = D:/softwares/QuestaSim/xilinx_lib/unisimunisims_ver = D:/softwares/QuestaSim/xilinx_lib/unisims_versecureip = D:/softwares/QuestaSim/xilinx_lib/secureipxilinxcorelib = D:/softwares/QuestaSim/xilinx_lib/xilinxcorelibxilinxcorelib_ver = D:/softwares/QuestaSim/xilinx_lib/xilinxcorelib_versimprim = D:/softwares/QuestaSim/xilinx_lib/simprimsimprims_ver = D:/softwares/QuestaSim/xilinx_lib/simprims_ver9、再次打开QuestaSim,即可以看到Xilinx的库已经默认出现在了库列表里。
以后仿真Xilinx的IP核时,就不用每次都添加库了。
2.2 如何保存Wave波形文件在Wave窗口选择File->Save Format,保存为*.do文件。
在代码检视窗口打开*.do,文件的代码如下所示,复制需要的代码脚本行至命令窗口,可以直接添加到Wave窗口。
不用每次都拖曳很多的信号至wave窗口,提升效率。
2.3 仿真添加波形时显示vish-4014 错误在QuestaSim的软件安装目录打开QuestaSim.ini文件,将VoptFlow设置成0,即可解决2.4 仿真时报错Glbl错误ERROR软件提示:Unresolved reference to 'glbl' in 'glbl.GSR' 。
仿真缺少glbl文件,在仿真工程中添加glbl.v文件(一般在~/ise/verilog/src/glbl.v),把testbench.v和glbl.v同时选中后进行仿真,即脚本命令中添加vsim -t 1ps -L unisims_ver glbl.v testbench.v。
2.5 IP修改后的错误仿真结果显示:No entity is bound for inst 或CE is not in the entity。
(CE是改动后添加的一个管脚),从而仿真无结果。
解决办法:首先选中该IP核的.xco文件点击右键->属性将属性改为"Synthesis/Imp + Simulation."然后将其对应的.v或.vhd文件的属性也改为"Synthesis/Imp + Simulation."2.6 如何让状态机显示状态的名字在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave 窗口中以二进制编码的形式显示,当状态很多时,这种显示形式不是很直观,下文可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于调试。