澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

采纳do文件格局张开modelsim仿真,modelsim怎样利用

  对于modelsim进行虚假,能够通过GUI来进展虚伪,当然尤为便捷的章程能够动用TCL脚本文件举行快速仿真。

比喻的工程是3个加法器,待测试效率模块是add.v,测试激励是tb_add.v,do文件是tb.do

本章大家介绍仿真境况搭建是基于Modelsim SE的。Modelsim有广大学本科子,比如说Modelsim-Altera,可是作者依然建议大家使用Modelsim-SE,Modelsim-Altera实际是对准Altera 的OEM版本,它预先将Altera的一部分IP核仿真库加多到了工具中,但效益上有点精减。而Modelsim-SE必要团结手动增多那个仿真库,可是意义更全,而且工作中,技术员更赞成用SE版本,因为从此的FPGA开垦中大家会触发更加多别的店家的FPGA,举个例子Xilinx、Lattice的,蒙受那几个FPGA时,我们1致须要将她们的IP核的仿真库增加到Modelsim 中。

率先,作者并不欣赏半自动的一路仿真,宁愿花一些岁月写轻易的本子。

  Modelsim采取TCL脚本文件仿真的切实流程如下所示:

下边直接附上主要步骤:

1.壹.一.假冒伪造低劣基本概念

FPGA的虚假实际便是二个注明布署的进程,验证在“模拟的输入”的情状下,设计文本的输出是不是和我们意在是均等的。这里的“模拟的输入”正是“测试激励”,设计文本正是待测设计,最后经过对出口结果的辨析来验证布署的不易。那就结成了虚假的四个基本组成都部队分:测试激励(Test_bench)、待测设计(DUT)和尾声结出的输出验证。

图片 1

       下面介绍恐怕还是多少不切合实际,大家通过二个简单的虚假例子来介绍仿真中的各类部分。大家开荒大家的例程《0五_clk_div_even》。

       待测设计(DUT):首先看src文件夹下的clk_div_even.v正是我们待测设计(DUT)。那么些相比好通晓,便是大家设计的模块。那是一个偶数分频的事例,每一次计数从0-肆,计数陆回,计数器clk_div_cnt会清零一次,同期输出分频功率信号o_clk_div翻转一遍,那样每三个石英钟周期,输出非实信号都会翻转贰回,1一个石英钟周期后又上涨到开首状态,使得出口确定性信号1贰分频。这里大家要求额外关怀一下以此模块的输入和输出,输入今后是大家激昂非确定性信号进来的地点。

1.  module clk_div_even

2.      (

3.          input                  i_clk        , //模块输入时钟 ,50mhz

4.          input                  i_rst_n      ,    //重新恢复生机设置实信号,低电平有效

5.          outputreg             o_clk_div         //偶数分频输出

6.      );

7.      

8.      parameter        DIV_EVEN      =10  ;   //13分频,输入50MHz,输出频率为五Mhz

9.      reg    [3:0]clk_div_cnt           ;   //分频计数器

10.//-------------------------------------------------------------------

1一.//  分频计数器,每一趟计数到N-一时归零

12.//-------------------------------------------------------------------

13.    always @ (posedge i_clk ornegedge i_rst_n)

14.    begin

15.        if(!i_rst_n)

16.            clk_div_cnt  <=4'd0;  

17.        else    if(clk_div_cnt  ==DIV_EVEN/2-1)

18.            clk_div_cnt  <=4'd0;  

19.        else  

20.            clk_div_cnt  <=clk_div_cnt      4'd1;                              

21.    end

22.//-------------------------------------------------------------------

贰三.//  分频计数器,每回计数N/2-一时,输出分频功率信号翻转

24.//-------------------------------------------------------------------    

25.    always @ (posedge i_clk ornegedge i_rst_n)

26.    begin

27.        if(!i_rst_n)

28.            o_clk_div  <=1'b0;  

29.        else    if(clk_div_cnt  ==DIV_EVEN/2-1)

30.            o_clk_div  <=~o_clk_div;

31.    end   

32.endmodule

