一、编写基本的do文件

下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令。

1、quit -sim ---- 退出原来的仿真工程;

2、cd ---- 设置工作目录的路径,就是仿真工程路径;

3、vlib work ---- 在工作目录下建立一个work目录,请注意不要用操作系统直接新建一个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。我们将自己新建的库一般放在work库前面建立;

4、vmap work /vmap work work ---- 将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了),其他新建的库也要这样的方法映射。此处需要注意的事逻辑库名与物理库名最好保持一致,后面的work为物理的库目录,即上一步的目录;

5、vlog  +acc –work work “file_path/*.v” ---- 编译“file_path”目录下所有.v文件,并将其添加进工作库(work)中,包括IP生成的V文件也要编译的。编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。其中的“-work work”是将后面的源文件编译到哪个库中,如果是编译到默认的work库中,则也可以不写该参数。若只想编译其中某些文件,则可以直接写出这些文件的名字,比如下面两种写法等效:

vlog div.v div_tb.v
vlog -work work div.v div_tb.v
若是要编译基本器件库,可参照下面的例子:
vlib verilog_libs/altera_ver
vmap altera_ver ./verilog_libs/altera_ver
vlog -vlog01compat -work altera_ver {d:/quartus9.0/quartus/eda/sim_lib/altera_primitives.v
vlog后面的两个参数“-vlog01compat”、“-work”是固定的。其中“-work”是必须保留的,“-vlog01compat”则在源文件为verilog文件时可以保留,如果为VHDL文件则不能使用该参数。需要注意的一点是该工程目录下的“verilog_libs”库文件夹需要手动建立,否则会运行会出现错误。
需要编译的文件有两种:源代码文件、库文件。对于库文件的编译可以有两种处理方式:1、将这些库文件与源代码文件一起编译到work库中,这样比较方便省事;2、将库文件单独编译到一个库中,在运行的时候需要通过参数设置来将库选择上。由于第一种方式较为简单,后面将采用第二种方式。
当某一路径会经常用到时,可以通过设置一个路径变量来存储该路径,示例如下:
set LIBPATH c:/altera/11.0/quartus/eda/sim_lib/
vlib sim_lib 
vmap sim_lib sim_lib
vlog -work sim_lib $LIBPATH/altera_mf.v
vlog -work sim_lib $LIBPATH/altera_primitives.v
vlog命令负责编译verilog文件,如果是VHDL文件,则需要将vlog命令换成vcom命令。
在该命令中,如果想要include某个文件,则可以通过vlog的incdir选项来实现,比如:
vlog +incdir+d:/work
6、vsim -novopt -quiet -c -L altera_ver -L E:/modeltech_6.6a/Xilinx_lib_edk/unimacro_ver -lib work div -t 1ns -do "run 2084655ns" ---- 启动仿真命令,该命令可以有许多参数。
参数“-L altera_ver”是添加仿真库,该处是直接使用逻辑库名称,也可以像后面一样使用物理库的名称及路径;若是库与源文件一起编译到work库中的,则不需要该参数;
参数“-t 1ns”表示仿真时间单位为1ns;
参数“-novopt”禁止优化(no vopt),可能会因为vopt的缘故使得一些不重要signal被modelsim自动忽略,一般会保留该参数;
参数“-do”表示运行时间,该参数一般不用,在后面再运行该命令;
参数“-c”表示进入命令行模式,如果没有该参数,则表示进行GUI模式。
默认工作库为work,因而下面几种写法等效:
vsim div_tb
vsim -lib work div_tb
vsim work.div_tb
sim -L D:/Modelsim/Installfiles/altera/altera_mf work.videoin_tb
7、view signals source wave ---- 打开signal、source、wave窗口,也可以只打开wave窗口;
8、delete wave * ---- 删除原来wave窗口中的波形;
9、add wave -binary clk rst ---- 打添加要观察的波形信号,clk、rst为tb的顶层信号名,若要添加内部信号则要给出路径,-binary表示使用二进制显示;
添加一个模块的所有信号则可以用下面的方式:
add wave -dec sim:/div_tb/*
若只是要添加单个信号,则把“*”换成对应的信号即可,比如:
add wave -unsigned sim:/div_tb/clk
在wave窗口中,可以对波形进行相关配置,下面是常用的配置命令:
WaveRestoreCursors {{Cursors 1} {200ns} 0} {{Cursors 2} {400ns} 0}
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -namecolwidth 150
configure wave -valuecolwidth 100
configure wave -signalnamewidth 0
configure wave -justifyvalue left
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
update
WaveRestoreZoom {0 ns} {1000 ns}
如果所有信号均采用同一种方式显示,则可以用如下方式设置,就不必要在每次添加信号时设置显示参数:
radix -hex
10、run 5000/run @5000 ---- 开始运行仿真程序;
没有“@”则表示在当前时刻继续运行5000个单位时间;
有“@”则表示运行到5000这个时刻,如果当前程序仿真已经运行到了5000以后的时刻,则该方法不会继续向后运行,而会弹出一个错误信息,提示当前仿真时刻已经超过了该数值。
run -all则表示一直运行,直到手动停止。
在5000后面也可以跟上一个单位,不跟单位时则以仿真的最小单位为基准。
11、quit -f/quit -sim ---- 参数为“f”时则结束ModelSim,参数为“sim”时则结束该仿真进程。
这里只是编写了基本的do文件,需要在ModelSIm的Transcipts窗口输入相应的命令才可以执行。
1、cd filepath ----进入do文件所在的目录;
2、do filename.do ----执行do文件,开始仿真。

二、进行优化
还可以对上面的流程进行优化,真正达到自动仿真,使得仿真更有效率。
1、批处理bat文件 ---- 直接运行该文件即可启动仿真,而不需要首先进入ModelSim启动do文件;该方法还未实验成功。
2、单独的文件存储文件路径 ----当有多个不同的文件路径时,为使do文件更加简洁,可以将所有路径存储在一个文件中。该方法也未实验成功。
我是按照Modelsim中常用的Tcl命令中的方法实验的,以后有时间再来看看怎么弄这个。

三、交互式命令
通过在主窗口的命令窗口输入命令来实现,具有更好的调试和交互功能,提供多种指令,既可以是单步指令,也可以构成批处理文件,用来控制编辑、编译和仿真流程。
1、force-repeat
指令格式:force 开始时间开始电平值,结束电平值忽略时间(即0电平保持时间) -repeat 周期

force clk 0 0,1 30 -repeat 100 表示强制clk从0时间单元开始,起始电平为0,结束电平为1,0电平保持时间为30个默认时间单元,周期为100个默认时间单元,占空比为70%。

指令功能:每隔一段的周期重复一定的force命令,用来产生时钟信号,也可用来产生周期的输入信号,如01010101,00110011等。
2、force
指令格式:force item_name value time,value time;item_name为端口信号或内部信号,支持通配符号,但只能匹配一个;value不能默认,time,可选项,支持时间单元; force din 16#40900000 从当前时刻起给din赋值16进制40900000; force bus 16#F @100ns 在100ns时刻给bus赋值16进制F; force clr 1 100 经历100个默认时间单元延迟后为clr赋值1; 
force clr 1,0 100 表示clr赋值1后,经历100个默认时间单元延迟后为clr赋值为0。
3、run
指令格式:run timestepstime_unit,timesteps时间步长,time_unit时间单元,可以是fs、ps、ns、us、ms、sec; 
指令功能:运行(仿真)并指定时间及单元; 
run 100,表示运行100个默认时间单元; 
run 2500ns,表示运行2500ns; 
run -all,表示运行全过程; 
run -continue,表示继续运行。
4、force-cancel
指令格式:force-cancel period 
指令功能:执行period周期时间后取消force命令; 
force clk 0 0,1 30 -repeat 60-cancel 1000,表示强制clk从0时刻开始,直到1000个时间单元结束。
5、view
指令格式:view 窗口名 
指令功能:打开Modelsim的窗口 
view souce,打开源代码窗口; 
view wave,打开波形窗口; 
view list,打开列表窗口; 
view varibles,打开变量窗口; 
view signals,打开信号窗口; 
view all,打开所有窗口。

QuestaSim自动化仿真之do文件的更多相关文章

  1. Modelsim自动化仿真之do文件书写

    创建本地库 vlib ./work You must use vlib rather than operating system commands to creat a library directo ...

  2. 基于脚本的modelsim自动化仿真笔记

    这里记录一下基于脚本的modelsim自动化仿真的一些知识和模板,以后忘记了可以到这里查找.转载请标明出处:http://www.cnblogs.com/IClearner/ . 一.基本介绍 这里介 ...

  3. Modelsim调用用do脚本自动化仿真

    前言 EDA发展的趋势是自动化,使用脚本自动化仿真可以减少不必要的时间浪费. 流程 在windows下新建批处理脚本bat文件(linux下可用shell脚本或者其他,注意给脚本运行权限即可:chmo ...

  4. ModelSim之tcl自动化仿真

    摘要: ModelSim的tcl最大的优势就在于它可以让整个仿真自动运行,免除每次进行各种用户界面控制操作的麻烦.用tcl就可以自动完成建库.映射库到物理目录.编译源代码.启动仿真器.运行仿真等一系列 ...

  5. modelsim仿真中 do文件的写法技巧

    网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱   还有一个值得注意 ...

  6. VCS仿真生成fsdb文件(Verilog)

    VCS仿真生成fsdb文件(Verilog) 一.环境 Linux 平台 csh环境 VCS 64bit Verdi3 二.开始仿真 1. 联合仿真环境配置 a.在testbench中加入如下语句: ...

  7. VCS仿真生成vpd文件(verilog)

    VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台  csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...

  8. Modelsim中使用TCL脚本编写do文件实现自动化仿真

    通常我们使用Modelsim进行仿真,是通过图形界面点点点来进行操作,殊不知Modelsim完美支持TCL脚本语言及批处理命令do文件.简单来说就是从你修改完代码后到你重新编译把需要的信号拉出来查看, ...

  9. Modelsim SE自动化仿真——如何将.do文件中自定义的库链接到testbench顶层模块

    我们用Modelsim SE进行仿真时,为了方便,一般会编写.do文件来启动当前仿真.关于.do文件的编写,一般网上都有成型的模板,我们只要稍微改几个参数,就可以符合我们的仿真需求了.但是如果仿真时需 ...

随机推荐

  1. 【转】Android EventBus初探

    出处:http://blog.csdn.net/lmj623565791/article/details/40794879 1.概述 最近大家面试说经常被问到EventBus,github上果断dow ...

  2. 执行计划--在存储过程中使用SET对执行计划的影响

    --如果在存储过程中定义变量,并为变量SET赋值,该变量的值无法为执行计划提供参考(即执行计划不考虑该变量),将会出现预估行数和实际行数相差过大导致执行计划不优的情况--如果在存储过程中使用SET为存 ...

  3. 10.05 最初对Linux的了解,对Shell的认识

    linux的起源:UNIX,代码开源,可以得到源代码,然后自己编译,通过以后可以运行程序. 特点:免费的;兼容POSIX1.0标准;多用户,多任务系统;良好的用户界面;提供了图形界面;支持多种文件系统 ...

  4. roadflow作为工作流引擎服务中心webapi说明

    将RoadFlow作为工作流引擎服务中心,其它第三方系统如OA,ERP等通过调用RoadFlow对外提供的标准WebApi接口来实现流程发送.退回.查询待办事项.已办事项.查看流转审批过程等操作.实现 ...

  5. A - 最少拦截系统 (最长上升子序列)

    点击打开链接 A - 最少拦截系统 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度. ...

  6. CF1110G Tree-Tac-Toe(博弈论)

    题面 传送门 题解 博弈论的前提是双方都是绝顶聪明的人 所以这种题目显然不是我应该做的 题解 //minamoto #include<bits/stdc++.h> #define R re ...

  7. php 对比两个数组中的值是否相等

    $a = ['1','2','4','3'];//提交答案 $b = ['2','1','3'];//正确答案 $state = $this->diffArray($b, $a); echo ' ...

  8. 【SpringBoot+Mybatis+thymeleaf报错】Error resolving template "XXX", template might not exist or might not be accessible by any of the configured

    解决方法一: 原因:在使用springboot的过程中,如果使用thymeleaf作为模板文件,则要求HTML格式必须为严格的html5格式,必须有结束标签,否则会报错. 在application.y ...

  9. appium安装与部署

    前提: ①:appium属于C/S架构,代码写在Client端 ②:本章所说的部署讲的是Android设备下的Appium安装与部署 ③:Appium Client的环境是针对python3的 App ...

  10. [BZOJ5248][2018九省联考]一双木棋

    题目描述 https://www.lydsy.com/JudgeOnline/problem.php?id=5248   Solution 我们首先考虑放棋子的操作 发现它一定放棋子的部分是一个联通块 ...