成都大丰五块石网站建设,成都互联网网站建设,外卖平台如何做推广效果好,wordpress免费服务器以前在使用ModelSim进行仿真的时候#xff0c;一直是使用其GUI进行操作的#xff0c;但是这样很繁琐也很费时。故希望学习其自动化仿真do文件#xff0c;下面是学习的一些总结。 一、编写基本的do文件 下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令。 1、quit… 以前在使用ModelSim进行仿真的时候一直是使用其GUI进行操作的但是这样很繁琐也很费时。故希望学习其自动化仿真do文件下面是学习的一些总结。 一、编写基本的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/alteramf.vvlog−worksimlibLIBPATH/alteramf.vvlog−worksimlibLIBPATH/altera_primitives.v vlog命令负责编译verilog文件如果是VHDL文件则需要将vlog命令换成vcom命令。 在该命令中如果想要include某个文件则可以通过vlog的incdir选项来实现比如 vlog incdird:/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文件的截图能够正确运行。 这里只是编写了基本的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结束电平为10电平保持时间为30个默认时间单元周期为100个默认时间单元占空比为70%。 指令功能每隔一段的周期重复一定的force命令用来产生时钟信号也可用来产生周期的输入信号如01010101,00110011等。 2、force 指令格式force item_name value time,value timeitem_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打开所有窗口。 转载于:https://www.cnblogs.com/limanjihe/p/10052029.html