测试激励(Testbench):Testbench是FPGA仿真的根本,Testbench能够知晓为四个激起发生器。大家能够旁观我们的待测设计的输入是i_clk和i_rst_n,实际在开拓板上,板子上的晶振输出50MHz激励机械钟实信号给FPGA,一样电路中的重新载入参数电路给FPGA提供了i_rst_n的鼓舞实信号。在假冒伪造低劣进度中,Testbench就代替了实在的电路,通过Verilog模拟完毕那些外部电路的激励数字信号,提必要DUT,从而通过输出验证安插。工程目录的sim文件夹下的tb_clk_div_even.v 正是大家早已编写制定好的Testbench。如下正是叁个基本Testbench的设计。

图片 2

上边从上海教室所示八个部分介绍Testbench基本写法。

1、`timescale 一ns/1ps 决定整个仿真中的时间单位消息,在文书中此外关于时间的音信都以依附此的,一ns象征仿真中的基本时间单位,一ps则象征仿真精度能够高达壹ps。比如 #十.00伍象征的就是延时拾.00伍ns。实际仿真中,精度是足以操纵到0.00五ns的,即5ps。

2、tb_clk_div_even() 是事实上testbench的称号,同样用module定义,不过注意testbenc是没有端口描述的,那与大家待测文件DUT是不雷同的。

叁、激励非随机信号和输出数字信号的定义,细心的校友应该能够看来,激励能量信号正是我们DUT文件的输入,输出能量信号也正是大家DUT文件的输出。分化的是在Testbench中,大家将激起实信号定义为reg类型,输出复信号定义为了wire类型。

四、第伍有的正是产生激情实信号,具体详尽达成我们就不介绍了,大家能够阅读大家的文书档案《Testbench常用语法及技能》,阅读之后那一个地方就很轻松明白了。

5、最终壹有的是待测设计的实例化,在FPGA设计中,模块的实例化就象是C语言中的函数调用,大家在其余模块中调用当前模块时,就需求以实例化的点子来实现。不相同的是,Verilog文件模块实例化时,大家供给注明每三个端口实信号。在我们规划的Testbench中,通过模块实例化,将我们的振作时限信号最后传递给了待测设计文本。

输出验证:下图是我们仿真的最终输出的波形文件,可以见见输出时限信号o_clk_div是输入复信号i_clk的10分频。

图片 3

最后大家总结全体仿真进度中,种种部分之间的关系,如下图。

图片 4

1.先构造建设友好的仿真文件夹sim,用于存放tb和呼应的本子以及仿真生成的废物,如下图。

图片 5图片 6

(1)首先新建文件夹,如sim_add,在该文件夹下再新建二个文件夹,分别是:sim、tb、src

一.一.二.  起家Modelsim仿真工程

本节大家介绍如何创立Modelsim仿真工程,明白Modelsim仿真工具的采纳。

率先步:展开Modelsim SE,点击菜单栏“File—>New—>Project”,筹算新建筑工程程。

图片 7

其次步:弹出“Create Project”对话框,按下图填写仿真工程名称,以及工程的积攒路线,以及暗许库的的名目,这里暗许库名叫“work”,大家平日叫作专门的工作库。设置好后点击OK。

图片 8

此处介绍一下库的概念,即library。库是Modelsim仿真的载体,Modelsim会将冒牌工程中的设计文本(DUT)和激情文件(Testbench)的编写翻译(Compile)结果存放在work库中,在大家新建筑工程程的时候就能带着生成贰个work库,如下图在Modelsim专门的职业区,选用Library选项卡,大家能够看出变化的work库,此时work库是空的,因为大家还从未增添并虚要是计文本和激情文件。

图片 9

其三步:新建或加上设计文本,这里大家早已写好的testbench和待测模块,所以选用直接抬高已存在文件就可以。

图片 10

第四步:依次增添testbench和待测模块文件。

图片 11

第5步:编写翻译我们的DUT和Testbench文件,如下图在做事区域接纳Project选项卡,右键选拔Compile—>Compile All,编写翻译全体。

图片 12

 

第5步:切回到Library,此时再看work库就不是空的了,workCurry的clk_div_even和tb_clk_div_even分别是tb_clk_div_even.v(Testbench)和clk_div_even.v(DUT)的编写翻译结果。选中Testbench仿真结果tb_clk_div_even,右键—>Simulate without Optimization,运转无优化仿真。

图片 13

第十步:弹出仿真波形窗口(wave窗口),不过窗口内尚未其他复信号波形,工作区域多了1个sim选项卡,进入sim选项页,可以观望仿真实例clk_div_even和tb_clk_div_even。选用相应的实例,右键—>add wave,增添功率信号到wave窗口。

图片 14

第7步:切到wave 窗口,如下图,设置仿真运维时刻为十0us,那些时间依照具体陈设所需时日来支配,再点击旁边的图片 15,运行仿真。那样我们就能够知见输出的波形时限信号了,从而证实安顿的不错。

图片 16

图片 17

 

sim:modelsim的工程文件存放,如tb.do

1.一.三.  行使do文件实行Modelsim仿真

上壹节大家介绍了经过Modelsim创立仿真工程的秘技,可是这种艺术我们供给使用界面操作,那样会很棘手很辛勤。这里大家介绍一种高效的艺术,通过do文件快捷搭建仿真处境,只须要双击批管理公事modelsim_run.bat,就足以活动调用Modelsim,并自动达成对Testbench和待验证布置文本的编译和虚伪,并且能够活动就要阅览的频域信号增加到wave窗口。

首先打开“0二_Project_Examples5_clk_div_evensim”文件夹,能够见见如下文件。

图片 18

我们根本介绍一下前四个文件,最终一个是大家的testbench:

modelsim_run.bat文件:那是三个批管理公事,里面就1行“modelsim -do sim.do”,那是一条DOS命令,意思正是调用Modelsim工具,并在Modelsim工具中实施sim.do那么些文件。

sim.do:do文件是由tcl脚本语言编写的,这么些参谋例程中的do文件是最基本的tcl脚本语言。上边介绍一下生死攸关脚本语言的用法。以下是do文件的剧情。

1.  vlib work       

2.  vlog  ../sim/*.v

3.  vlog  ../src/*.v

4.  vsim-t ns -novopt notimingchecks  work.tb_clk_div_even 

5.  radix hex

6.  addwave -position insertpoint sim:/tb_clk_div_even/clk_div_even_inst/*

7.  run -all

vlib work:建构work库,相当于在上一节中新建工程时所生成的work库,中期大家编写翻译的结果新闻寄存到work库中。

vlog ../sim/*.v:vlog也正是modelsim工具中的compile,“../sim/*.v ”表示编写翻译0伍_clk_div_evensim路径下有所的verilog文件。vlog ../src/*.v代表编译05_clk_div_even /src/路线下的具备verilog文件。

vsim -t  ns  -novopt   notimingchecks  work.tb_clk_div_even:编写翻译完毕有着verilog文件后,就要开动仿真了,vsim正是运营仿真效用,vsim后边有好些个种点词,这里大约说Bellamy(Bellamy)下,-t表示仿真时间单位为ns,-novopt代表仿真时无优化, notimingchecks表示无时序检查,work.tb_clk_div_even表示对work库中的tb_clk_div_even进行虚假,实际也便是在分界面操作时,张开work库,右键—>Simulate without Optimization,运营仿真。

radix hex :表示要增加wave窗口的时域信号,以1陆进制的突显。

add wave–position  insertpoint  sim:/tb_clk_div_even/clk_div_even_inst/*:表示将clk_div_even_inst中的全部复信号增多到wave窗口中去,施行那句将来,大家每一趟仿真时,就不用每趟都手动去丰盛仿真波形了。但是那句话实际是Modelsim生成的,没有必要大家和衷共济编写。最开始我们写的do文件是不蕴涵那条语句的,当大家运维到如下图状态时,选取要增加的复信号,右键—>add wave后,上边包车型大巴本子窗口会弹出相应操作的tcl脚本语句。那样大家把那条语句赋值到大家的do文件中就能够。第一回再调用sim.do文件时,就绝不再手动增多波形了。

图片 19

run –all :  运维全经过。当然也得以运作一段时间。run 10us 意味着运转10us。

调节这么些最宗旨的tcl脚本,使用do文件仿真会为大家节省数不清时日。后续的教程里大家都会私下认可以这种措施开始展览虚假。当然这里只是介绍了最基本的虚伪脚本语言,以往我们仿真时也许还应该有第壹方的IP核文件,如altera的PLL、FIFO、RAM等急需加上到假冒伪造低劣用例中,这几个大家前边在介绍IP核使用时会给大家介绍怎么着行使do文件仿真含有IP核的宏图。

明天大家能够感受一下do文件仿真所用的流年,双击“modelsim_run.bat”,就能够运营仿真。

起点为知笔记(Wiz)

2.编写翻译库是必须的,如下以lattice的ECP三为例,当中增添了DDENCORE、Frame_buffer、pll等IP。

图片 20     具体的操作步骤如下:

tb:测试激励文件存放,如tb_add.v

为了可移植性的造福,小编将相应的库拷贝到了团结内定的公文夹sim/lib下,将ECP三的器件库放到里面,如下图。

  1. 在拓展modelsim仿真在此以前应先在工程目录下新建贰个文件夹,名称放肆,这里小编设置为sim文件。
  2. 张开modelsim,然后新建二个工程,file—new—-project,将虚假文件路线放置到sim文件中,注意,整个路线不要有中文路线,注释的文字最佳是英文,下边为了验证选择普通话注释。
  3. 在sim文件中新建2个run.do文件,能够先新建3个.txt文件,然后修改对应的后缀,改成.do文件就可以。
  4. 开发run.do文件,然后在里面加多如下的代码:

    图片 21

     

    图片 22

    上述是依据相比较老实的写法的实行的虚假文件.do的编写,当然也能够简化一下写法,具体操作如下所示:

    quit -sim

    .main clear

    vlib work

    vlog ./xxx.v

    vlog ./xxx_tb.v

    vsim -voptargs= acc    work.xxx            #注意这里的.xx是xxx_tb.v文件中的模块名称,那条语句的意趣是开始展览能量信号不优化仿真

    其他和上海体育场所写法壹致,注意./和../的差距,./是当前目录,当前目录指的是sim那几个文件,因为modelsim营造的仿真工程在这几个目录下,所以统称为当前目录,不在sim文件下的其余文件须求用到./../,也等于从当前目录往上翻,然后找到相应的文本夹。

src:待测试的模块代码(*.v、仿真库文件.v、IP模块文件.v),如add.v

图片 23

    图片 24     注意二三行是进展的分割窗建构,二五行是对源文件中的全部复信号的假冒伪造低劣。最终仿真的波形如下所示:

里面倘诺工程里带有IP的宏图,则src文件夹里还索要仿真库文件和IP模块文件

 

图片 25

继之编写do文件,存放在sim文件夹下,一般do文件都写些如下的操作:

三.接下来正是写脚本(因IP存放相对地方不等同,脚本则不等同),先将写好的台本贴出来,然后逐一解释,如下图ddr3_frame_buffer.do和ddr3_frame_buffer.bat。

任何详细具体内容请查看博客:http://www.raymontec.com/modelsim如何使用tcl脚本来写编译文件/

vlib work
vmap work work

vlog -novopt -incr -work work "../tb/tb_add.v"
vlog -novopt -incr -work work "../src/add.v"

vsim -novopt work.tb_add

add wave -noupdate /tb_add/clk
add wave -noupdate /tb_add/rst_n
add wave -noupdate -hex /tb_add/a1
add wave -noupdate -hex /tb_add/a2
add wave -noupdate -hex /tb_add/out

run -all

图片 26

此后进行通用时,需求修改的几句主若是以下几句:

 

编写翻译相关文件:vlog -novopt -incr -work work "../tb/tb_add.v"      vlog -novopt -incr -work work "../src/add.v"

图片 27

虚假测试激励:vsim -novopt work.tb_add

图ddr3_frame_buffer.bat

加多时域信号波形:add wave -noupdate /tb_add/clk           add wave -noupdate /tb_add/rst_n  

图ddr3_frame_buffer.bat中得以看到任何核心部件的最近文件夹是sim(那几个做虚假文件涉及的时候一定要专注),图ddr3_frame_buffer.bat的脚本很简短,不啰嗦。

*                   *add wave -noupdate -hex /tb_add/a1    add wave -noupdate -hex /tb_add/a2 

图ddr3_frame_buffer.do,因为眼前文件夹是sim,tb.v又在sim下,所以vlog     ./tb.v编写翻译当前文件夹下的tb.v,如下图所示。

                   add wave -noupdate -hex /tb_add/out 

图片 28

能够增进本人供给观察的波浪功率信号,那个很有益,省去了时域信号查找的麻烦

图片 29

末段张开modelsim,在File/Change Directory下内定仿真工程的公文夹地方,如x:/sim_add/sim下即可。

 

 图片 30

lattice的库在lib的ecp3和pmi下,所以vlog     ./lib/ecp3/*.v和./lib/pmi/*.v也很刚强了。

要么在Tcl框中向来输入cd命令,如下图所示:

接下去编写翻译本身写的.V,vlog  ./../scr/*.v。

图片 31

下一场编写翻译IP的实业,调用了DD汉兰达、Frame_buffer、pll,所以他们仿真模型的实业也得编写翻译。

随即在Tcl框里输入do *.do就可以进展虚伪

vlog  ./../pll/pll.v

vlog  ./../frame_buffer/frame_buffer_beh.v

那两句正是编译Frame_buffer和pll的虚假模型的实业。

 

DDSportage就向来不及此轻巧了,因为DD福特Explorer实体里面还包含了诸多事物

 

vlog  ./../ecp3_ddr3/ecp3_ddr3_beh.v

 

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

 

vlog     ./../ecp3_ddr3/ddr_p_eval/models/ecp3/*.v

 

看到工程的顶层包蕴了`采纳do文件格局张开modelsim仿真,modelsim怎样利用tcl脚本来写编写翻译文件。include "ddr3_sdram_mem_params.v",他是指工程的相对于src作为当前路径,即指的是src文件夹为当下文件夹,如下图src下有"ddr叁_sdram_mem_params.v"所以在工程编写翻译的时候从不报错。

