如何用命令行的形式进行仿真

  • 一、写在前面
  • 二、如何使用命令行进行仿真
    • 2.1 vlib命令
    • 2.2 vmap命令(可选)
    • 2.3 vlog命令
    • 2.4 vopt命令(可选)
    • 2.5 vsim命令
    • 2.6 开始仿真
      • 2.6.1 add wave命令
      • 2.6.2 run命令
      • 2.6.3 其他命令
    • 2.7结束仿真
    • 2.8 总结
  • 三、do文件
    • 3.1 do文件案例
    • 3.2 运行do文件
    • 3.2.1 GUI形式运行.do文件
    • 3.2.2 命令行形式运行.do文件
    • 3.3.3 运行结果
  • 四、其他Modesim/Questasim使用技巧
  • 五、仿真工具的User Manual 下载
    • 5.1 Modesim User Manual下载
    • 5.2 Questasim User Manual下载

一、写在前面

Modesim/Questasim是Mentor公司用来仿真VHDL/Verilog/Systemverilog的EDA工具,因其可以运行在Windows系统下,同时与各类FPGA的开发平台有较好的适配,所以是很多数字IC或FPGA初学者第一次接触到的仿真工具,但是简体中文互联网上对Modesim/Questasim的使用技巧的归类与整理不够详细,也不够准确,因此创作本前缀为【Modesim/Questasim】的系列文章,对此工具的使用技巧进行整理与归纳总结

当然modesim/Questasim更多的是提供给FPGA/数字IC领域初学者的仿真工具,对于IC设计来说,真正工作环境使用到的更多的是VCS,也希望有志于从事数字IC领域工作的人员尽早地将环境转移到linux下的VCS上去进行熟悉

二、如何使用命令行进行仿真

本篇博客使用的设计文件和仿真文件依旧为【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真,其中包含一个有状态机的设计文件和一个仿真文件,有需要的读者可查看自行下载,本篇博客借助此设计与仿真文件进行命令行仿真的讲解。

2.1 vlib命令

打开Modesim/Questasim后,我们首先要在transcript中输入的命令是vlib命令,在我们正式开始仿真之前,我们需要一个libarary,目的是为了存储编译结果,对应的命令就是vlib,对应的GUI操作(图形化操作)是在主菜单上File > New > Library

vlib work

通过这个命令,我们创建了一个名为work的library来存储编译结果

2.2 vmap命令(可选)

第二个可以输入transcript的命令为vmap命令,目的是将映射逻辑库名到指定的目录

vmap <logical_name> <directory_pathname>

2.3 vlog命令

vlog命令是用来编译Verilog文件的命令,对应于GUI操作的Compile > Compile
假如使用的文件不是Verilog格式,我们也有可能会使用vcom和sccom命令,其中vcom是用来编译VHDL文件的命令sscom是用来编译System C格式文件的命令

vlog vcom sscom
verilog文件 vhdl文件 system c文件
vlog drink_machine_tb.v drink_machine.v

回车后Questasim会告诉我们编译的结果,如下图为例,Error:0,Warning:0,编译顺利通过。

2.4 vopt命令(可选)

vopt是用来优化仿真的命令,优化的目的是为了加快仿真,但是Modesim/Questasim的自动优化会使我们丢失掉信号波形,因此一般情况下我们不需要优化仿真,这个命令是不用输入的,这个命令对应的GUI操作Simulate > Design Optimization

2.5 vsim命令

当我们完成编译后, 就需要使用vsim命令来将所需的仿真文件加载进仿真器了,这个命令对应的GUI操作作为Simulate > Start Simulation

vsim -gui -novopt work.drink_machine_tb

-gui意为图形化仿真,-novopt意为不对波形进行优化,work为library的名字,drink_machine_tb为顶层模块名
通过这个命令,我们顺利的打开了GUI仿真窗口

2.6 开始仿真

将仿真文件装载进仿真器后,我们就可以开始仿真了,这个命令对应的GUI操作Simulate > Run

