在上一篇文章中(Vivado 下使用Tcl 命令 创建工程)我们介绍了如何使用Tcl 命令创建工程,编译工程,以及如何输出MCS文件等。本文向大家介绍如何使用Tcl命令实现仿真工程的脚本文件(script)。在GUI模式中,我们可以是由vivado 软件界面,添加仿真工程,设置仿真顶层文件,使用xsim 对工程进行仿真,在script脚本工程中,也可以实现以上的功能。
1 创建仿真脚本工程
在对项目仿真时,有时我们需要创建多个仿真工程,用来对顶层模块, 各个子模块等进行仿真,这里,我们为每一个仿真工程创建一个脚本工程。
举例:创建顶层文件仿真工程

图1
如果项目中存在多个仿真工程, 可以在sim_scripts 目录下创建多个工程目录。
在top 目录下创建以下工程文件:

图2
- clean.bat:用来清理仿真工程中的临时文件,也可以认为是对当前仿真工程的reset
- cmd_Vivad 2018.2:仿真目录的环境窗口,所有仿真脚本(script)命令,都在这个窗口下执行。
- readme.txt:一些方正工程中的说明文件,一般用于当前仿真工程的说明。例如使用仿真工程中包含IP 核,就必须在仿真之前,对工程进行编译,因为仿真工程需要使用IP核的编译结果
- run.tcl:添加仿真工程中的波形信号,指出那些信号需要仿真, 使用什么颜色仿真,等等。
- run_xsim.bat:elaboration 仿真工程, 使用xsim 工具进行仿真
- source_files.prj:添加仿真工程文件。那些是源文件,那些是仿真testbench 文件等。
2 仿真文件说明
cmd_Vivado 2018.2 仿真环境窗口

图3
1)右键点击这个图标,
2)如果Vivdao的安装目录不是c:\Xilinx ,用户可以根据自己的计算机自行修改。
run.tcl 文件

图4
1)设置顶层testbench 模块名称, 同时也是仿真的顶层模块。用户根据自己的工程修改这个参数
2)如果仿真中使用子模块中的变量,这里用来指定子模块的路径(仿真层级结构)。如果需要仿真子模块内容,用户根据自己需要修改
3)添加用户的仿真信号
4)可选项, 用户可以添加仿真隔断,使得仿真结果波形更加清晰。
5)如果仿真波形是向量类型,可以使用hex 作为输出显示类型。可选项为:default,dec,bin,oct,hex,unsigned,ascii 等
6) 如果仿真信号需要更改默认颜色,可以使用-color #RRGGBB 来更改R,G,B 取值范围都是0x00 ~ 0xff
7)添加仿真中的parameter 信号
8)仿真工程执行的时间。
run_xsim.bat

图5
在sim_entry 位置,根据用户自己的工程,添加仿真工程的顶层模块。
source_files.prj

图6
1)添加用户的仿真testbench文件,这些文件在tb 目录下。
2)添加用户仿真所需要的原文,这些文件在src 目录下
3)如果需要,添加用户的IP核。注意:*.sim_netlist.v 文件必须在工程编译后,才会出现,而且不同的Vivado版本,*.sim_netlist.v出现的目录位置也不同,用户可以根据自己的vivado版本,找到对应的IP仿真文件。本文中使用的是Vivado 是2018.2。 至于如何创建工程,如何编译工程,请参照Vivado 下使用Tcl 命令 创建工程
3 仿真工程运行
1)双击cmd_Vivado 2018.2 图标

图7
2)执行“run_xsim“

图8
这时,仿真工程执行elaboration和xsim, 如果仿真过程中出现错误,用户可以查看相应的ERROR 输出。也可以查看elaborate.log 文件:

图9
当elaboration没有错误时,出现仿真图形界面:

图10
至此,我们完成使用脚本对工程进行仿真。 同时我们注意到:这个仿真工程是独立的,并不依赖与项目工程。
参考文章:
Xilinx ug937-vivado-design-suite-simulation-tutorial pdf
Xilinx ug894-vivado-tcl-scripting pdf
Xilinx ug835-vivado-tcl-commands pdf
仿真工程代码:
[content_control]
[/content_control]