VIVADO使用误区与进阶之6:Tcl在Vivado中的应用

16 篇文章 7 订阅

1. Tcl的背景介绍和基础语法

  • Tcl(读作 tickle)诞生于 80 年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的 EDA工具中。Tcl 的最大特点就是其语法格式极其简单甚至可以说僵化,采用纯粹的 [命令 选项 参数] 形式,是名副其实的“工具命令语言”( 即 Tcl 的全称 Tool Command Language)。
  • 实际上 Tcl 的功能可以很强大,用其编写的程序也可以很复杂,但要在 Vivado 或大部分其它 EDA 工具中使用,则只需掌握其中最基本的几个部分。
  1. 设置变量
    在这里插入图片描述
  2. 打印
    在这里插入图片描述
  3. 文件I/O
    在这里插入图片描述
  4. 控制流和循环命令
    在这里插入图片描述
  5. 子程序/过程
    在这里插入图片描述
  6. 一些特殊符号
    在这里插入图片描述

2. 在Vivado中使用Tcl定位目标

在 Vivado 中使用 Tcl 最基本的场景就是对网表上的目标进行遍历、查找和定位,这也是对网表上的目标进行约束的基础。要掌握这些则首先需要理解 Vivado 对目标的分类。

  1. 目标的定义和定位
    在这里插入图片描述
    如上图所示,设计顶层的 I/O 称作 ports,其余底层模块或是门级网表上的元件端口都称作 pins。而包括顶层在内的各级模块, blackbox 以及门级元件,都称作 cells。连线称作 nets,加上 XDC 中定义的 clocks,在Vivado 中一共将网表文件中的目标定义为五类。要选取这五类目标,则需用相应的 get_*命令,例如 get_pins等等。
  • get_ports
    在这里插入图片描述
  • get_cells/get_nets
    不同于 ports 仅指顶层端口,要定位 cells 和 nets 则相对复杂,首先需要面对层次的问题。这里有个大背景需要明确: Vivado 中 Tcl/XDC 对网表中目标的搜索是层次化的,也就是一次仅搜索一个指定的层次current_instance,缺省值为顶层。
    在这里插入图片描述
    在这里插入图片描述
  • get_pins
    在这里插入图片描述
  1. 目标之间的关系
    Tcl 在搜索网表中的目标时,除了上述根据名字条件直接搜索的方式,还可以利用目标间的关系,使用-of_objects(在 Tcl 中可以简写为-of)来间接搜索特定目标。 Vivado 中定义的五类目标间的关系如下页左图所示。
    在这里插入图片描述
    下图是一个更复杂的示例,涉及跨层次搜索。可以看到在 get_pins 时,要加上-leaf 才能准确定位到门级元件(或 blackbox)的端口 q。另外,在实际操作中,使用 get_nets 和 get_pins 时,需要视情况而加上其它条件( -filter)才能准确找到下述例子中的 cells ( i2) 。
    在这里插入图片描述
  2. 高级查找功能
    在这里插入图片描述

3.Tcl在vivado中的延伸应用

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值