赞
踩
Modelsim 使用do文件进行仿真的编译,比直接的操作软件有有效的多,所以该文章用于整理Modelsim常用的do文件的命令,命令都是一些最基本的命令。在do文件中注释使用#不是使用//
vlib work
vmap work work //-del 删除相应的文件库
建立work 逻辑库,运行后在指定的文件下会找到work文件,同时将逻辑库work映射到相应的work文件中。
project compileall //编译全部的文件
vlog "./*.v"
vcom -check_synthesis .././*.v # 检查文件的可以综合性
直接读取当前文件下的代码文件以及仿真文件,不需要手动添加。但是在使用时要注意设计文件以及仿真文件处于哪一级的目录下面,否则仿真时找不到文件的路径会报错。在调用IP核进行仿真,需要找到相应的文件库一同添加。
vsim -voptargs= +acc -L work.top
vsim -t -gui -novopt
进行仿真优化。 -L是直接连接相应的函数库,例如:vsim -voptargs = +acc work.tb_top 或者vsim -L altera_mf NorTestBench 直接连接相库
以上是对工程以及文件的配置,下面是对波形的设定
view wave
view structure
view signals
view source
添加相应的窗口进行显示
add wave -divider {tb_top}
add wave ../../../*.v
-radix hexadecimal 十六进制显示 - radix unsigned 十进制无符号数的显示
添加相关的波形,显示指定例化的模块型号,同时也可以指定信号进行显示。
下面还有一些简单的运行命令:
run -time //表示运行的时间 -all 表示全部运行
restart //对仿真进行复位
.main clear //清空tcl编辑面板
Force -repeat 50 clk 0 0 1 25 //激励时钟周期
Force rst_n //指定信号并对指定的信号进行赋值
quit sim #create project vlib work vmap work work #add to comiple design file vlog "../../sim/*.v" vlog ".././rtl/*.v" vlog "../../lib/*.v" #simlation vsim voptargs= +acc work.tb_top #set the window types view wave view structure view signals #add wave add wave -divider {tb_top} add wave -radix hexadecimal tb_top/* .main clear run -all #run -time
上面是一个简单的运行例程,在使用仿真时可以在Transcript界面指定到运行的文件下:cd 文件的路径,在文件路径下后直接可以运行 do run.do文件。run.do 是自己的书写的,在运行时注意自己书写的名字。
仿真代码:
`timescale 1ns/1ns module test; //define signals reg Clock ; reg rst_n; reg Mpi_en; reg [7:0] Data_out; reg [7:0] Data_in ; tri [7:0] Mpi_data; reg [7:0] DataSource [0:47] ; reg [5:0] Addr ; parameter CLK_PERIOD = 20; integer Write_Out_File; //---------------- assign Mpi_data = (Mpi_en) ? Data_out :8'bz; //generate clock initial begin Clock = 0; forever begin # (CLK_PERIOD /2) Clock = ~Clock ; end end //generate rst_n initial begin rst_n = 1'b0 ; # (CLK_PERIOD * 10) rst_n = 1'b1; end //------main simlation initial begin :ACCESS integer i; Mpi_en = 1'b0; Addr = 0; Data_out = 0; $readmemh("Read_In_File.txt",DataSource); Write_Out_File = $fopen("Write_Out_File.txt"); #200; for ( i=6'b101111;i>= 0;i=i-1) begin # CLK_PERIOD; Data_out = DataSource[i] ; Addr = i; # (CLK_PERIOD*2); $display("Addr :%h -> DATAwrite :%h",Addr,Data_out); # (CLK_PERIOD); Mpi_en = 1'b1; # (CLK_PERIOD); Data_in = Mpi_data; $fdisplay(Write_Out_File,"@%h\n%h",Addr,Data_in); $display("Addr :%h -> DATARead :%h",Addr,Data_in); $display("----------------------------"); # (CLK_PERIOD); Addr = 0; Mpi_en = 0; end $display ("Simulation Finished!"); $fclose (Write_Out_File ); $stop; end endmodule
上面的代码读取文本文件中的数据,然后在写入到另一个文本文件中。
在运行modelsim 软件时,直接运行run.do文件就可以自动仿真。do文件十分的简单,可以根据本文上面的命令进行理解。在运行do文件时路径需要在你书写verilog代码一样的路径。
do文件的代码:
quit -sim
.main clear
vlib work
vmap work work
vlog "test.v"
vsim -voptargs=+acc work.test
view wave
view signals
add wave -divider {test}
add wave test/*
run -all
小白的学习记录,大佬请绕路
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。