一、do脚本实现自动化仿真
Modelsim是支持命令的,我们可以用 .do 文件将这些命令先写好然后在Modelsim上调用。因为我的编辑器不支持.do的语法,所以这里改用 .tcl文件,它和 .do 的使用是没有任何区别的。
1. 我习惯设置一个test文件夹,里面放着仿真文件 XX_tb.v,然后在这test文件夹里放一个sim文件夹,在此文件夹内新建一个sim.tcl文件,这样后面的工程和乱七八糟的文件都在内部的sim文件夹里。
2. 在sim .tcl文件里写好以下代码,这些代码建议保存或制作成代码片段,以后只需要稍微改一改就能用。
1 # ========================< 清空软件残留信息 >============================== 2 3 # 退出之前仿真 4 quit -sim 5 6 # 清空信息 7 .main clear 8 9 # =========================< 建立工程并仿真 >=============================== 10 11 # 建立新的工程库 12 vlib work 13 14 # 映射逻辑库到物理目录 15 vmap work work 16 17 # 编译仿真文件 18 vlog ./../*.v 19 20 # 编译设计文件 21 vlog ./../../rtl/*.v 22 23 # 无优化simulation *** 请修改文件名 *** 24 vsim -novopt work.fsm_tb 25 26 # =====================< 状态机名称,不用请删除 >============================= 27 28 # 结构体设置 29 virtual type { 30 {4\'b0001 S0} 31 {4\'b0010 S1} 32 {4\'b0100 S2} 33 {4\'b1000 S3} 34 } fsm_type; 35 36 # 结构体和信号名关联,命名为state_name 37 virtual function {(fsm_type)/fsm_tb/u_fsm/state} state_name 38 39 # ============================< 加载波形 >================================= 40 41 # 添加波形,高度30,以unsigned格式显示 *** 请修改路径名 *** 42 add wave -height 30 -radix unsigned /fsm_tb/u_fsm/* 43 44 # 清空信息 45 .main clear 46 47 # 跑完 48 run -all