modelsim仿真小结.docx

上传人:b****2 文档编号:24500782 上传时间:2023-05-28 格式:DOCX 页数:20 大小:1.38MB
下载 相关 举报
modelsim仿真小结.docx_第1页
第1页 / 共20页
modelsim仿真小结.docx_第2页
第2页 / 共20页
modelsim仿真小结.docx_第3页
第3页 / 共20页
modelsim仿真小结.docx_第4页
第4页 / 共20页
modelsim仿真小结.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

modelsim仿真小结.docx

《modelsim仿真小结.docx》由会员分享,可在线阅读,更多相关《modelsim仿真小结.docx(20页珍藏版)》请在冰豆网上搜索。

modelsim仿真小结.docx

modelsim仿真小结

Modelsim仿真小结

Modelsim的基本仿真流程大致分以下几个步骤:

建库、编译工程、前后仿真、调试等。

Modelsim仿真既可以在modelsim界面操作,也可以用do文件实现,这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。

1.建库

建库包括Altera库和Xilinx库,同时都包括Verilog和VHDL。

这里只建了Verilog库,VHDL和Verilog步骤相同。

对于Altera库主要包括lpm元件库、Mega_Function库atera_mf、altera原语库altera_primitive和各器件系列模型库。

前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。

Altera库创建和编译步骤如下:

a)在Modelsim安装目录下新建文件夹,命名altera_lib,以存放编译后的库文件,可以在altera_lib下新建Verilog和VHDL两个子文件夹,分别存放Verilog和VHDL库。

b)打开Modelsim,新建Library,file->new->library..

c)如下图,创建lpm库,路径E:

\modeltech_10.1a\altera_lib\Verilog\lpm

d)添加库文件,并编译,compile->compile…,出现compilesourcefiles窗口,library指定到lpm下,查找范围,选quartus安装目录下…eda\sim_lib目录里的仿真原型文件:

220model.v,点compile,点done。

到此,lpm库建立完毕。

e)同理,建立altera_mf库添加altera_mf.v,建立primitive库添加altera_primitive.v

建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的xxx_atoms.v。

这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。

f)修改modelsim.ini文件,为的是让modelsim能自动map到已经编译的这些库上。

先去掉只读属性,在[Library]和[vcom]之间加上:

库名=库路径[绝对路径或者相对路径],相对路径是相对于modelsim安装路径,modelsim安装路径用$MODEL_TECH表示。

这里所有库都放在E:

\modeltech_10.1a\altera_lib下,库名是altera_lib,这里只添加一句:

altera_lib=E:

\modeltech_10.1a\altera_lib

g)保存退出,改回modelsim.ini只读属性,防止乱改。

至此altera库建立完毕。

Xlinx库创建和编译步骤如下:

相比altera,xilinx建库很方便。

xilinx有批处理命令,直接在console命令窗口,输入compxlib命令,调出编译库的窗口,先改掉modelsim安装目录下modelsim.ini只读属性。

设置如下图:

Next,选择语言:

Next,选择需要编译的器件:

Netx->next,选择输出路径,launchcompileprocess,等待编译完成。

完成后改回modelsim.ini只读属性。

至此xilinx库建立完毕。

2.编译工程

编译工程主要包括:

code、testbench、建立工程、建立工程库、映射、编译等。

Code主要有code思想和风格,在Verilog部分涉及。

Testbench,下边给出一个公用模板,基于这个方便修改,可以根据自己的习惯建一个temp_tb.v。

Modelsim界面编译工程:

a)新建工程:

打开modelsim,file->new->project..,指定工程名、路径、工程库。

b)Addexistingfile

c)Addtestbenchfile….

d)编译,compile–>complieall

e)编译语法查错,直到编译通过。

至此编译完毕。

3.功能和时序仿真

仿真是在编译的基础上,进行的功能调试,包括综合前功能仿真、综合后功能仿真和布局布线后时序仿真。

Modelsim界面综合前仿真:

a)指定顶层,开始仿真;simulation->startsimulation…,在work库中,指定testbench,ok,开始仿真。

b)查看仿真结果,打开wave,

信号,加入wave

c)运行,查看波形。

Run->runall….

至此,简单的modelsim界面综合前仿真介绍完毕。

