0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA约束中的Tcl指令技术探讨

454398 来源: 科学计算Tech 作者:猫叔 2020-09-26 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:猫叔 科学计算Tech微信公众号

 在前面的章节中,我们用了很多Tcl的指令,但有些指令并没有把所有的参数多列出来解释,这一节,我们就把约束中的Tcl指令详细讲一下。

我们前面讲到过get_pins和get_ports的区别,而且我们也用过get_cells、get_clocks和get_nets这几个指令,下面就通过一张图直观展现它们的区别。

get_clocks后面的对象是我们之前通过create_clocks或者create_generated_clocks创建的时钟,不在硬件上直接映射。

我们再来看下各个命令的属性。

1. port
我们可以通过Tcl脚本查看port的所有属性,比如上面的wave_gen工程中,有一个port是clk_pin_p,采用如下脚本:

set inst [get_ports clk_pin_p]
report_property $inst

显示如下:

get_ports的使用方法如下:

# 获取所有端口
get_ports *

# 获取名称中包含data的端口
get_ports *data*

# 获取所有输出端口
get_ports -filter {DIRECTION == OUT}

# 获取所有输入端口
all_inputs

# 获取输入端口中名字包含data的端口
get_ports -filter {DIRECTION == IN} *data*

# 获取总线端口
get_ports -filter {BUS_NAME != ""}

2. cell
按照上面的同样的方式,获取cell的property,如下:

get_cells的使用方法如下:

# 获取顶层模块
get_cells *

# 获取名称中包含字符gen的模块
get_cells *gen*

# 获取clk_gen_i0下的所有模块
get_cells clk_gen_i0/*

# 获取触发器为FDRE类型且名称中包含字符samp
get_cells -hier filter {REF_NAME == FDRE} *samp*

# 获取所有的时序单元逻辑
get_cells -hier -filter {IS_SEQUENTIAL == 1}

# 获取模块uart_rx_i0下两层的LUT3
get_cells -filter {REF_NAME == LUT3} *uart_tx_i0/*/*

3. pin
获取pin的property,如下:

get_pins的使用方法如下:

# 获取所有pins
get_pins *

# 获取名称中包含字符led的引脚
get_pins -hier -filter {NAME =~ *led*}

# 获取REF_PIN_NAME为led的引脚
get_pins -hier -filter {REF_PIN_NAME == led}

# 获取时钟引脚
get_pins -hier -filter {IS_CLOCK == 1}

# 获取名称中包含cmd_parse_i0的使能引脚
get_pins -filter {IS_ENABLE == 1} cmd_parse_i0/*/*

# 获取名称中包含字符cmd_parse_i0且为输入的引脚
get_pins -filter {DIRECTION == IN} cmd_parse_i0/*/*

4. net
获取pin的property,如下:

get_nets的使用方法如下:

# 获取所有nets
get_nets *

# 获取名称中包含字符send_resp_val的网线
get_nets -hier *send_resp_val*
get_nets -filter {NAME =~ *send_resp_val*} -hier

# 获取穿过边界的同一网线的所有部分
get_nets {resp_gen_i0/data4[0]} -segments

# 获取模块cmd_parse_i0下的所有网线
get_nets -filter {PARENT_CELL == cmd_parse_i0} -hier

# 获取模块cmd_parse_i0下的名称中包含字符arg_cnt[]的网线
get_nets -filter {PARENT_CELL == cmd_parse_i0} -hier *arg_cnt[*]

这5个tcl指令的常用选项如下表:

 这5个Tcl命令对应的5个对象之间也有着密切的关系,下图所示的箭头的方向表示已知箭头末端对象可获取箭头指向的对象。

以wave_gen中的clk_gen_i0模块为例来说明上面的操作:

# 获取模块的输入引脚
get_pins -of [get_cells {clk_gen_i0/clk_core_i0}] -filter {DIRECTION == IN}

# 已知引脚名获取所在模块
get_cells -of [get_pins clk_gen_i0/clk_core_i0/clk_in1_n]

# 已知模块名获取与该模块相连的网线
get_nets -of [get_cells {clk_gen_i0/clk_core_i0}]

# 已知引脚名获取与该引脚相连的网线
get_nets -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

# 已知时钟引脚获取时钟引脚对应的时钟
get_clocks -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

需要注意的是:

1. -hier不能和层次分隔符“/”同时使用,但“/”可出现在-filter中

2. 可根据属性过滤查找目标对象

3. -filter中的属性为:“==”(相等)、“!=”(不相等)、"=~"(匹配)、"!~"(不匹配),若有多个表达式,其返回值为bool类型时,支持逻辑操作(&& ||)

