在使用vivado做异步时序约束时,常常用到get_clocks命令,该命令用于获取当前工程中指定搜索模式匹配的时钟列表。
get_clocks语法
get_clocks [-regexp] [-nocase] [-filter <arg>] [-of_objects <args>]
[-match_style <arg>] [-include_generated_clocks] [-quiet]
[-verbose] [<patterns>]
返回值:时钟列表
选项 | 含义 |
---|---|
-regexp | 表示参数patterns为完整的正则表达式 |
-nocase | 参数patterns不区分大小写(仅-regexp指定时有效) |
-filter | 带表达式的过滤器列表 |
-of_objects | 获取pins、nets、cells或ports的时钟 |
-match_style | 参数pattern的匹配类型,有效值为:ucf、sdc,默认ucf |
-include_generated_clocks | 指还包括自动推断或生成的时钟 |
-quiet | 忽略命令错误 |
-verbose | 命令执行期间暂停消息限制 |
patterns | 时钟名字 |
命令说明
get_clocks命令用于获取当前设计中与指定搜索模式匹配的时钟列表。 default 命令获取设计中所有时钟的列表,如 all_clocks 命令。
时钟可以使用 create_clock 或 create_generated_clock 命令创建,也可以由工具自动生成,例如在 MMCM 的输出处。
注意:get_ * 命令只允许返回单一类型对象(例如cells、nets、pins或ports)的列表。 也可以使用lappend将新对象添加到列表中,但只能添加当前在列表中的相同类型的对象。不允许向列表中添加不同类型的对象或字符串,否则导致 Tcl 错误。
使用-filter命令时,应该避免一些特殊的转义字符,字符串区分大小写,搜索中可以使用通配符“*”来扩大搜索范围,以包含子字符串。
字符串的比较表达式有特定运算符“相等”(==)、“不相等”(!=)、“匹配”(=~) 和 “不匹配”(!~),数学运算符<、>、<= 和 >=。多个滤波器还可以使用AND 和 OR(&& 和 ||)连接。
例如,获取名称中不包含“RESET”子字符串的输入引脚:
get_pins * -filter {DIRECTION == IN && NAME !~ "*RESET*"}
用法举例
1、获取与pattern相匹配的时钟列表:
get_clocks {*clock *ck *Clk}
2、获取主时钟,以及从该时钟派生的所有生成时钟:
get_clocks -include_generated_clocks wbClk
3、获取gt0_gtwizard_i/gtpe2_i的引脚RXOUTCLK输出的时钟
get_clocks -of [get_pins -hier -filter name=~*gt0_gtwizard_i*gtpe2_i*RXOUTCLK]