Modelsim界面综合后仿真:

综合后仿真需要quartus综合后的网表文件(以altera为例),

a)综合后的网表的生成:

quartus工程名右键->setting–>EDAToolSetting,双击Simulation,选择EDA软件modelsim,选择输出网表路径,如图

b)Moresettings….将Generatenetlistforfunctionalsimulationonly设置为ON

c)保存,全编译。

d)检查一下…/modelsim/Psyth/source里面,可以发现,已经生成了一个*.vo文件。

这个就是需要的网表文件。

(VHDL的输出网表是*.vho后缀名的)

e)将vo文件添加到工程,指定TestBench文件top_tb.v,同前边一样进行仿真。

e)得到的仿真结果

Modelsim界面布局布线后仿真:

布局布线后仿真需要综合网表文件和添延时文件*.sdo(Verilog)或*_vhd.sdo(VHDL);

a)QuartusII里面设置重新把Generatenetlistforfunctionalsimulationonly设置成OFF。

b)指定延时文件

这里,region要为顶层文件在tb里的例化名。

c)运行,查看波形,波形带有延时

4.用tcl文件.do进行modelsim仿真

在modelsim中使用do文件是非常方便的进行仿真的一种方法,的项目比较大,特别是几个人分开做的时候,前后模块的联合仿真比较重要,查看的信号比较多,使用了do文件可以自动仿真,省去很多体力活。

下面是编写do文件的一般步骤:

a).quit-sim:

首先退出原来仿真的工程。

b).cd:

设置工作目录的路径,就是你所要建立的工作目录work要放在哪里。

c).vlibwork:

在工作目录下建立一个work目录,请注意不要用操作系统直接新建一个work的文件夹,因为用操作系统建立的work文件夹并没有modelsimSE自动生成的_info文件。

还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。

我们只自己新建的库一般放在work库前面建立。

d).vmapwork:

将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了)。

其他新建的库也要这样的方法映射。

