zoukankan      html  css  js  c++  java
  • 【翻译】modelsim指南 I 之基本仿真(digital logic)

    Introduction

    本文将一步步实现以下基本仿真流程:

    1. 创建设计工作库
    2. 编译设计单元
    3. 加载设计
    4. 运行仿真

    本文用到的设计文件

    本文的范例是一个8位的二进制加法计数器和相关的测试文件。保存路径:

    Verilog-<install_dir>/examples/tutorials/verilog/basicSimulation/counter.v and tcounter.v

    相关阅读

    用户手册的章节:设计库、Verilog和SystemVerilog仿真。

    参考命令:vlib,vmap,vlog,vcom,view,run.

    创建设计工作库

    在你仿真前,必须先创建一个库并编译源码到这个库。

    1. 创建一个新目录并复制本文的设计文件。

           Copy counter.v 和tcounter.v

       2. 启动modelsim。

           a. windows下双击快捷方式启动,你将看到modelsim的欢迎对话框,单击Close.

           b. 选择File > Change Directory 指定到第一步创建的目录。

       3. 创建工作库。

           a. 选择File > New > Library.

               弹出一个对话框,可以指定库名等选项。如图1。

               001

               图 1 创建一个新库

           b. 在Library Name项输入work(如果它没有自动输入)。

           c. 单击OK.

              modelsim创建了一个目录work并写了一个名为_info的文件到这个目录。这个_info文件必须保持在       work文件夹以区分他是modelsim的库。不要从你的操作系统里修改这个文件夹里的内容;所有操作应该在modelsim里进行。

              modelsim也把work库添加到库窗口(图2)并记录库映射作为未来参考(modelsim.ini)。

              002

              图 2

    当你在第3步单击确定后,Transcript窗口显示以下内容:

    vlib work

    vmap work work

    这两行命令等于你的菜单操作。

    编译设计单元

    创建工作库后,接着就准备编译你的源文件。

    可以使用图形界面的菜单,也可以用命令行。

    1. 编译counter.v和tcounter.v.

           a. 选择Compile > Compile.打开编译源文件对话框(图3)。

           如果编译菜单选项不可用,你可能已经打开了一个工程。如果这样,通过激活库窗口并选择File > Close 关闭工程。

           b. 在编译源文件窗口选择counter.v和tcounter.v并单击Compile.文件被编译到work库。

           c. 当编译完成,单击Done.

           003

          图 3

         2. 查看编译的设计单元。

             a. 在库窗口,单击work前的’+’,你将看到2个设计单元(图4)。可以看到它们的类型和相关源文件的路径。

          004

          图 4

    加载设计

          1. 加载test_counter模块到仿真器。

             a. 在库窗口,单击work前的‘+’显示包含的文件。

             b. 双击test_counter.

                你也可以通过选择Simulate > Start Simulation加载设计。这将打开开始仿真对话框,选择Design标签,单击work前的‘+’,选择test_counter模块,然后单击OK(图5)。

             005

             图 5

            c. 当设计加载后,打开一个结构窗口(标签为sim)。这个窗口显示设计的结构层次(图6)。你可以通过单击每行前的‘+’或‘-’浏览设计。

            006 

           图 6

           另外,打开Objects窗口和Processes窗口(图7)。Objects窗口显示在Structure(sim)窗口里选择的区域的数据对象的当前值和名称。数据对象包含信号、网络、寄存器、没有在进程里声明的常量和变量、种类、参数。

           Processes窗口显示HDL进程列表:激活,区域内,设计和层次。设计查看模式是ESL(电子系统级)设计主要导航模式。这个窗口缺省显示你仿真的激活进程。

           007

           图 7

    执行仿真

    我们将要执行仿真。但在仿真之前,要打开波形窗口并添加信号。

    1. 打开波形窗口。

        a. 在命令行输入view wave.

           在主窗口的右边将打开波形窗口。调整合适的大小。

           你也可以用View > Wave菜单选项打开波形窗口。波形窗口只是View菜单下几个可用的调试窗口之一。

    2. 在波形窗口添加信号。

        a. 在Structure(sim)窗口,右击test_counter打开一个菜单。

        b. 选择Add > To Wave > All items in region(图8)。

           所有的信号被添加到波形窗口。

        008

        图 8

    3. 执行仿真

       a. 单击运行图标009

          仿真执行100ns(缺省仿真长度),波形将在波形窗口显示。

       b. 输入run 500在 VSIM> 提示符后。

          仿真将继续运行500ns(图9).

       010

       图 9

       c. 单击Run -All图标011

         仿真将继续运行直到你执行中断命令或者代码里的语句(比如$stop)。

       d. 单击中断图标012 停止仿真。

    设置断点和单步执行

    接下来,简要介绍modelsim环境的交互式调试特性。设置一个断点,执行仿真,单步执行和测试。断点设置在可执行行,导致红色的行号。

    1. 在源文件窗口打开counter.v.

         a. 选择View > Files打开文件窗口。

         b. 单击sim前的+,查看vsim.wlf的内容。

         c. 双击counter.v打开源文件。

    2. 在36行设置一个断点。

         a. 滑动到36行,在行标的右侧单击。一个红色的球出现在行标的右边(图10)表示已经设置了一个断点。

         013

         图 10

    3. 不使能、使能和删除断点

        a. 单击红色的球不使能断点。它将变成黑色的球。

        b. 单击黑色的球,使能断点。它将变成红色的球。

        c. 右击红球,选择Remove Breakpoint 36。

        d. 单击36行行标边重创建断点。

    4. 重启仿真。

        a. 单击Restart图标014 ,重新加载设计并重置仿真时间到0。

           重启对话框提供选项以保留设置(图11)。

        015

        图 11

        b. 单击重启对话框的Restart.

        c. 单击Run -All图标016

           仿真将运行到断点。当执行到断点,仿真停止,高亮显示并有一个蓝色箭头(图12),在文本信息窗口有中断信息。

        017

        图 12

        当到达一个断点,典型的查看信号值的方法有几种:

    •     在Objects窗口查看(图 13)

          020

          图 13

    • 把鼠标指向源文件窗口的变量,一个黄色的提示框出现,含有变量名和值。
    • 在源文件窗口高亮一个信号,参数,或者变量。右击,选择Examine,它的值将在Source Examine 窗口(图 14)。

         019

         图 14

    • 使用examine命令。

    5. 单步执行

        a. 在主窗口工具栏单击Step图标021

        试验:设置断点,使用Step , Step Over,和Continue Run 命令。

    要点

    在继续之前,需要结束当前仿真。

    1. 选择Simulate > End Simulation.
    2. 单击 Yes 退出仿真。

    Conlusion

    本文是quartus II 9.1 配套的modelsim 6.5b的指南之一。

    See also

    ModelSim Tutorial –Chapter 3 Basic Simulation

  • 相关阅读:
    Grunt jshint Warning: Path must be a string . Received null Use
    bootstrap滚动监视原理实现
    Bootstrap模态框原理分析及问题解决
    LeetCode54. 螺旋矩阵
    LeetCode53. 最大子序和
    mysql servers实现层拼写SQL
    easyUI 分页 获取页面
    excel导入功能
    easyUI遮罩
    uuid生成
  • 原文地址:https://www.cnblogs.com/halflife/p/1727477.html
Copyright © 2011-2022 走看看