デザインのほかのオブジェクトに関連するオブジェクトを検索する必要がある場合があります。たとえば、特定のセルのピンに接続されているすべてのネットや、特定のネットに接続されているすべてのセルを選択する場合などです。Vivado Design Suite では、デザインのエレメントをそれらの関連性を利用して検索できます。これには、get_*
コマンドで -of_objects
オプションを使用します。関連性を使用したオブジェクトの検索 に、インメモリ デザインのオブジェクト間の関連性を示します。
get_*
オプションをサポートする -of_objects
コマンドのヘルプに、関連性のあるオブジェクトがリストされます。
get_cells -of_objects {pins, timing paths, nets, bels or sites}
get_clocks -of_objects {nets, ports, or pins}
get_nets -of_objects {pins, ports, cells, timing paths or clocks}
get_pins -of_objects {cells, nets, bel pins, timing paths or clocks}
get_ports -of_objects {nets, instances, sites, clocks, timing paths, io standards, io
banks, package pins}
-of_objects
オプションを使用すると、ネット オブジェクトのリストに接続されているピン オブジェクトのリストを簡単に取得できます。
get_pins -of_objects [get_nets -hier]
これらのネットのドライバーのリストのみを取得する場合は、-filter
オプションを使用します。
get_pins -of [get_nets -hier] -filter {DIRECTION == OUT}
-of_objects
で渡されるオブジェクトのリストが空の場合、get_*
コマンドで空の Tcl リストが返されます。また、セルのリストからピンのリストを取得したり、ネットのリストからセルのリストを取得したりできます。
次の例では、関連性を使用したオブジェクトの検索 に示すように、インスタンス a1 からクロック ピンを取得し、そのクロック ピンに接続されているネットを取得して、そのネットに接続されているピンを取得して、さらにそのピンに接続されているネットを取得して、最後にそれらのネットに接続されているピンを取得しています。
get_pins -of [get_nets -of [get_pins -of [get_nets -of [get_pins A/a1/clk]]]]
A/a2/clk A/clk A/a1/clk B/clk
最後の get_pins
コマンドにより、それまでに返されたピンに加え、階層モジュール B のクロック ピン B/clk
が返されます。階層をまたいでクロック ネット オブジェクトのプリミティブ ピンを取得するには、-leaf
コマンドの get_pins
オプションを使用できます。次の例では、-leaf
を使用した場合の結果を示します。
get_pins -leaf -of [get_nets -of [get_pins -of [get_nets -of [get_pins A/a1/clk]]]]
B/b1/data_reg/C A/a2/data_reg/C A/a1/data_reg/C B/b2/data_reg/C