Tcl(全称 Tool Command Language)广泛应用与EDA工具中。而Xilinx 的新一代Vivado 开发套件集成了很多的Tcl脚本命令,或者说Vivado就是一个Tcl脚本的合集。掌握Tcl在vivado 中的相关技巧,可以在工作中节约很多重复劳动,提升效率。因此学习Tcl 是相当有必要的。Tcl作为脚本语言,在不使用Vivado GUI情况下也是可以完成整个设计,这种操作会减少了GUI的使用,提高整个软件的运行时间。但是目前大家的使用习惯还是采用GUI,也是比较直观的操作。因此本篇博文主要还是基于GUI的一些Tcl脚本操作的总结。
博主使用的Vivado 2017.4版本,使用时有可能会出现一些版本兼容性的问题,这里不过于深究。
Vivado 使用Tcl脚本的方法有几种,菜单栏运行脚本文件,Tools -> Run tcl Script…载入已经写好的Tcl脚本就可以运行。
第二种方式也是在Tcl Console 窗口输入进相关的Tcl文件指令便可以进行指令操作的交互。
利用Tcl建立工程,配置相关芯片信号、设置工程路径、建立工程名称相关工程的基本参数,一键完成新工程使用。
#
#STEP1 : 建立工程
#
#设置器件型号
set device_model xc7z035fbg676-2
#设置工程创建位置
set dev_dir {
G:\DeskTop\ZynqCode\11_Tcl_test}
#确保切换到了工程位置
cd $dev_dir
puts "The home_dir is $dev_dir now!"
#工程名称
set project_name tlc_test
#创建工程
create_project $project_name $dev_dir -part $device_model
#设置仿真语言为 verilog
set_property simulator_language Verilog [current_project]
利用Tcl脚本将工程所需要的文件添加进入工程。减少手动添加过程。
#
# STEP2 添加文件进入工程
#
# 添加仿真tb文件
add_files -fileset sim_1 ./Sources/hdl/cpu_tb.v
# 添加VHDL文件
add_files [ glob ./Sources/hdl/bftLib/*.vhdl ]
add_files ./Sources/hdl/bft.vhdl
# 添加verilog文件
add_files [ glob ./Sources/hdl/*.v ]
add_files [ glob ./Sources/hdl/mgt/*.v ]
add_files [ glob ./Sources/hdl/or1200/*.v ]
add_files [ glob ./Sources/hdl/usbf/*.v ]
add_files [ glob ./Sources/hdl/wb_conmax/*.v ]
# 添加约束文件
add_files -fileset constrs_1 ./Sources/top_full.xdc
set_property library bftLib [ get_files [ glob ./Sources/hdl/bftLib/*.vhdl ]]
Tcl脚本在Vivado软件还可以自定义初始化脚本,添加图标,这样软件可以通过点击图标自动运行脚本,非常方便。zynq内嵌了ARM核和FPGA,在工程设计中添加ARM核应该是最常用的操作,因此这里就用添加ARM核作为初始化脚本功能来进行示例。
首先建立一个Tcl脚本,脚本大致内容为:
1.生成 block design;
2.添加 “processing_system7” IP 核;
3.配置使用的DDR 型号为"MT41J256M16 RE-125"
#
#STEP3 进行仿真并进行相关的仿真脚本
#
# 生成block design,命名为“design_1”
create_bd_design "design_1"
# 编译文件 sources_1
update_compile_order -fileset sources_1
# 生成zynq ps的IP核
startgroup
create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0
endgroup
# 配置IP核所用的DDR为“MT41J256M16 RE-125”
set_property -dict [list CONFIG.PCW_UIPARAM_DDR_PARTNO {
MT41J256M16 RE-125} CONFIG.PCW_UART1_PERIPHERAL_ENABLE {
1}] [get_bd_cells processing_system7_0]
通过vivado 的Tools -> Custom Commands -> Customize Commands,进行配置,相关路径如下。
进入配置命令页面:
1.左侧"+" ,添加命令的名称;
2.右侧录入描述,在Source Tcl file 中添加刚才写好的脚本路径;
3.命令可以自己上传图片作为命令的工具栏图标。勾选 “Add to the toolbar”,选择我们的图标,点击"Apply"便完成了一键配置添加、配置PS核的脚本操作。
由于是在软件中自定义的命令操作,因此重新建立工程也无须重新配置。使用vivado软件时,将通用、重复软件操作配置为命令,在工具栏一键自动完成操作,将大大节省时间,提高工作效率。
下面是刚才建立的Command的相关演示。
把help 单独立一小节是因为在使用Tcl脚本的过程中,偶尔会忘记脚本使用或者命令名称等。这就需要常常使用Vivado 自带的Tcl help 功能。类似matlab一样,help相关命令会显示相关命令的使用方法、变量参数等,实在是很方便也很重要。
本文章主要讲了Vivado 开发套件中Tcl脚本的使用,写了几种常用的Tcl脚本的使用如:建立新工程、添加文件、添加Command一键操作等几种很方便的使用方式。使用脚本是减少重复劳动、提高工作效率的神器。当然Vivado 中Tcl脚本的使用也不仅仅如此,更多的使用方式请查看官方文档。前文也已经说了Vivado实质就是Tcl脚本的GUI合集。因此我们操作GUI时,在Tcl面板内相同的脚本也会显示,当想把相关操作制作成定制化Command时,也可以通过面板的Tcl指令来进行查看。有不同的见解欢迎大家交流。
1 Vivado如何使用bat脚本一键创建工程
2 Xlinx官方文档,UG894-Vivado Design Suite User Guide Using Tcl Scripting