2.6.1 add wave命令

这个命令的主要作用是添加并设置波形

add wave drink_machine_tb/u1/*

add wave是添加波形的命令,drink_machine_tb是顶层模块名,通过u1一路向下延申,最后使用*来代表添加该级所有的信号,此操作过后,u1下面的所有信号都被添加到波形窗口中

2.6.2 run命令

这个命令的作用是进行一段时间仿真

run 100ns

当我们输入这个命令后,仿真进行了100ns,波形窗口出现了对应的波形

2.6.3 其他命令

命令 功能
bp 设置breakpoint
force 赋值命令
step 单步执行到下一个语句

2.7结束仿真

当我们进行完仿真需要退出时,可以使用如下的命令,仿真会自动结束

quit -sim

2.8 总结

功能 命令 示例 必要性
创建库 vlib vlib work 必须
映射库 vmap vmap work work 可选
优化 vopt none 可选
编译 vlog vlog drink_machine_tb.v drink_machine.v 必须
加载仿真 vsim vsim -gui -novopt work.drink_machine_tb 必须
添加信号 add wave add wave drink_machine_tb/u1/* 必须
控制仿真时间 run run 100ns 必须
退出仿真 quit -sim quit -sim 可选

三、do文件

我们也可以将以上的命令进行组合与挑选,写入.do文件,do文件是Modesim/Questasim可以识别的脚本文件

3.1 do文件案例

将以下的命令保存在文本文件中,后缀名改为“.do”放到设计仿真文件所在文件夹即可

## part 1: new lib
vlib work
vmap work work## part 2: load design
vlog drink_machine_tb.v drink_machine.v## part 3: sim design
vsim -novopt -gui work.drink_machine_tb## part 4: add wave
add wave drink_machine_tb/u1/*  ## part 5: run
run 100ns

3.2 运行do文件

3.2.1 GUI形式运行.do文件

依次选择File ——load——Macro File,最后选择所写.do文件即可

3.2.2 命令行形式运行.do文件

在transcript窗口键入以下命令,也可以开启脚本化仿真

do cmd.do

3.3.3 运行结果

Modesim/Questasim会按照脚本的内容一步一步的进行执行,新建工程,编译文件后,会加载100ns的波形

四、其他Modesim/Questasim使用技巧

如何在仿真窗口查看信号频率
如何设置“tab”键缩进数量
如何去除仿真时的信号前缀
如何设置一个清爽的仿真窗口
如何使用delta cycle来观察相同边沿的先后顺序
如何使用Modesim查看状态机状态跳转
如何用命令行的形式进行仿真及do脚本的使用

五、仿真工具的User Manual 下载

5.1 Modesim User Manual下载

点赞并关注作者,回复“Modesim”关键词即可获得下载链接

5.2 Questasim User Manual下载

点赞并关注作者,回复“Questasim”关键词即可获得下载链接
若是回复了没消息也可自取

如何用命令行的形式进行仿真及do脚本的使用(仿真工具使用技巧)【Modesim/Questasim】相关推荐

  1. 成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式

    真是一把心酸泪呐.在初始化本地仓库的时候失败.根据字面意思是权限变更.这让我想起来.前一段时间修改一个配置文件.由于权限不够,直接将这个盘的权限进行了更替. 1.报错信息 2.解决方法 或者你把文件权 ...

  2. 如何用命令行启动mysql_命令行方式启动mysql 如何用命令行启动mysql

    如何用命令行启动mysql,有时候,仅是简单的想在电脑上启动myql,当然如果用myql图形管理器也是可以的,比如avicate以及qlyog,本经验教你如何使用命令行启动myql. 如何用命令行进入 ...

  3. 怎么进入命令行操作mysql数据库_MySQL数据库之如何用命令行进入mysql具体操作步骤...

    本文主要向大家介绍了MySQL数据库之如何用命令行进入mysql具体操作步骤 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 如何用命令行进入mysql?最近无意在论坛上看到有朋 ...

  4. shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤

    shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤  作者:半块点心  出处:GIS动力站原 1.在dos提示符下执行: FOR /F "eol=; tokens=1,2,3, ...

  5. 命令行的形式运行php

    转自:http://www.cnblogs.com/myjavawork/articles/1869205.html 注意:在安装php时需要将php 的安装目录加到环境变量 PATH 中 (右击我的 ...

  6. 如何用命令行查看服务器型号,服务器查看内存命令行

    服务器查看内存命令行 内容精选 换一换 为了更有效地利用内存空间,提升Carbon查询效率,可以启用索引缓存服务器(IndexServer).IndexServer将索引缓存从Carbon查询的应用中 ...

  7. 如何用命令行写java程序_如何用java实现doc命令行

    如何用java实现doc命令行, dir显示当前所有目录下的文件 cd 文件目录 进入到该目录 cd ..退到上级目录,一面是我写的代码,调试了. 不过有点小bug就是当你进去的是文件就会提示空指针异 ...

  8. 12.【最详细】如何用命令行cmd运行java程序

    0.前置知识 1.从IDEA中使用命令行的方法 (1)直接在IDEA中使用: (2)从IDEA到cmd: 第一步:从IDEA中打开代码文件所在目录 第二步:从资源管理器中进入cmd的方法 在文件地址栏 ...

  9. (译)如何用命令行在windows Azure上安装负载平衡的web Farm虚拟机(linux或其他)...

    我一哥们考虑把他的一些基于linux的网站移到Azure上.如果你现在的网站是node.js, ASP,ASP.NET,或PHP做的,使用Azure web站点是最容易的.我会在这篇文章里向你展示如何 ...

  10. 如何用命令行刷新,启用,禁用Magento2的缓存

    当你使用Magento商店时如何刷新Magento 2中的Cache命令行是基本的常用操作.Magento 2默认有12种缓存类型.在命令行中有5个简单的命令来管理缓存.在这篇文章中,我将逐步向您展示 ...

最新文章

  1. poj 1948(搜索+剪枝)
  2. 8086处理器的无条件转移指令——《x86汇编语言:从实模式到保护模式》读书笔记13
  3. centos7防火墙操作
  4. SSH框架之SSH前言
  5. python二级考试真题_全国BIM技能等级考试真题全套(一/二级,全专业,28套)
  6. 408业务课·计算机网络——【考研随笔】之一
  7. MATLAB常用三角函数
  8. linux 下基本指令
  9. [推荐算法]基于用户的协同过滤算法
  10. html登陆滑动验证,js实现滑动滑块验证登录的方法
  11. 在ArchLinux/Manjaro上安装BCM4360系列网卡驱动
  12. caxa发生文件读写异常_常见socket读写异常及错误
  13. 申请永久免费空间、数据库空间、域名
  14. 软件需求规格说明书,概要设计说明书,详细设计说明书(文档)
  15. Gradle 2.0 用户指南翻译——第十九章. Gradle 守护进程
  16. Soundiron Bontastic Vintage Italian Chord Organ 复古意大利和弦风琴
  17. 为什么修改jsp不用重启tomcat,而修改servlet要重启tomcat
  18. Android应用安全检测工具简介
  19. crt打开FTP文件服务器,crt登陆到ftp服务器
  20. Java面试--反射

热门文章

  1. 彩扩机项目--两个状态指示灯,巧妙的使用二极管的特性,以及物理按键的滤波...
  2. 【实习】大三暑假实习总结:工作记录、个人日记、感悟总结
  3. 中国人民银行征信中心登录时无法输入密码,控件安装无效
  4. 【Kubernetes 系列】一文学会Kubernetes Service安全的暴露应用
  5. 青蛙跳台阶(pta)
  6. The summary of Java
  7. 用户体验优化事半功倍:如何绘制客户行为轨迹图
  8. 什么是漏极开路【转】
  9. 抽基类与PullToRefreshListView
  10. java基础之String类型