-hierarchical オプションの使用 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: Tcl スクリプト機能の使用 (UG894)

Document ID
UG894
Release Date
2023-11-17
Version
2023.2 日本語

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) を参照してください。