澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站使用do文件方式张开modelsim仿

2019-06-22 作者:www.8455.com   |   浏览(147)

  对于modelsim举行虚伪,能够经过GUI来拓展虚假,当然尤为急迅的办法能够运用TCL脚本文件举办快速仿真。

比如的工程是叁个加法器,待测试效能模块是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时,大家一致供给将她们的IP核的仿真库加多到Modelsim 中。

率先,小编并不爱好半机关的同步仿真,宁愿花一些光阴写轻便的本子。

  Modelsim接纳TCL脚本文件仿真的切实可行流程如下所示:

下边直接附上主要步骤:

1.1.1.假冒伪造低劣基本概念

FPGA的虚假实际便是三个证实安插的进度,验证在“模拟的输入”的景色下,设计文本的输出是还是不是和大家期待是同样的。这里的“模拟的输入”正是“测试激励”,设计文本正是待测设计,最后经过对出口结果的剖析来验证布置的科学。那就组成了仿真的两个主导组成都部队分:测试激励(Test_bench)、待测设计(DUT)和结尾结出的出口验证。

澳门新萄京官方网站 1

       上边介绍恐怕依旧有一些不切合实际,我们透过贰个简练的仿真例子来介绍仿真中的种种部分。大家开辟大家的例程《05_clk_div_even》。

       待测设计(DUT):首先看src文件夹下的clk_div_even.v正是大家待测设计(DUT)。这些相比较好精晓,正是大家规划的模块。那是一个偶数分频的事例,每趟计数从0-4,计数5次,计数器clk_div_cnt会清零一回,同有时候输出分频信号o_clk_div翻转三遍,那样每多个机械钟周期,输出功率信号都会翻转贰次,12个机械钟周期后又恢复生机到起来状态,使得出口能量信号10分频。这里大家必要特别关怀一下那几个模块的输入和出口,输入今后是大家振奋非确定性信号进来的地点。

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  ;   //10分频,输入50MHz,输出频率为5Mhz

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

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

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

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

13.    always @ (posedge i_clk ornegedge i_rst_n)

14.    begin

15.        澳门新萄京官方网站使用do文件方式张开modelsim仿真,modelsim怎么样利用tcl脚本来写编译文件。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.//-------------------------------------------------------------------

23.//  分频计数器,每趟计数N/2-1时,输出分频信号翻转

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

下边从上航海用体育地方所示5个部分介绍Testbench基本写法。