编辑:hfy
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630178
  • TCL
    TCL
    +关注

    关注

    11

    文章

    1794

    浏览量

    91054
  • 时序约束
    +关注

    关注

    1

    文章

    118

    浏览量

    13890
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源RISC-V处理器(蜂鸟E203)学习(二)修改FPGA综合环境(移植到自己的Xilinx FPGA板卡)

    文件的外设,可以将其注释掉,比如我将RGB LED和GPIO注释掉。当然后面就需要修改FPGA顶层文件,这个后面会说。但是板卡有相应外设,自己修改管脚号就可以了 4)修改时钟 其次就是时钟,我
    发表于 10-31 08:46

    在Windows10上运行vivado使用tcl文件创建E203项目路径错误的问题

    先按照官方给的开源项目,e203_hbirdv2-masterfpgamcu200t目录下的Makefile内容手动创建vivado工程。 在调用.tcl文件的过程,每次进行到
    发表于 10-28 07:19

    win10环境下使用vivado生成.bit与.mcs文件

    到工程。 5.添加约束文件。将fpga目录下的constrs文件夹复制到工程,然后添加约束文件。 6.将
    发表于 10-27 08:25

    蜂鸟e203移植fpga上如何修改约束文件

    第一步:我们先导入官方网站蜂鸟e203的代码提供的e203添加进去,并加入ddr200T的 src.文件的system.v文件并加入约束文件(constrs文件夹之中
    发表于 10-24 07:18

    技术资讯 I Allegro 设计的走线约束设计

    本文要点在进行时序等长布线操作的时候,在布线操作的时候不管你是走蛇形线还是走折线,约束管理器会自动帮你计算长度、标偏差,通过精确控制走线长度,来实现信号的时序匹配。约束设计就是一套精准的导航系统
    的头像 发表于 09-05 15:19 895次阅读
    <b class='flag-5'>技术</b>资讯 I Allegro 设计<b class='flag-5'>中</b>的走线<b class='flag-5'>约束</b>设计

    云知声携手TCL空调焕新智能家电体验

    “空调开24度,新风打开”——刚打完篮球的小涛对着客厅远处的TCL空调发出指令,而空调无需联网仍精准执行操作。这一离线状态下的智能响应场景,正是TCL空调与云知声联手研发的“基于端云协同的空调器语音自由交互关键
    的头像 发表于 08-25 13:53 887次阅读

    图解环路设计及控制技术探讨

    由于之前缺乏控制理论方面的知识在刚接触反馈环路的时候对其中的很多名词不是很明白,这次准备采用图解的方法逐一的搞清楚这些名词并且试图找出一种便捷的设置零、极点的方法。最后准备再探讨一下关于控制技术
    发表于 08-22 17:39

    技术资讯 I 图文详解约束管理器-差分对规则约束

    本文要点你是否经常在Layout设计抓瞎,拿着板子无从下手,拿着鼠标深夜狂按;DDR等长没做好导致系统不稳定,PCIe没设相位容差造成链路训练失败……这些都是血泪教训,关键时刻需要靠约束管理器救命
    的头像 发表于 08-08 17:01 925次阅读
    <b class='flag-5'>技术</b>资讯 I 图文详解<b class='flag-5'>约束</b>管理器-差分对规则<b class='flag-5'>约束</b>

    PLL技术FPGA的动态调频与展频功能应用

    随着现代电子系统的不断发展,时钟管理成为影响系统性能、稳定性和电磁兼容性(EMI)的关键因素之一。在FPGA设计,PLL因其高精度、灵活性和可编程性而得到广泛应用,本文将深入探讨PLL技术
    的头像 发表于 06-20 11:51 2210次阅读
    PLL<b class='flag-5'>技术</b>在<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的动态调频与展频功能应用

    PCB Layout 约束管理,助力优化设计

    本文重点PCBlayout约束管理在设计的重要性Layout约束有助避免一些设计问题设计可以使用的不同约束在PCB设计规则和
    的头像 发表于 05-16 13:02 813次阅读
    PCB Layout <b class='flag-5'>约束</b>管理,助力优化设计

    电机绕组滚动烘干炉防爆安全技术探讨

    电机绕组滚动烘干工艺在电机行业逐步推广应用,但该防爆滚动烘干设备的制造却仍没有统一的标准,这就为设备的制造、使用、维修、保养埋下了隐患。文章主要探讨了防爆滚动烘干炉的防爆技术,以期引起同行对防爆
    发表于 04-27 19:28

    FPGA时序约束之设置时钟组

    Vivado时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束设置了时钟组或false路径。使用set_clock_groups命令可以使时序分析工具不分析时钟组
    的头像 发表于 04-23 09:50 964次阅读
    <b class='flag-5'>FPGA</b>时序<b class='flag-5'>约束</b>之设置时钟组

    一文详解Vivado时序约束

    Vivado的时序约束是保存在xdc文件,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束。时序约束文件可以直接创建或添加已存在的约束
    的头像 发表于 03-24 09:44 4383次阅读
    一文详解Vivado时序<b class='flag-5'>约束</b>

    xilinx FPGA IOB约束使用以及注意事项

    xilinx FPGA IOB约束使用以及注意事项 一、什么是IOB约束 在xilinx FPGA,IOB是位于IO附近的寄存器,是
    的头像 发表于 01-16 11:02 1486次阅读
    xilinx <b class='flag-5'>FPGA</b> IOB<b class='flag-5'>约束</b>使用以及注意事项

    TCL发布万象分区技术,重塑Mini LED技术巅峰

    在Mini LED赛道上,TCL作为行业先行者,凭借其深厚的技术积累和持续的创新精神,再次引领技术革命。近日,TCL宣布对Mini LED底层技术
    的头像 发表于 12-17 10:14 1145次阅读