zoukankan      html  css  js  c++  java
  • 【翻译】ModelSim指南 VI (ModelSim)(Verilog)(Digital Logic)

    8

    自动仿真

    简介

    前面的课程主要讲使用ModelSim的交互模式:通过图形界面或主窗口的命令行一条条的执行单一的命令。当需要完成重复的任务时,可用DO文件提高效率。

    DO文件是一次执行多条命令的脚本。这个脚本可以像带有相关参数的一系列ModelSim命令一样简单,或者是带有变量,执行条件等等的Tcl程序。可在GUI里或系统命令提示符后执行Do文件。

    注意:

    本课假设你已经添加<install_dir>/modeltech/<platform>到你的环境变量的PATH。否则,要指定工具(如,vlib,vmap, vlog,vcom,和vsim)的绝对路径。

    扩展阅读

    用户手册:Tcl and Macros ( DO Files )。

    Practical Programming in Tcl and Tk, Brent B. Welch, Copyright 1997

    创建一个简单的DO文件

    创建DO文件就像在文本文件里输入命令一样。或者,可保存主窗口的transcript作为一个DO 文件。本练习将用在主窗口transcript输入的命令来创建一个DO文件以添加信号到波形窗口,添加激励,然后仿真。

    1. 加载test_counter设计单元。

    a) 启动ModelSim。

    b) 切换目录至在基本仿真那课创建的目录。

    c) 输入vsim test_counter来加载设计单元。

    2. 输入命令给波形窗口添加信号,激励信号,然后运行仿真。

    选择File > New > Source > Do来创建一个新的DO文件。

    在源码窗口输入以下命令:

    add wave count

    add wave clk

    add wave reset

    force –freeze clk 0 0, 1 {50 ns} –r 100

    force reset 1

    run 100

    force reset 0

    run 300

    force reset 1

    run 400

    force reset 0

    run 200

    3. 保存文件。

    a) 选择File > Save As。

    b) 在File name栏输入sim.do并保存到当前目录。

    4. 再次加载仿真并使用DO文件。

    a) 在VSIM>后输入quit –sim。

    b) 在ModelSim>后输入vsim test_counter。

    c) 在VSIM>后输入do sim.do。

    ModelSim执行保存的命令并在波形窗口生成波形。

    5. 当完成本练习,选择File > Quit退出ModelSim。

    在命令行模式运行

    1. 创建一个新目录并拷贝文件。

    开始本练习前,创建一个新目录,并拷贝以下文件:

    l /<install_dir>/examples/tutorials/verilog/automation/counter.v

    l /<install_dir>/examples/tutorials/verilog/automation/stim.do

    2. 创建一个新的设计库并编译源文件。

    在系统提示符后输入以下命令。

    a) 输入vlib work。

    b) 输入vlog counter.v。

    3. 创建一个DO文件。

    a) 打开文本编辑器。

    b) 输入以下内容:

    # list all signals in decimal format

    add list –decimal *

    # read in stimulus

    do stim.do

    # output results

    write list counter.lst

    #quit the simulation

    quit –f

    c) 把文件命名为sim.do,然后保存在当前文件夹。

    4. 运行批处理仿真

    a) 在提示符后输入以下命令:

    vsim –c –do sim.do counter –wlf counter.wlf

    这里-c表示不打开GUI。-wlf保存仿真结果为一个WLF文件。调试时可在GUI查看仿真结果。

    5. 查看输出列表。

    a) 打开counter.lst并查看仿真结果。类似下图:

    clip_image002

    6. 在GUI下查看结果。

    如果在counter.wlf保存了仿真结果,就可在GUI下通过-view参数查看。

    注意:

    确定你的环境变量的PATH设置的路径为当前ModelSim的路径。

    a) 在系统提示符后输入vsim –view counter.wlf。

    打开GUI和一个名为“counter”资料组标签(图8-1)。

    clip_image004

    b) 右击counter实例并选择Add > To Wave > All items in region。

    波形窗口显示波形。

    7. 当查看完结果。选择File > Quit关闭ModelSim。

    在仿真器里使用Tcl

    前面的练习的DO文件只使用了ModelSim的命令。但是,DO文件实质上是Tcl脚本。可以包含很多Tcl结构,比如程序,条件运算符,数学和三角函数,正则表达式等等。

    本练习创建一个Tcl脚本,用来识别信号的确定值,如果存在,在波形窗口放置标签。标签可将波形窗口的滑动和放大区域记录下来。

    1. 创建脚本。

    a) 在文本编辑器,新建一个文件并输入以下行:

    proc add_wave_zoom {stim num} {

    echo “Bookmaking wave $num”

    bookmark add wave “bk$num” “[expr $stime – 50] [expr $stime +

    100]” 0

    }

    这些命令的作用:

    l 创建一个名为“add_wave_zoom”的程序,它有stime和num两个参数。

    l 从当前仿真时间的前50个单位时间到后100个单位时间的范围创建一个书签。

    b) 在脚本末添加以下行:

    add wave –r /*

    when {clk’event and clk=”1”}{

    echo “Count is [xa count]”

    if {[examine count]==”00100111”}{

    add wave_zoom $now 1

    } elseif {[examine count]==”01000111”}{

    add_wave_zoom $now 2

    }

    }

    这些命令的作用:

    l 给波形窗口添加所有的信号。

    l 使用when语句识别clk跳变为1的时刻。

    l 在这些跳变检测count的值,如果它是某个确定值,添加一个书签。

    c) 将这个脚本以”add_bkmrk.do”为名存到在基本仿真那课创建的目录里。

    2. 加载test_counter设计单元。

    a) 启动ModelSim。

    b) 选择File > Change Directory 切换至上面第一步保存DO文件的目录。

    c) 在QuestaSim>后输入vsim test_counter

    3. 执行DO文件并运行设计。

    a) 在VSIM>后输入do add_bkmrk.do。

    b) 在VSIM>后输入run 1500 ns

    仿真运行,DO文件创建两个书签。

    c) 如果波形窗口停靠在主窗口,激活它,然后选择Wave > Bookmarks >bk1。如果那个窗口独立出来了,选择View > Bookmarks > bk1.

    查看波形窗口,放大并滑到count是00100111的时刻。

    同样试试bk2。

    本课小结

    本课到此结束。

    1. 选择File > Quit关闭ModelSim.

  • 相关阅读:
    解决“google快照无法打开”的简单而有效的方法~
    在Struts2里面嵌入Spring
    HDU
    设计模式大总结(二)
    Node.js入门笔记
    草图检索和识别[开源]
    2019-10-31-VisualStudio-断点调试详解
    2019-10-31-VisualStudio-断点调试详解
    2019-9-2-C#-设计模式-责任链
    2019-9-2-C#-设计模式-责任链
  • 原文地址:https://www.cnblogs.com/halflife/p/1978464.html
Copyright © 2011-2022 走看看