Vivado利器优势之我鉴-------TCL
0赞在我们平时使用的操作系统中,能提供具有图形化界面的操作只是系统功能中的一部分,而且有的功能界面隐藏较深,不方便用户调用和使用。用户如果要想更好更快的来使用操作系统,命令语言无疑是最佳的选择,例如windows系统的下的cmd和Linux系统下的shell。
同样的,为了设计者更好的与Vivado进行交互,在Vivado开发环境中集成了TCL(Tool Command Language),工具命令语言。TCL是脚本语言,采用的是设计者比较熟悉的业界标准,算的上是Vivado中的一大特色。TCL不仅能够帮助用户更加自由的掌控工程以及工程开发中各个环节的细节,而且也可以提示用户开发效率。下面我们通过一个工程实例(官网上xapp1171),来看看TCL在各个设计流程中的使用,以及TCL带给设计者的便利和高效。
1.TCL脚本生成工程
上图①是在ZYNQ下生成一个小系统的TCL脚本文件,文件后缀名是.tcl,可以通过调用tcl解释器来执行该脚本文件。该文件中包含了生成小系统所需的一些tcl命令,包括添加IP、配置参数、设定端口以及模块互连等等。例如,上图②表示创建一个BRAM并设定其属性,上图③表示创建一些外围封装的引脚,上图④表示各个模块之间的端口怎么连接。具体的Tcl语法可以参考官网的ug835和ug894用户指导文档。
我们选择以工程的形式来使用该脚本语言,如下图,在Vivado的Tcl Console中输入调用该tcl脚本的命令语言,即可生成一个新的工程。
2.批量操作
在工程中,有的时候需要进行大量相同或者相似的操作,重复来做显得费时费力,此时我们可以使用Tcl进行批量处理。例如,我们在该工程中加入一个1*4的axi_interconnect的IP,如下图,每个Master的端口配置参数较多且相同。
此时,我们可以参考已经配置好的一个端口的TCL来重写(就是复制、粘贴、修改)其余几个端口配置的TCL,在Tcl Console中输入下面指令,就可以将其余的也配置好。
startgroup set_property -dict [list CONFIG.CLK_DOMAIN {SRF} CONFIG.ADDR_WIDTH {24} CONFIG.FREQ_HZ {233000000} CONFIG.PROTOCOL {AXI4LITE} CONFIG.DATA_WIDTH {64}] [get_bd_intf_ports M01_AXI] set_property -dict [list CONFIG.CLK_DOMAIN {SRF} CONFIG.ADDR_WIDTH {24} CONFIG.FREQ_HZ {233000000} CONFIG.PROTOCOL {AXI4LITE} CONFIG.DATA_WIDTH {64}] [get_bd_intf_ports M02_AXI] set_property -dict [list CONFIG.CLK_DOMAIN {SRF} CONFIG.ADDR_WIDTH {24} CONFIG.FREQ_HZ {233000000} CONFIG.PROTOCOL {AXI4LITE} CONFIG.DATA_WIDTH {64}] [get_bd_intf_ports M03_AXI] endgroup
当然,类似的批量操作也在其他的设计环节中有较好的应用,给设计者带来便利和高效。
3.快速查找
在综合或者实现完成之后,针对特定问题来分析网表文件也是设计中的一个重要环节,例如关键时序路径、时钟管理以及单元扇出情况等等。网表文件的分析往往需要按照某些条件来进行查找,此时,TCL就给设计者提供了良好的用户接口,方便设计者快速准确地查找某些路径、单元以及引脚等等。例如下图,我们想了解设计中全局时钟的情况,就可以输入TCL指令进行查找,在Find Result的选显卡窗口中即可看到查找结果。
由于笔者的开发经验不足,博文中可能存在一些认识上的错误,希望大家多多指正同时,也希望大家多多支持,你们的肯定是我努力的动力