大きなプロジェクトがあり、[Sources] ウィンドウの階層ビューで特定のファイルを検索しています。
検索をしようとすると、次のようなポップアップ メッセージが表示されます。
Sorry, this operation is not available due to the large number of nodes in this tree
この理由を教えてください。
この「large number」は何を基準に決められるのですか。
回避策はありますか。
この制限値を無効にするか、または変更することはできますか。
階層ビューはインスタンスごとのビューです。モジュール名およびファイル名は使いやすさのため相互関連していますが、ツリーの各ノードはモジュールのインスタンスをぞれぞれ表します (VHDL ではエンティティとアーキテクチャのペア)。
つまり、ファイル数が比較的少なくても、同じモジュールのインスタンスが複数あると、非常に大きなツリーが生成されます。
ツリーのノード数が 500 あたりになると、検索速度が低下し始めます。
ノード数がこれよりもかなり大きい場合 (ノード数が数百万、または数十億にもなる有効デザインを確認)、メモリ使用率および検索のランタイムに問題が発生します。
これを防ぐため、Vivado でツリーのノード数が指定数を超えると、ツリー全体があらかじめビルドされなくなります。まずトップ レベルだけがビルドされ、ユーザーがその下位を展開表示させるときに下位ノードがビルドされるようになっています。
これを行うときは、検索およびすべてを展開表示する機能を無効にしておく必要があります。
ノードの制限数は 50000 に設定されていて、循環参照を含むデザインでは、この値を超えてしまうのが一般的です。
この制限値を増加するには、gui.sourceHierarchyLimit パラメーターを使用します。
set_param gui.sourceHierarchyLimit <value>
循環依存がないか、または予想を上回る数のノードがないかを確認するため、Vivado のデザイン ツリーを解析したい場合は、階層ツリーの基本となるデータ構造を表すデザイン グラフのダンプのテキスト ビューをエクスポートできます。
この作業を行うには、Tcl コンソールで次のコマンドを実行します。
debug::design_graph -dump_graph
AR# 53988 | |
---|---|
日付 | 09/07/2017 |
ステータス | アクティブ |
種類 | 一般 |
ツール |