I have a large project and am looking for a specific file in the hierarchy view under Design Sources. However, when I try to search, I get a pop-up message stating:
"Sorry, this operation is not available due to the large number of nodes in this tree"
Why does this occur?
What is the number used to determine the "large number"
Is there anything that can be done to get around this error?
Is it possible to disable or change the threshold of this limitation?
The hierarchy view is primarily an instance based view. The module names and file names are co-related for ease-of-use, but primarily each node in the tree represents a unique instance of a module (or entity-architecture pair, in VHDL). So, even though the number of files could be relatively small, if there are multiple instances of the same module, that can easily generate a very large tree.
When the number of nodes in the tree gets around 500, the performance of the search begins to degrade. When the number of nodes is much larger that this (valid designs with millions and even billions of nodes have been looked at), the memory usage and runtime of the search become impractical. To guard against this, whenever the tree exceeds a certain specified number of nodes, Vivado does not build the whole tree ahead of time; rather, Vivado builds only the top level, and then fills in on the fly when the user manually expands. When this is done, the search and expand all features must be disabled.
This limit is set at 50,000 nodes and is most commonly surpassed with designs that contain circular references?
To increase the limit, use the gui.sourceHierarchyLimit parameter:
set_param gui.sourceHierarchyLimit <value>
If you would like to analyze the design tree as seen by Vivado to see where there might be a circular dependency or unexpected number of nodes, you can export a text view of dump of the design graph that represents the underlying data structure of the hierarchy tree. To do this, run the following command from the Tcl console: