Vivado/TCL get_cells 动态正则表达式
Vivado/TCL get_cells with dynamic regexp
我已经写了一个小例子来说明我想做什么以及我收到什么输出。
set a 0
set tmp [get_cells -hier -regexp [ format .*latch\[%d\].* $a ] ]
puts [ llength $tmp ]
set tmp [get_cells -hier -regexp {.*latch\[0\].*}]
puts [ llength $tmp ]
输出:
WARNING: [Vivado 12-180] No cells matched '.*latch[0].*'. [C:/dev/jesd204b_clock_gen/logic/proj/xilinx/2017.4/Test1/Test1.srcs/sources_1/tdc/TDCConstraints.tcl:24]
0
16
如您所见,第一个 get_cells 调用 returns 一个警告和 0 个元素,即使它与第二个调用具有相同的正则表达式,后者成功
我做错了什么,我该如何解决这个问题?
非常感谢您的回答。
然而它们并不完全相同:
% format .*latch\[%d\].* $a
.*latch[0].*
% puts {.*latch\[0\].*}
.*latch\[0\].*
您必须在 format
中使用大括号,或者对字符串进行双重转义,即使用:
format {.*latch\[%d\].*} $a
或者
format .*latch\\[%d\\].* $a
我已经写了一个小例子来说明我想做什么以及我收到什么输出。
set a 0
set tmp [get_cells -hier -regexp [ format .*latch\[%d\].* $a ] ]
puts [ llength $tmp ]
set tmp [get_cells -hier -regexp {.*latch\[0\].*}]
puts [ llength $tmp ]
输出:
WARNING: [Vivado 12-180] No cells matched '.*latch[0].*'. [C:/dev/jesd204b_clock_gen/logic/proj/xilinx/2017.4/Test1/Test1.srcs/sources_1/tdc/TDCConstraints.tcl:24]
0
16
如您所见,第一个 get_cells 调用 returns 一个警告和 0 个元素,即使它与第二个调用具有相同的正则表达式,后者成功
我做错了什么,我该如何解决这个问题?
非常感谢您的回答。
然而它们并不完全相同:
% format .*latch\[%d\].* $a
.*latch[0].*
% puts {.*latch\[0\].*}
.*latch\[0\].*
您必须在 format
中使用大括号,或者对字符串进行双重转义,即使用:
format {.*latch\[%d\].*} $a
或者
format .*latch\\[%d\\].* $a