e).vlog+acc–workwork“file_path/*.v”:

编译“file_path”目录下所有.v文件,并将其添加进工作库(work)中,包括IP生成的V文件也要编译的。

或者:

vlog-ftop_tb.f,top_tb.f是.v的列表文件。

编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。

在综合后仿真和布局布线后仿真的时候,这里添加综合后网表和tb即可。

VHDL用vcom编译。

对于xilinx工程在仿真的时候还需要用到一个文件,那就是glbl.v这个库文件。

它是存放在xilinx安装目录下,我们直接编译它并添加时工作库(work)就可以了。

特别需要说明的是,在仿真软核的时候,在XPS软件里点击simulation->generatesimulationhdlfiles会在工程目录中生成一个simulaton文件夹,这个文件夹里的东西就是软核仿真时所需要的仿真文件了。

所以我们需把simulaton里所以的v文件都编译一次,这样才能仿真软核。

f).vsim-Laltera_lib-novoptwork.top_tb :

这是没有调用IP Core时的仿真命令,注意后面的参数top_tb必须为Testbench中的模块名。

 布局布线后仿真是这里要指定延时文件,vsim-Laltera_lib-novopt-sdfmax/top_tb/top=top_v.sdowork.top_tb

g). dovawe.do运行添加wavetcl,这里可以给信号分组,添加颜色,设置波形属性等。

h).run–all设定运行时间,run1000ms等。

i).在do里可以用filecopy/filedelete来对临时文件进行操作。

至此,modelsim仿真总结完毕。

这里仅为了简单记录仿真方法和流程,旨在简单明了,对更深入的和更详细的有待进一步补充。

附件一、testbench模板

////////////////////////////////////////////////////////////////////////////////

//Company:

//Engineer:

//

//CreateDate:

//DesignName:

//ModuleName:

//TargetDevice:

//Toolversions:

//Description:

//

//Dependencies:

//

//Revision:

//

//AdditionalComments:

//

////////////////////////////////////////////////////////////////////////////////

`timescale1ns/1ps

moduletop_tb;

//*************************ParameterDeclarations******************************

parameterCLK_PERIOD=20;//clk=50Mhz

//************************InternalDeclarations***********************

//**************************RegisterDeclarations****************************

regclk;

regreset;

//********************************WireDeclarations**************************

//******************************MainBodyofCode***************************

//---------------------------------initialregdata---------------------------------

initial

begin

end

//----------GenerateReferenceClockinputtotb----------------

initial

begin

clk=1'b1;

end

always

#(CLK_PERIOD/2)clk=!

clk;

//---------------------------------Resets---------------------------------

initial

begin

rst_n=1'b1;

#(10*CLK_PERIOD)rst_n=1'b0;

#(100*CLK_PERIOD)rst_n=1'b1;

end

//-----------------------------DataTransfer---------------------------------

initial

begin

#(10*CLK_PERIOD);

@(negedgedata)

begin

end

end

//-----------------------------simulationend---------------------------------

initial

begin

#(10*CLK_PERIOD);

if()//endsign

begin

$display("-------TESTPASSED-------");

end

else

begin

$display("#######ERROR:

TESTFAILED!

#######");

end

$stop;

end

//------------------------InstantiateTOPmodule------------------------

top#

.parameter1

(1),//

.parameter2(0)//

top_inst

.a(a),

);

Endmodule

////////////////////////////////////////////////////////////////////////////////

附件二、do模板

////////////////////////////////////////////////////////////////////////////////

#!

/bin/bash

#thisbashshelldocumentisusedtoverilogprojectsimulation

#author:

iyoyoo

echo"*****************endpre-project********************************"

quit-sim

echo"*****************gotoworkdir********************************"

#cd/

#cdD:

/quartus/EP4CE15F/lcd/simulation

echo"*****************starttosetupworklib************************"

vlibwork

echo"*****************starttocompile******************************"

vlog-ftop_tb.f

echo"*****************setupreferencelibrary***********************"

vmapaltera_libE:

/modeltech_10.1a/altera_lib

echo"*****************deletpre-tempfiles*************************"

#filedelete../simulation/pika_ani.mif

#filedelete../simulation/modelsim/top_v.sdo

echo"*****************copytempfile*********************************"

#filecopy../source/pika_ani.mif../simulation/

#filecopy../simulation/modelsim/top_v.sdo../simulation/

echo"*****************starttosimulation**************************"

#-plinovas.dll---fordebussy

#-sdfmax/top_tb/top=top_v.sdo-----forpostsynthesissim

vsim-Laltera_lib-novoptwork.top_tb

echo"*****************addsignaltovawe**************************"

dovawe.do

echo"*****************starttorun******************************"

run-all

echo"*****************deletetempfiles***************************"

#filedelete../simulation/pika_ani.mif

#filedelete../simulation/modelsim/top_v.sdo

////////////////////////////////////////////////////////////////////////////////

附件三、file.f模板

////////////////////////////////////////////////////////////////////////////////

+licq_all+

+access+r

//../simulation/modelsim/top.vo-forpostsynthesissimulation

../source/top.v

../simulation/top_tb.v

+libext+vmd+.v

-y$QUARTUS_ROOTDIR/eda/sim_lib

////////////////////////////////////////////////////////////////////////////////

附件三、file.f模板

////////////////////////////////////////////////////////////////////////////////

viewsignalsstucturewave

onerror{resume}

quietlyWaveActivateNextPane{}0

#-colorGreenforallsignalisgreen

#-colorGreenBlueYellowPinkOrchidRedSalmonOrange

#top_tbgroup

addwave-itemcolorBlue-noupdate-expand-grouptop_tb-formatLogic-radixhexadecimal/top_tb/*

#subgroup

addwave-itemcolorGreen-noupdate-expand-groupsub-formatLogic-radixhexadecimal/top_tb/sub/*

TreeUpdate[SetDefaultTree]

WaveRestoreCursors{{Cursor1}{10000ns}0}

configurewave-namecolwidth364

configurewave-valuecolwidth100

configurewave-justifyvalueleft

configurewave-signalnamewidth0

configurewave-snapdistance10

configurewave-datasetprefix0

configurewave-rowmargin4

configurewave-childrowmargin2

configurewave-gridoffset0

configurewave-gridperiod1

configurewave-griddelta40

configurewave-timeline0

configurewave-timelineunitsps

update

WaveRestoreZoom{10000ns}{10000ns}

////////////////////////////////////////////////////////////////////////////////

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1