ModelSim入门指导答辩.docx
- 文档编号:27841618
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:29
- 大小:1.01MB
ModelSim入门指导答辩.docx
《ModelSim入门指导答辩.docx》由会员分享,可在线阅读,更多相关《ModelSim入门指导答辩.docx(29页珍藏版)》请在冰豆网上搜索。
ModelSim入门指导答辩
QUESTA-SIM(QuestaSim)10.2入门指南
平台
软件:
Questa-Sim10.2版本StarterEdition,也适用于高版本的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.1QuestaSim画面
1.创建工作目录E:
/QuestaSim/,在其路径下创建子文件夹/ip、/prj、/rtl、/tb,prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl是代码目录,tb是testbench目录。
2.选择File>New>Preject创建一个新工程。
打开的CreateProject对话框窗口,可以指定工程的名称、路径和缺省库名称。
一般情况下,设定DefaultLibraryName为work。
指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。
该对话框如图2.2所示,此外还允许通过修改初始化文件QuestaSim.ini文件来映射库设置。
图2.2创建工程的对话框
2.设置ProjectName为BG0806,ProjectLocation为E:
/QuestaSim/prj,勾选CopyLibraryMappings,点击OK。
3.出现AddItemstotheProject的对话框,如图2.3所示,
图2.3在工程中,添加新项目
1.2在工程中添加新项目
在AddItemstotheProject对话框中,包括以下选项:
∙CreateNewFile——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件
∙AddExistingFile——添加一个已存在的文件
∙CreateSimulation——创建指定源文件和仿真选项的仿真配置
∙CreateNewFolder——创建一个新的组织文件夹
1.2.3创建新文件
1.单击CreateNewFile。
打开图2.4所示窗口。
图2.4创建工程文件夹
2.输入文件名称:
bg0806_dp_top,然后选择文件类型为Verilog。
图2.5输入工程文件信息
3.单击OK,关闭本对话框。
新的工程文件将会在工程窗口显示。
单击Close,以关闭AddItemstotheProject。
图2.6RTL设计文件
4.双击打开datapath_top.v文件(注意:
若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。
每一个.v文件录入完成后,单击Save,保存rtl代码。
1.2.4添加RTL代码
通常情况下,程序员不会在QuestaSim直接录入RTL代码,推荐使用GVIM8.0代码编辑器编辑RTL代码,然后选择AddExistingFile则直接将E:
/QuestaSim/rtl/*.v添加到工程,不用特意指定顶层文件,仿真时软件会自动识别顶层文件。
1.选择Project>AddtoProject>ExistingFile,如图2.14所示。
图2.7添加文件到工程中
2.单击打开,在Addfiletotheproject窗口,单击OK。
1.2.5添加TestBench代码
TB文件保存在E:
/QuestaSim/tb/,同样添加到工程目录下,TestBench文件的写法参考相关文献,此处不赘述。
1.3编译文件
在Project标签下的Status列的问号,表示文件尚未编译进工程,或者在最后编译前,源文件有所改动。
欲编译文件,选择Compile
倘若此处没有错误,编译成功的消息,就会在Transcript窗口如图2.8所示,如果有错误,双击出错的地方,修改RTL代码。
图2.8编译成功
1.4仿真
1.4.1仿真环境设置
1.点击工具栏上的
图2.9仿真设置1
(1)点击OptimizationOptions>Visibility,勾选fulldebugmode
图2.9仿真设置2
(2)点击Libraries,添加仿真库,xilinx仿真库的添加方法参考下文
图2.10仿真设置2
(3)添加define库,在Project工程目录空白处右键选择Propereies,在ProjectCompilerSetting窗口选择verilog&SystemVerilog>otherverilogoptions>IncludeDirectory添加define文件所在的目录,点击OK。
图2.11仿真设置3
1.4.2开始仿真
单击
图标,选择Design,然后选择TestBench。
单击OK,如下图所示。
图2.12开始仿真
仿真完之后出现多了2个窗口sim和Objects,sim窗口显示了层次目录,Objects窗口显示了sim窗口选择的模块的所有信号列表,可以筛选所需信号。
图2.13仿真结束后的界面截图
1.4.2添加波形
右键信号,然后选择Addto>Wave>SelectSignals,在Wave窗口出现下图所示,在RunLength列输入仿真时间长度为10ms,点击
图标,运行若干秒后,查看波形。
Debug常用按键f:
可查看仿真的完整波形,也可以单击ZoomOut(O)
图标。
ctrl+鼠标左键选择:
选定任意波形区间进行放大。
注:
修改完RTL代码之后必须重新编译,然后点击
重新仿真。
二.软件设置常见问题
2.1如何在Questa-Sim软件里添加xilinx的仿真库
QuestaSim一定要安装在不带空格的目录下,即不要安装在“ProgramFiles”目录下。
本人是安装在D:
\software\QuestaSim目录下,Xilinx软件也最好安装在不带空格的目录下。
1、找到开始菜单->程序->XilinxDesignTools11->64/32-bittools->SimulationLibraryCompilationWizard.
2、选定QuestaSim的版本,以及指定QuestaSim的安装路径。
3、选择BothVHDLandVerilog。
4、选择支持哪些系列的芯片,看自己需要增减。
5、默认选全上即可。
6、指定编译完后的库存放位置,这里作者在QuestaSim安装目录下新建了xilinx_lib的文件夹,并指定到这里。
(注意不要指向带空格的路径)
7、运行LauchCompileProcess,即开始编译库文件,需要几十分钟。
编译完成后应该在xilinx_lib目录下多出如下文件夹:
8、右键打开QuestaSim目录下的QuestaSim.ini文件,先将其“只读”属性去掉。
然后用记事本打开。
在[Library]下面添加如下代码,即之前编译好的Xilinx库的路径。
unimacro=D:
/softwares/QuestaSim/xilinx_lib/unimacro
unimacro_ver=D:
/softwares/QuestaSim/xilinx_lib/unimacro_ver
unisim=D:
/softwares/QuestaSim/xilinx_lib/unisim
unisims_ver=D:
/softwares/QuestaSim/xilinx_lib/unisims_ver
secureip=D:
/softwares/QuestaSim/xilinx_lib/secureip
xilinxcorelib=D:
/softwares/QuestaSim/xilinx_lib/xilinxcorelib
xilinxcorelib_ver=D:
/softwares/QuestaSim/xilinx_lib/xilinxcorelib_ver
simprim=D:
/softwares/QuestaSim/xilinx_lib/simprim
simprims_ver=D:
/softwares/QuestaSim/xilinx_lib/simprims_ver
9、再次打开QuestaSim,即可以看到Xilinx的库已经默认出现在了库列表里。
以后仿真Xilinx的IP核时,就不用每次都添加库了。
2.2如何保存Wave波形文件
在Wave窗口选择File->SaveFormat,保存为*.do文件。
在代码检视窗口打开*.do,文件的代码如下所示,复制需要的代码脚本行至命令窗口,可以直接添加到Wave窗口。
不用每次都拖曳很多的信号至wave窗口,提升效率。
2.3仿真添加波形时显示vish-4014错误
在QuestaSim的软件安装目录打开QuestaSim.ini文件,将VoptFlow设置成0,即可解决
2.4仿真时报错Glbl错误ERROR
软件提示:
Unresolvedreferenceto'glbl'in'glbl.GSR'。
仿真缺少glbl文件,在仿真工程中添加glbl.v文件(一般在~/ise/verilog/src/glbl.v),把testbench.v和glbl.v同时选中后进行仿真,即脚本命令中添加vsim-t1ps-Lunisims_verglbl.vtestbench.v。
2.5IP修改后的错误
仿真结果显示:
Noentityisboundforinst或CEisnotintheentity。
(CE是改动后添加的一个管脚),从而仿真无结果。
解决办法:
首先选中该IP核的.xco文件点击右键->属性将属性改为"Synthesis/Imp+Simulation."
然后将其对应的.v或.vhd文件的属性也改为"Synthesis/Imp+Simulation."
2.6如何让状态机显示状态的名字
在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,当状态很多时,这种显示形式不是很直观,下文可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于调试。
1.首先使用ModelSim的virtualtype命令定义一个新的枚举类型(FSM_TYPE):
virtualtype{?
{0x0idle}{0x1write_U9}{0x2write_U6}{0x4start_1}{0x8rdU6_wrU5}{0x10update_1}{0x20read_end_1}{0x40waiting_1}?
{0x80ARM_com_1}{0x100start_2}{0x200rdU5_wrU6}{0x400update_2}{0x800read_end_2}{0x1000waiting_2}{0x2000ARM_com_2}?
}FSM_TYPE
注意:
状态变量之间需要一个空格。
2.然后我们将需要显示的信号(/sram_controller_tb/i1/state,注意信号在wave窗口中的完整名字)进行类型转换,转换成一个新的信号(state_new)
virtualfunction{(FSM_TYPE)/sram_controller_tb/i1/state}state_new
3.最后我们将新的信号加入到wave窗口中。
addwave-colorpink/sram_controller_tb/i1/state_new
4.仿真结果。
2.7仿真时显示Vopt-7的错误
Error:
Failedtoopenpagefile".qpg"in{};DATABASEERROR:
cannotopenauxiliary......
解决办法:
删除SIM目录下的work文件夹,重新跑仿真,即可解决。
三.通过命令完成工程创建、编译、仿真的工作
QuestaSim提供了丰富的命令使用户可以使用Tcl脚本命令完成从工程创建、编译、仿真的全部工作;创建如下图所示的文件目录和子目录,board文件夹存放FPGA板级相关文件,不同FPGA信号创建不同的目录,本项目的FPGA型号是xilinx的Spartan6。
rtl目录存放RTL代码,sim是QuestaSim主仿真目录,tb文件下存放Testbench相关文件。
3.1创建脚本verify_rtl_only.tcl
注意:
vopt行的代码包含了xilinx仿真库,TestBench顶层文件,glbl等内容,+acc表示完全可见,-o*_opt表示优化结果输出新的名字
3.2QuestaSim常用命令介绍
3.2.1常用仿真命令
(1)vlibwork //建立work仿真库,该命令的作用是在该目录下建立一个work目录,请注意不要用操作系统来新建一个work的文件夹,因为用操作系统建立的work文件夹并没有ModelSimSE自动生成的_info文件。
(2)vmapworkwrok //映射库,该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应。
(3)vlog -cover bcest *.v //加覆盖率分析的编译,该命令的作用是编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的文件。
(4)vsim -coverage -voptargs="+acc" -t ns test //仿真命令,注意后面的参数必须为camera_tb.v文件中的模块名
(5)addwave * //将所有模块waveform.dump出来
(6)addwavesim:
/test/t/M2/Reg_out //将模块Reg_out中的waveform.dump出来
(7)addwave/camera_tb/*//该命令的作用是将testbench文件camera_tb.v中模块camera_tb下所有的信号变量加到波形文件中去,注意在“*”前要加空格。
这时候你也可以看到wave文件被打开。
当然也可以单个信号的添加,例如添加时钟:
addwaveclk等等。
(8)run2000 //该命令的作用是运行2000个单位时间的仿真,也可以用run–all命令来一直仿真下去。
(9)delete wave /test/i//删除文件
(10)vopt优化设计
3.2.2仿真命令参数
(1)+incdir+:
如:
vlog+incdir+YOUR_SOURCE_PATH foo.v
+incdir+YOUR_SOURCE_PATH 选项是指在verilog文件中出现`include"xxx.v"时,包含文件的搜索路径。
缺省是搜索当前路径,然后是YOUR_SOURCE_PATH 指定的路径。
(2) +define+:
+define+
`define
用户可以指定多个宏定义,如下:
vlog+define+one=r1+two=r2+three=r3test.v
命令行的宏定义会覆盖在源文件中用`define定义的相同名字的宏定义
如:
vsim-c-lvsim.log-do./YourDo.do-L./workwork.foo
-c选项让vsim工作在commandline模式;
-l选项是输出log文件到vsim.log;
-do选项是开始仿真后运行tcl脚本文件;
-L选项是指定工作逻辑库;
work.foo是仿真的toplevelmodule。
3.2.2SVA断言仿真命令
(1)vlog -sv a.v
(2)vsim -assertdebug test
(3)view assertions
(4)vsim -assertdebug ScaleBlock_tf -L xilinxcorelib_ver -L unisims_ver //加载xilinxlib库
3.3QuestaSim的tcl命令行操作过程
1.打开QuestaSim/ModelSim软件,在命令行窗口输入cd{/仿真路径};
2.sourceTCL文件;
3.输入verify_rtl_onlytestcase_name,开始RTL仿真;
4.在Wave窗口添加需要查看的波形信号
5.保存波形,File->SaveFormat->wave.do,保存波形的好处是下次修改代码,再次仿真之后直接把经常Debug的那些信号线直接全部加载到波形窗口,提高Debug效率。
6.仿真完,修改其他仿真CASE直接在verify_rtl_only.tcl修改,source完之后,然后直接在命令窗口输入rrun。
7.修改完RTL代码之后,需要verify_rtl_onlytestcase_name再次编译代码,然后再跑rrun。
四.ModelSim用户手册
关于ModelSim/QuestaSim的详细使用方法参考Manual。
五.Tcl脚本使用指南
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ModelSim 入门 指导 答辩