1、`timescale 1ns/1ps 决定整个仿真中的时间单位新闻,在文件中别的关于时间的新闻都以依赖此的,1ns象征仿真中的基本时间单位,1ps则代表仿真精度能够直达1ps。譬喻 #10.005象征的正是延时10.005ns。实际仿真中,精度是足以垄断(monopoly)到0.005ns的,即5ps。

2、tb_clk_div_even() 是实在testbench的名称,同样用module定义,不过注意testbenc是尚未端口描述的,那与我们待测文件DUT是不平等的。

3、激励复信号和出口复信号的概念,细心的同学应该能够观察,激励时域信号正是我们DUT文件的输入,输出非复信号相当于大家DUT文件的输出。不一致的是在Testbench中,大家将刺激时限信号定义为reg类型,输出非确定性信号定义为了wire类型。

4、第四片段正是发生激情复信号,具体详尽达成大家就不介绍了,大家能够阅读大家的文书档案《Testbench常用语法及技艺》,阅读之后那一个地点就很轻易理解了。

5、最后一片段是待测设计的实例化,在FPGA设计中,模块的实例化就像C语言中的函数调用,大家在别的模块中调用当前模块时,就需求以实例化的艺术来贯彻。差别的是,Verilog文件模块实例化时,大家须要表明每四个端口非信号。在大家设计的Testbench中,通过模块实例化,将我们的激发数字信号最后传递给了待测设计文本。

输出验证:下图是我们仿真的尾声输出的波形文件,能够看来输出连续信号o_clk_div是输入实信号i_clk的10分频。

澳门新萄京官方网站 3

最终大家总括全体仿真进度中,各种部分之间的关联,如下图。

澳门新萄京官方网站 4

1.先建构和谐的虚伪文件夹sim,用于存放tb和相应的脚本以及仿真生成的污物,如下图。

澳门新萄京官方网站 5澳门新萄京官方网站 6

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

1.1.2.  创立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

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

澳门新萄京官方网站 12

 

第六步:切回到Library,此时再看work库就不是空的了,work库里的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窗口),可是窗口内尚未其余频限信号波形,职业区域多了三个sim选项卡,进入sim选项页,能够阅览仿真实例clk_div_even和tb_clk_div_even。接纳相应的实例,右键—>add wave,加多时限信号到wave窗口。

澳门新萄京官方网站 14

第八步:切到wave 窗口,如下图,设置仿真运维时刻为100us,那么些时刻依照实际规划所需时日来决定,再点击旁边的澳门新萄京官方网站 15,运行仿真。那样大家就足以观看输出的波浪随机信号了,从而证实布置的不错。

澳门新萄京官方网站 16

澳门新萄京官方网站 17

 

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

1.1.3.  施用do文件实行Modelsim仿真

上一节我们介绍了通过Modelsim创建仿真工程的点子,不过这种艺术我们须要利用分界面操作,那样会很为难很麻烦。这里我们介绍一种高效的秘籍,通过do文件快捷搭建仿真景况,只须要双击批管理公事modelsim_run.bat,就足以自动调用Modelsim,并机关实现对Testbench和待验证陈设文本的编译和虚伪,并且能够自行就要观看的功率信号加多到wave窗口。

第一展开“02_Project_Examples5_clk_div_evensim”文件夹,可以看看如下文件。

澳门新萄京官方网站 18

咱俩第一介绍一下前五个公文,最终一个是大家的testbench:

modelsim_run.bat文件:那是一个批管理文件,里面就一行“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 ”表示编写翻译05_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(Aptamil)下,-t表示仿真时间单位为ns,-novopt代表仿真时无优化, notimingchecks表示无时序检查,work.tb_clk_div_even表示对work库中的tb_clk_div_even举行虚伪,实际约等于在分界面操作时,张开work库,右键—>Simulate without Optimization,运行仿真。

radix hex :表示要增添wave窗口的实信号,以16进制的展现。

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。

垄断(monopoly)那一个最中央的tcl脚本,使用do文件仿真会为大家节省数不胜数光阴。后续的科目里大家都会私下认可以这种办法进行虚伪。当然这里只是介绍了最基本的虚假脚本语言,今后大家仿真时或然还大概有第三方的IP核文件,如altera的PLL、FIFO、RAM等急需丰硕到虚假用例中,这个大家后边在介绍IP核使用时会给大家介绍怎样使用do文件仿真含有IP核的准备。

今日大家得以体验一下do文件仿真所用的日子,双击“modelsim_run.bat”,就能够运营仿真。

来自为知笔记(Wiz)

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

澳门新萄京官方网站 20     具体的操作步骤如下:

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

为了可移植性的惠及,我将相应的库拷贝到了谐和内定的文件夹sim/lib下,将ECP3的器件库放到里面,如下图。

  1. 在开始展览modelsim仿真在此以前应先在工程目录下新建一个文件夹,名称大肆,这里作者设置为sim文件。
  2. 开辟modelsim,然后新建二个工程,file—new—-project,将仿真文件路线放置到sim文件中,注意,整个路线不要有普通话路线,注释的文字最佳是英文,上边为了验证选用中文注释。
  3. 在sim文件中新建三个run.do文件,能够先新建二个.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     注意23行是拓展的分割窗建设构造,25行是对源文件中的全部时限信号的虚伪。最终仿真的波浪如下所示:

里头假诺工程里含有IP的统一计划,则src文件夹里还亟需仿真库文件和IP模块文件

 

澳门新萄京官方网站 25

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

3.接下来正是写脚本(因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的虚假模型的实业。

 

DD兰德翼虎就一贯不及此轻巧了,因为DD安德拉实体里面还包涵了无数事物

 

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

 

总的来看工程的顶层包涵了`include "ddr3_sdram_mem_params.v",他是指工程的相对于src作为当前路径,即指的是src文件夹为当下文件夹,如下图src下有"ddr3_sdram_mem_params.v"所以在工程编写翻译的时候从不报错。

澳门新萄京官方网站 32

 

澳门新萄京官方网站 33

可是我们在编写翻译仿真DD揽胜极光仿真模型实体ecp3_ddr3_beh.v

的时候,里面没有去涵盖参数宏定义的文件ddr3_sdram_mem_params.v,如下图

澳门新萄京官方网站 34

 

这么自然会报错的,化解的法子有四个,第一将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

 

还未有到位,ecp3_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:825972925

 

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站使用do文件方式张开modelsim仿

关键词: