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
    +关注

    关注

    1629

    文章

    21754

    浏览量

    604234
  • TCL
    TCL
    +关注

    关注

    10

    文章

    1731

    浏览量

    88689
  • 时序约束
    +关注

    关注

    1

    文章

    115

    浏览量

    13432
收藏 人收藏

    评论

    相关推荐

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

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

    时序约束一主时钟与生成时钟

    一、主时钟create_clock 1.1 定义 主时钟是来自FPGA芯片外部的时钟,通过时钟输入端口或高速收发器GT的输出引脚进入FPGA内部。对于赛灵思7系列的器件,主时钟必须手动定义到GT
    的头像 发表于 11-29 11:03 476次阅读
    时序<b class='flag-5'>约束</b>一主时钟与生成时钟

    TCL华星发布新技术品牌APEX

    TCL华星近日宣布了一项重大突破,其印刷OLED技术已实现量产,并同步发布了全新的技术品牌——APEX。APEX品牌的推出,标志着TCL华星在显示
    的头像 发表于 11-19 17:32 578次阅读

    常用时序约束使用说明-v1

    为了防止约束失败,我们在Tcl输入框验证,没有告警或者错误说明约束的写法是正确的set_max_delay 5.00 -from [get_cells key2_detect_ins
    的头像 发表于 11-01 11:06 209次阅读

    电路的两类约束指的是哪两类

    电路的两类约束通常指的是电气约束和物理约束。这两类约束在电路设计和分析起着至关重要的作用。 一、电气
    的头像 发表于 08-25 09:34 977次阅读

    深度解析FPGA的时序约束

    建立时间和保持时间是FPGA时序约束两个最基本的概念,同样在芯片电路时序分析也存在。
    的头像 发表于 08-06 11:40 731次阅读
    深度解析<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的时序<b class='flag-5'>约束</b>

    FPGA技术的主要应用

    和灵活性,FPGA在多个领域得到了广泛应用。本文将深入探讨FPGA技术的主要应用,涵盖通信与网络、数字信号处理、汽车与航天、工业自动化、高性能计算、智能物联网等多个方面。
    的头像 发表于 07-17 16:38 2778次阅读

    PLCSFTL指令的用法

    在工业自动化控制系统,PLC(Programmable Logic Controller,可编程逻辑控制器)扮演着至关重要的角色。PLC通过执行各种指令来控制设备的运行,其中SFTL(Shift
    的头像 发表于 06-15 17:48 3480次阅读

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径为
    发表于 05-06 15:51

    时序约束实操

    添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加到工程
    的头像 发表于 04-28 18:36 2337次阅读
    时序<b class='flag-5'>约束</b>实操

    Xilinx FPGA约束设置基础

    LOC约束FPGA设计中最基本的布局约束和综合约束,能够定义基本设计单元在FPGA芯片中的位置,可实现绝对定位、范围定位以及区域定位。
    发表于 04-26 17:05 1247次阅读
    Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>约束</b>设置基础

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径为
    发表于 04-12 17:39

    CYUSB3014如何向FPGA下发自定义指令

    的设计没有与FPGA连接。 所以,我应该使用什么方式通过CYUSB3014,从PC向FPGA发送自定义指令,有没有可以参考的例子?
    发表于 02-27 07:26

    机器人运动学的非完整约束与运动模型推导

    机器人运动学的运动学约束是指机器人在运动过程受到的限制,包括位置、姿态、速度和加速度等因素。这些约束会对机器人的自由度产生影响,从而影响机器人的运动和控制。运动学
    的头像 发表于 01-18 16:45 1970次阅读
    机器人运动学<b class='flag-5'>中</b>的非完整<b class='flag-5'>约束</b>与运动模型推导

    PLCMove指令可以实现什么功能?

     Move指令是PLC编程的基本指令之一,常用于在程序对数据进行移动和传输。在使用Move指令时,需要注意数据类型、数据长度和地址的确定
    发表于 01-10 15:13 1.2w次阅读