图片 32

 

图片 33

但是大家在编写翻译仿真DDHummerH二仿真模型实体ecp叁_ddr3_beh.v

的时候,里面未有去涵盖参数宏定义的文件ddr叁_sdram_mem_params.v,如下图

图片 34

 

那样自然会报错的,化解的办法有八个,第3将ddr3_sdram_mem_params.v包含在ecp3_ddr3_beh.v上边,然则包涵的时候提到路线一定要留心,仿真钦定的近日文件夹是sim,所以关联路线应该是,如下图。

`include "./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/params/ddr3_sdram_mem_params.v"

图片 35

 

还从未大功告成,ecp叁_ddr3_beh.v上面还隐含了别的虚假实体,也要编写翻译

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

要编写翻译哪些东西,东西从哪个地方来???看看本人的工程就明白(首先本身要有限帮衬自身的工程在diamond下能够编写翻译通过),看着团结工程架构写脚本是最快的,以上脚本的具备手续都以根据工程架构写的,工程架构如下图

图片 36

好玩的事上海体育地方加上脚本

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

vlog     ./../ecp3_ddr3/ddr_p_eval/models/ecp3/*.v

再有一种格局正是基于给出生成IP目录下交给的.do脚本来修改,这种艺术相对繁琐,不过也值得仿照效法,如下图是自动生成的脚本。

图片 37

 

迄今整个工程所急需的事物就全了,能够手舞足蹈的让工程仿真跑起来了。

 

如有疑问请联系QQ:825972玖二5

 

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:采纳do文件格局张开modelsim仿真,modelsim怎样利用