UE4 找不到 Gte Attached Actor(tagle是Actor)函数

UE4 找不到 Gte Attached Actor(tagle是Actor)函数

版本太低,请更新4.17往上的版本

老版本:在这里插入图片描述

较新版本:
在这里插入图片描述

<think>好的,我需要帮助用户了解如何在Vivado Tcl脚本中判断cells的REF_NAME属性不等于包含“GTE”的情况。首先,用户之前询问了关于使用report_property查看cell属性的方法,现在他们想进一步筛选特定属性值的cells。 首先,我得回忆一下Vivado Tcl命令的相关知识。用户提到REF_NAME不等于*GTE*,这里可能是指REF_NAME属性中不包含“GTE”字符串的情况。在Tcl中,通配符通常用“*”表示,但这里需要用到比较操作符。Vivado的get_cells命令支持-filter选项,可以用正则表达式或者通配符来匹配属性值。 接下来,我需要确认REF_NAME属性的含义。REF_NAME通常指的是cell的参考名称,例如LUT、BUFG、GTE等。GTE可能是指高速收发器这类硬件原语。用户希望排除这些GTE相关的cell。 然后,考虑如何构造-filter表达式。Vivado的-filter语法支持类似SQL的条件表达式。对于字符串比较,可以使用“!=”操作符,并结合通配符。比如,REF_NAME != "*GTE*",这里的双引号可能需要转义或者在Tcl中使用大括号来避免解释问题。 但是,Vivado的-filter是否支持通配符的不等于操作呢?可能需要用正则表达式。例如,使用正则表达式匹配不包含GTE的情况。或者,更简单的方式是使用-not like操作符,比如REF_NAME not like "*GTE*"。需要确认Vivado Tcl支持的比较运算符。 另外,用户可能想通过get_cells命令直接获取满足条件的cells列表,或者在report_property中过滤显示结果。根据之前的对话,用户熟悉report_property,但现在更倾向于过滤属性值。 还需要考虑是否需要转义星号,以及在Tcl中字符串的引用方式。例如,使用大括号可以避免变量替换和转义问题。比如-filter {REF_NAME !~ "*GTE*"},但需要确认正确的语法。 可能还需要提供示例,帮助用户理解如何应用这个过滤条件。比如,get_cells -filter {REF_NAME !~ "GTE"} 或者类似的命令。另外,注意Vivado的版本差异,不同版本的Tcl支持可能有细微差别。 用户还可能想知道如何结合其他属性进行过滤,或者如何处理大小写问题(GTE是否区分大小写)。通常,Vivado中的属性是大小写敏感的,所以需要确认是否需要考虑大小写。 最后,需要给出一个完整的示例,说明如何正确使用-filter参数来筛选出REF_NAME不包含GTE的cells,并解释每个部分的作用,确保用户能够理解并应用。</think>--- 在Vivado Tcl脚本中,要筛选出`REF_NAME`属性**不包含**`GTE`字符串的单元(cells),需结合`get_cells`命令和`-filter`选项。以下是具体实现方法和应用场景说明: --- ### **一、核心命令语法** ```tcl # 使用正则表达式匹配 get_cells -filter {REF_NAME !~ ".*GTE.*"} # 使用通配符匹配(注意转义) get_cells -filter {REF_NAME !~ "*GTE*"} ``` * **关键操作符**: * `!~`:表示"不匹配"(类似正则表达式中的否定匹配) * `*`:通配符,匹配任意字符序列 * `.*`:正则表达式中的通配符,功能与`*`相同但需配合`=~`使用 --- ### **二、典型应用场景** #### **1. 批量排除高速收发器单元** 高速收发器(Gigabit Transceiver)的`REF_NAME`通常包含`GTE`标识符(如`GTHE4_CHANNEL`),以下命令可排除所有GTE相关单元: ```tcl # 获取非GTE单元列表 set non_gte_cells [get_cells -filter {REF_NAME !~ "*GTE*"}] # 统计数量 puts "非GTE单元数量: [llength $non_gte_cells]" ``` #### **2. 结合其他属性联合过滤** ```tcl # 查所有非GTE且为LUT的单元 get_cells -filter { REF_NAME !~ "*GTE*" && REF_NAME =~ "LUT*" && IS_PRIMITIVE == true } ``` --- ### **三、验证与调试技巧** #### **1. 分步验证匹配规则** ```tcl # 先查看目标单元的REF_NAME report_property [get_cells my_cell] -name REF_NAME # 测试正则表达式是否生效 set test_cell [get_cells -filter {REF_NAME =~ ".*GTE.*"}] if { [llength $test_cell] > 0 } { puts "匹配成功: [get_property REF_NAME $test_cell]" } ``` #### **2. 使用正则表达式调试工具** 在线工具(如[regex101](https://regex101.com/))可快速验证正则表达式逻辑: * 测试模式:`.*GTE.*` * 测试字符串:`"GTXE2_CHANNEL"`, `"LUT6"`, `"BUFGCE"` --- ### **四、扩展应用:生成过滤报告** ```tcl # 创建报告文件 set report_file [open "non_gte_cells.csv" w] puts $report_file "Cell Name,REF_NAME,IS_PRIMITIVE,SITE" # 遍历符合条件的单元 foreach cell [get_cells -hier -filter {REF_NAME !~ "*GTE*"}] { puts $report_file "[get_property NAME $cell],\ [get_property REF_NAME $cell],\ [get_property IS_PRIMITIVE $cell],\ [get_property SITE $cell]" } close $report_file ``` --- ### **五、注意事项** 1. **大小写敏感**: * Vivado属性匹配默认**区分大小写** * 如需忽略大小写,使用正则表达式修饰符: ```tcl get_cells -filter {REF_NAME !~ "(?i).*gte.*"} ``` 2. **层次化搜索**: * 添加`-hier`参数可递归搜索子模块: ```tcl get_cells -hier -filter {REF_NAME !~ "*GTE*"} ``` 3. **性能优化**: * 在大型设计中,先限定搜索范围可提升效率: ```tcl get_cells -of [get_nets clk_100m] -filter {REF_NAME !~ "*GTE*"} ``` --- ### **六、典型输出示例** 执行`get_cells -filter {REF_NAME !~ "*GTE*"} -limit 3`可能返回: ``` my_design/u_fft/lut_inst my_design/u_control/reg_inst my_design/clk_gen/bufg_inst ``` 对应的属性验证: ``` Cell Name: lut_inst => REF_NAME = LUT6 Cell Name: reg_inst => REF_NAME = FDRE Cell Name: bufg_inst => REF_NAME = BUFGCE ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值