get_*
コマンドでは、デフォルトでは現在のインスタンスのレベルでのみオブジェクトが検索されますが、-hierarchical
オプションを使用すると、現在のインスタンスのレベルから各デザイン階層を検索できます。
get_cells -hierarchical * ; # Returns all cells of the design.
get_nets -hier *nt* ; # Returns all hierarchical nets that match *nt*.
-hierarchical
オプションでは、オブジェクトの完全な階層名に対してではなく、デザイン階層の各レベルで指定された名前のパターンが検索されます。通常、-hierarchical
を使用する場合、指定する検索パターンに階層区切り文字を含めないでください。そうでないと、オブジェクトは返されません。ただし、合成中にネットリストが部分的にフラット化されており、フラット化されたネットリスト レベルを示すのにも階層区切り文字が使用されている場合は例外です。この場合、階層区切り文字は名前の階層レベルを示しており、メモリ内に読み込まれているデザインの階層レベルを示しているわけではないので、階層区切り文字を検索パターンに使用できます。
次の例は名前を使用したオブジェクトの取得 に基づいており、階層ネットリストのみを示します。
get_cells -hierarchical B/* ; # No cell is returned.
get_cells -hierarchical b* ; # B/b1 and B/b2 are returned.
-hierarchical
を使用した検索は、current_instance
コマンドを使用して階層インスタンスを指定し、各階層レベルで指定の名前のパターンを手動で検索するのと同じです。次の例では、名前を使用したオブジェクトの取得 でこの手動検索を実行しています。
set result {}
foreach hcell [list "" A B A/a1 A/a2 B/b1 B/b2] {
current_instance $hcell ;# Move scope to $hcell
set result [concat $result [get_cells <pattern>]]
current_instance ;# Return scope to design top-level
}
重要:
-hierarchical
を -regexp
と共に使用する場合、検索パターンは完全な階層名と比較され、検索パターンとして「B/.*
」を指定した場合にこのパターンに一致するセル名が返されます。たとえば、名前を使用したオブジェクトの取得 に基づいて、get_cells -hierarchical -regexp
B/.*
はブロック B の下にあるすべてのセルを返します。-regexp
の詳細は、
『Vivado Design Suite Tcl コマンド リファレンス ガイド』 (UG835) を参照してください。