FPGA时序约束理论之Tcl命令的对象和属性(3)

  • get_pinsget_portsget_cellsget_clocksget_nets

  •  get_clocks的对象是通过create_clocks或者create_generated_clocks创建的时钟,不在硬件上直接映射

1. port

      通过Tcl脚本查看port的属性,有一个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

 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    

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

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个对象之间也有着密切的关系,下图所示的箭头的方向表示已知箭头末端对象可获取箭头指向的对象。

 

# 获取模块的输入引脚
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]

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA中的TCL约束语句是一种用于描述和定义FPGA设计的时序和约束条件的脚本语言。它可以用于设置时钟频率、时序路径、IO约束等。在FPGA设计中,TCL约束语句起到了关键的作用,能够确保电路的性能和可靠性。 在前面的章节中,提到了FPGA时序约束理论篇和FPGA时序约束实战篇,其中详细介绍了FPGA时序约束理论和实践。在FPGA时序约束理论篇中,包括了建立保持时间、时序路径与时序模型、IO约束、时钟周期约束、两种时序例外、xdc约束优先级等内容。 而在FPGA时序约束实战篇中,包括了梳理时钟树、主时钟约束、衍生时钟约束、延迟约束、伪路径约束、多周期路径约束等内容。同时,还介绍了一些辅助工具,如Vivado辅助工具和Tcl命令对象属性。 总结来说,FPGATCL约束语句是用于描述和定义FPGA设计的时序和约束条件的脚本语言,可以通过设置不同的约束来实现对FPGA电路的性能和可靠性的控制。详细的TCL约束语句可以参考前述的FPGA时序约束理论篇和FPGA时序约束实战篇的章节内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [14 FPGA时序约束Tcl命令对象属性](https://blog.csdn.net/zhanghaijun2013/article/details/104105949)[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%"] - *3* [fpga的约束文件制作](https://download.csdn.net/download/joris30/12722775)[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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值