Vivado中巧用Tcl命令简介

Vivado工程模式下的Tcl脚本实战:提升硬件设计与编译效率
本文介绍了如何在Xilinx Vivado的工程模式下利用Tcl脚本来读取tracelength、优化编译线程、处理不便修改的IP资源和管理设计流程。通过实例演示了Tcl命令如link_design-part和set_param的应用,以及如何借助Tcl处理IDELAYCTRL冲突。
部署运行你感兴趣的模型镜像

73d458be8a5674f0f2694ba556a3a109.png

Tcl——ToolCommand Language,诞生于80年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,一种基于字符串的命令语言,目前已经广泛应用在几乎所有的EDA工具中。

Xilinx公司从ISE工具的后期开始,在工具中引入了对tcl语言的支持。在目前广泛使用的设计工具Vivado中,更是集成了tcl解释器,实现了对tcl很好的支持,同时也大大提高了编译及布局布线效率。

Vivado支持工程模式(ProjectBased Mode)和非工程模式(NoneProject Mode)两种,且都能通过Tcl脚本批处理运行。工程模式主要是在Vivado图形化界面IDE中运行和调试,Vivado工具可自动管理设计流程和设计数据,各种数据都比较直观。非工程模式是一直内存编译流程,所有步骤都需要开发者手动编辑脚本,命令和参数,这样的模式开发者对设计流程有完全的掌控力。

目前,更多的人使用的是工程模式,今天我们就基于工程模式介绍几个Tcl命令的使用方法。

读取trace length

在硬件设计,尤其是高速接口设计(ddr等接口)中,硬件工程师需要充分考虑线长,除了外部走线之外,芯片管脚到内部的线长也需要考虑。

fpga工程师可以在vivado的Tcl Console中执行tcl命令,生成对应器件的trace length文件提供给硬件工程师。

具体命令如下:

      link_design -part <part_number>

      write_csv <file_name>

第一个命令为链接具体的芯片型号,第二个命令为导出tracelength的csv文件。

7系列和Ultrascale/Ultrascale+的型号指定有细微区别,具体如下:

      link_design -part xc7k160tfbg676

      link_design -part xcku040-sfva784-1-c

提高编译效率

不管是综合(Synthesis)还是实现(Implementation)阶段,Vivado都支持多线程编译。默认情况下,Windows/Linux操作系统,综合阶段的线程数均为2。而在实现阶段,Windows系统的默认线程数为2,Linux操作系统的默认线程数为8。这就是很多时候,使用Linux系统比Windows系统的编译效率高的原因之一。

我们可以通过get_param命令进行目前使用线程数的确认,具体命令见下图蓝色部分。

e2dd7e3e13db260e1506cd9146308f24.png

我们可以通过set_param命令设定期望的线程数,具体命令见下图蓝色部分。

b3465b9413de3e96733e0eedf734989e.png

笔者在Windows系统中尝试,实现部分的运行时间有一定缩短。

帮助处理不方便处理的部分

有时使用Xilinx自带的IP,只有网表文件,无法修改IP内部的代码。在实现(Implementation)过程中,发现某资源占用过多,导致无法通过,我们可以考虑使用tcl命令,remove多余的资源。

下面的例子中,例化了两个axi_chip2chip的IP,这个IP中使用了idelayctrl。例化两个IP的时,bank33/35中既有axi_c2c_1的IO,也有axi_c2c_2的IO,一个clock region中只有一个idelayctrl的资源,这就导致了IDELAYCTRL_GROUP的冲突。Vivado实现以后会报如下错误:

aa87e9c185390e1a1e4cebc09af62312.png

因为我们无法在代码中修改idelayctrl的内容,所以我们只能通过Project Setting中添加钩子脚本(HookScript)的方式,将其中一个idelayctrl删除。

具体的方法如下:

  1. 先将xdc中的idelayctrl等内容删除。

  2. 然后编辑好一个Tcl脚本,脚本文件内部命令如下:

###========================================###

remove_cell u_c2c_fp1/inst/master_fpga_gen.axi_chip2chip_master_phy_inst/master_sio_phy.axi_chip2chip_sio_input_inst/idelayctrl_gen.IDELAYCTRL_inst

set_logic_one [get_pinsu_c2c_fp1/inst/master_fpga_gen.axi_chip2chip_master_phy_inst/axi_chip2chip_phy_init_inst/channel_up]

###=======================================###

remove_cell命令是将对应的一个idelayctrl删除。

set_logic_one是为了保证idelayctrl的输出有效。

3. 最后将上面的Tcl脚本在init_design的tcl.post或opt_design的tcl.pre中指定,使之有效(如下图所示)。

a4e19b2a4e2735a4f4a940b9fd5c6f52.png

9edfd6420d1f60a13e82cc1ae9a842ba.png

在Vivado的图形界面中,综合(Synthesis)和实现(Implementation)阶段的每个子步骤都可以添加Tcl脚本。

其中tcl.pre表示在子阶段之前需要执行的Tcl脚本,tcl.post表示在子阶段之后需要执行的Tcl脚本。

通过上面的内容,我们可以看到如果我们在工作中使用Tcl命令/脚本,可以实现工程模式设计中,图形化界面不方便实现的功能。本文对Tcl部分做一些抛砖引玉的简介,希望大家能灵活使用Tcl功能来加速工程实现。

参考文档:UG835、UG894

Tcl-Store参考链接:                                   https://github.com/Xilinx/XilinxTclStore/wiki/Xilinx-Tcl-Store-Home

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Vivado TCL语言是Vivado设计工具中使用的一种基于TCL脚本语言的命令语言。通过TCL脚本语言,用户可以在Vivado中执行各种命令来完成各种任务。TCL脚本语言具有以下几个优点: 1. 提供了标准语法,使用户可以轻松地向基于TCL的程序发送命令。 2. 可以作为不同程序之间的接口,实现程序间的通信。 3. 借助TCLVivado具备了强大的设计分析能力,可以快速定位设计中的问题,减少设计迭代周期。 在Vivado中,用户可以在TCL命令行中学习和使用基本语法和基础命令。此外,Vivado还提供了在特定阶段之前和之后执行TCL脚本的功能,以便用户可以在设计过程中进行自定义操作。例如,通过使用tcl.pre和tcl.post选项,用户可以在子阶段之前或之后执行相应的TCL脚本。 总而言之,Vivado TCL语言是Vivado设计工具中使用的一种基于TCL脚本语言的命令语言,它为用户提供了灵活、强大的设计分析和自定义操作的能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vivado中的TCL脚本语言](https://blog.youkuaiyun.com/BIGBANGi/article/details/80990745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vivado巧用Tcl命令简介](https://blog.youkuaiyun.com/HackEle/article/details/124893328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值