.. _UVM Verification Hierarchy:

UVM Verification Hierarchy
==========================

 .. rst-class:: lead

	The **Verification Hierarchy View** presents the unit instance tree.

Position the editor cursor on the name of a unit and press :kbd:`Shift+F6` or *right-click* and choose :menuselection:`Show --> Verification Hierarchy` from the context menu.

The Verification Hierarchy View opens with the chosen unit set as the top of the hierarchy. You can also go to :menuselection:`Window --> Show View --> Verification Hierarchy` to open the view.

.. figure:: ../../images/common/e-verification-hierarchy-presentation.png
	:align: center


.. |top-vh| image:: ../../images/icons/act16/verification_hierarchy_top.png
   :class: inline

.. |history| image:: ../../images/icons/act16/history_list.png
   :class: inline


.. |show-hide-ports| image:: ../../images/icons/act16/show_hide_ports.png
   :class: inline


.. |sort| image:: ../../images/icons/act16/alphab_sort.png
   :class: inline

-   |top-vh| **Select Top** drop-down menu/pop-up dialog to select from *top* units. By default, *tops* are considered all units that instantiate other units and are not themselves instantiated, such as the unit *sys*. You can specify the list of *tops* in the project's build configuration using the directive **+dvt_e_vtop+"pkg_name::SUBTYPE unit_name"**.
-   |history| **History List** Click to see the previously inspected tops.
-   |show-hide-ports| **Show/Hide Ports** Shows or hides the ports of the selected unit. You can set the ports panel to the right or below the hierarchy.
-   |sort| **Alphabetical Sort** Sort instances and ports alphabetically. By default it is off, which means that the instances and the ports are presented in their declaration order from the source files.

The view label shows the current project, the current top unit and the number of instances in the hierarchy. 

.. figure:: ../../images/common/e-verification-hierarchy-info-label.png
	:align: center






You can *double-click* on any unit or on any port to go to its declaration.

*Right-click* on a unit instance in the hierarchy and you have the following options :

.. figure:: ../../images/common/e-verification-hierarchy-menu.png
	:align: center




-  **Show Usages (References)** Search for the references of the selected instance. More details :ref:`Show Usages, Readers or Writers` 
-  **Show Layers** Show the layers of the selected instance. More details :ref:`Layers View`.
-  **Show Type Hierarchy** Show the type hierarchy for the selected instance type. More details :ref:`Type Hierarchy View`.
-  **Show Verification Hierarchy** Set the selected instance as the top of the hierarchy and update the view.
-  **Show Diagram** Generate the UVM Component Diagram of the selected instance. More details :ref:`UVM Components Diagrams`.
-  **Copy**  Copy the label text of the selected instance to clipboard.
-  **Copy Hierarchy Path**  Copy the hierarchy path of the selected instance to clipboard. You can change the segment separator from :menuselection:`Window --> Preferences --> DVT`. 
-  **Open Type Declaration** Go to the unit declaration of the selected instance. 

*Right-click* on a port and you have the option to search for its usages or for its layers and show the constraints, also you can copy its name and the full hierarchy path of the selected port. 

.. figure:: ../../images/common/e-verification-hierarchy-view-port-menu.png
	:align: center






You can use the filters to locate a specific instance or port. You may use slash '/' characters to filter hierarchically one level and '//' to filter hierarchically all the levels. You may use the dot '.' character to filter instances that contain a specific port. See :ref:`Quick Search in Views` for more details. 

For example, filtering hierarchically all the levels for a specific port name :

.. figure:: ../../images/common/e-verification-hierarchy-filtering-filter-hierarchy-and-port.png
	:align: center




