(实习准备)学习如何使用 Modelsim 进行仿真。
基本仿真流程指令
可以将需要执行的 指令放到一个 *.do
文件中就执行后就直接可以进行仿真了。
可以直接拖拽 整个 module
到波形窗口
tcl
# 改变工作目录
cd /dir
# 新建仿真库文件
vlib work
# 编译源文件
vlog *.v
# 执行仿真
vsim -novopt work.<testbench>
# 执行仿真
run 100ns
执行一个脚本的命令是
tcl
do test.do
常用的使用 GUI 的仿真流程
- 改变工作目录
- 新建工程
- 添加或者编写文件
- 编译文件
- 创建
Simulation Configration
modelsim 中不同的符号会有不同的含义(后面补充)
Code Coverage
ModelSim 的这功能可检查 经过仿真过后有多少的 代码是执行过,有多少是没有执行的。
如果需要做代码覆盖度检查,需要在编译的时候的命令需要改为
tcl
vopt +cover=becsxf test_sm -o test_sm_opt
vsim -coverage test_sm_opt
run 1 ms
可以选择 compile prospereties
在 Converage
下面进行设置
Data Flow
Debug 完成后通过右键选择信号添加到 Data Flow 窗口就可以看到
暂时不知道有什么用
波形对比
可以对比输出的波形是否符合测试条件
- 生成基准波形的示例代码
tcl
vlib work
vlog *.v
vopt +acc test_sm -o opt_test_gold
# 生成基准波形
vsim -wlf gold.wlf opt_test_gold
add wave *
run 750 ns
quit -sim
在需要对比波形的 仿真结束后选择 tools
-> Waveform Compare
-> Start Comprison
选择完基准波形后就可以显示不一样的模型了。
原理图生成
tcl
vsim -debugdb work.<test_bench>
执行完成会自动进入 仿真界面,选择view
->schematic
选择后点击展开视图就可以查看原理图了
设置VSCode 为默认编辑器
新建一个$HOME/.mentor/perf.tcl
文件,然后添加下面的内容
tcl
proc external_editor {filename linenumber} { exec "code" -g $filename:$linenumber}
set PrefSource(altEditor) external_editor
在 ~/.zshrc
或者 ~/.bashrc
里面添加环境变量,这样就可以在开启软件的时候自动更换外部编辑器了。
shell
export MODELSIM_TCL="$HOME/.mentor/perf.tcl"