.. _Views:

Views
=====


.. _Checks View:

Checks View
~~~~~~~~~~~


The **Checks View** presents all the **check that, expect, assert and assume** constructs in the project.

Open the view from menu :menuselection:`Window --> Show View --> Other... --> DVT --> Checks`
**Double click** on a check and jump to the source location.

.. list-table::

   * - .. figure:: ../../images/icons/obj16/check_obj.png
     - check that
   * - .. figure:: ../../images/icons/obj16/assert_obj.png
     - assert
   * - .. figure:: ../../images/icons/obj16/expect_obj.png
     - expect
   * - .. figure:: ../../images/icons/obj16/assume_obj.png
     - assume


.. figure:: ../../images/edt_checks_view_notes.png
	:align: center



1. **Quick Search**. You can use :ref:`CamelCase`, :ref:`Simple Regex` or :ref:`Hierarchical Search` to locate a specific element. By default, hierarchical search will show all descendants:

.. figure:: ../../images/edt_checks_view_quick_search_all_descendants.png
	:align: center

2. **Check Kind Filters**. You may choose to hide assertions, assumptions, checks or expects - see the image below:

.. figure:: ../../images/edt_checks_view_filter_menu.png
	:align: center

Code Templates View
~~~~~~~~~~~~~~~~~~~

.. include:: code-templates-view-content.rst

.. _Compile Order view:

Compile Order view
~~~~~~~~~~~~~~~~~~

.. include:: compile_order.rst


.. figure:: ../../images/edt_compile_order_view.png

.. list-table::
   :header-rows: 1
   :widths: auto

   * - .. figure:: ../../images/icons/obj16/e_file_gray_obj.png
     - A file that is not part of the current project (files are not under the project directory).
   * - .. figure:: ../../images/icons/obj16/e_file_obj.png
     - A file in your project.


**Right click** on a module then **Go To Import** to jump to the import location. If the module is imported multiple times, a file selection dialog will pop-up.

.. _Build Config Hierarchy:

Build Config Hierarchy
----------------------

.. include:: build_config_hierarchy.rst

.. _Quick Compile Order View:

Quick Compile Order View
------------------------

.. include:: quick_compile_order_view.rst

.. figure:: ../../images/edt_quick_compile_order_view.png

.. _Console View:

Console View
~~~~~~~~~~~~

.. include:: console_view.rst

.. figure:: ../../images/edt-console-hyperlinks.png

.. _Coverage View:

Coverage View
~~~~~~~~~~~~~

.. include:: coverage_view.rst

.. figure:: ../../images/edt_coverage_view_notes.png

1. **Quick Search**. You can use :ref:`CamelCase`, :ref:`Simple Regex` or :ref:`Hierarchical Search` to locate a specific element. By default, hierarchical search will show all descendants:

.. figure:: ../../images/edt_coverage_view_quick_search_all_descendants.png

2. **Cover Group**.

3. **Cover Items**.

.. _Call Hierarchy View:

Call Hierarchy View
~~~~~~~~~~~~~~~~~~~

The **Call Hierarchy** view presents the call tree of a **method** or **TCM**.

Place the editor cursor on a method definition or method call, **right-click**, and choose :menuselection:`Show --> Call Hierarchy`, or press :kbd:`Ctrl+Alt+H`.

.. figure:: ../../images/e_call_hierarchy_trigger_editor.png

You can **expand** nodes in the tree to further inspect the hierarchy.

.. figure:: ../../images/e_call_hierarchy_general.png

.. tip::

  **Double click** on any node to jump to the **method call**.

.. tip::

  Use **Up and Down** arrow keys to navigate the view, **Left** to collapse and **Right** to expand.

.. tip::

  **Right-click** on a node to:

  -  **Remove from View**  Remove selected node from the tree.
  -  **Expand Children**  Expand all children of the selected node.
  -  **Expand Multiple Levels** Expand a custom number of levels from the selected node.
  -  **Go to Declaration**  Jump to the declaration of the selected method.


**Toolbar**

.. list-table::

   * - .. figure:: ../../images/icons/act16/ch_callers.gif
     - Caller Hierarchy
     - Switch strategy to caller (disabled, only available for SystemVerilog).
   * - .. figure:: ../../images/icons/act16/ch_callees.gif
     - Callee Hierarchy
     - Switch strategy to callee. Also refreshes the view.
   * - .. figure:: ../../images/icons/act16/refresh_template.png
     - Refresh View
     - Recompute the call tree if dirty (see below).
   * - .. figure:: ../../images/icons/act16/synced.png
     - Link with editor
     - Link tree selection with editor.
   * - .. figure:: ../../images/icons/act16/history_list.png
     - History
     - Shows a list of methods on which Call Hierarchy was most recently called.
   * - .. figure:: ../../images/icons/act16/prepend_package.png
     - Prepend Package Name
     - Show package name in labels.
   * - .. figure:: ../../images/icons/act16/expand_tree.png
     - Expand Multiple Levels
     - Expand a custom number of levels.
   * - .. figure:: ../../images/icons/act16/inspect_layout.png
     - Toggle Inspect Panel
     - Show/hide the inspect panel embedded in the view.
   * - .. figure:: ../../images/icons/act16/layers.png
     - Analyze all root method extensions
     - Analyzes root method extensions.

**Icons**

.. list-table::

   * - .. figure:: ../../images/icons/obj16/method_obj.png
     - Method call or method definition
   * - .. figure:: ../../images/icons/obj16/predefined_method_obj.png
     - Predefined method call
   * - .. figure:: ../../images/edt-tcm-icon.png
     - TCM


**Refresh**

The Call Hierarchy view is **not automatically updated** at incremental build.

When you decide it's time to recompute the view contents, simply click the **Refresh** toolbar button.

.. figure:: ../../images/e_call_hierarchy_needs_refresh.png

.. note::

  Refresh may not retain the state of the method call tree.


.. _Inspect View:

Inspect View
~~~~~~~~~~~~

**Inspect View** shows detailed information about various elements in DVT.

Open the view from menu :menuselection:`Window --> Show View --> Other... --> DVT --> Inspect`.

To inspect an element, simply **select** it in a view or click on its name in the editor.

Information about the selected element will be presented in the view.

Each element shown in the Inspect View starts with an information line regarding the file and line number of the element.

The Inspect View highlights the relevant source code lines of the selected element. These lines may be surrounded with additional source code to provide a context, if necessary.

You can customize the number of lines shown by going to :menuselection:`Window --> Preferences --> DVT --> Maximum Inspect View context lines`, or by using the key mappings detailed in the **Hotkeys** chapter below.

WaveDrom Timing Diagrams
------------------------

.. figure:: ../../images/common/e_inspect_view_standalone.png

**Hotkeys**

The following key mappings are available while interacting with the Inspect View.

.. list-table::

   * - :kbd:`CTRL+ALT+[`
     - Decrease the number of context lines shown
   * - :kbd:`CTRL+ALT+]`
     - Increase the number of context lines shown
   * - :kbd:`CTRL+K`
     - Cycle through highlighted inputs shown inside the view

.. include:: wavedrom-timing-diagrams.rst


.. _Layers View:

Layers View
~~~~~~~~~~~


The *e Language* aspect oriented programming (AOP) capabilities allows you to "extend" some entities, for example a struct using extend or when, a method using is also, is first etc.. The definition of some entity might end up being spread over multiple files.

The **Layers View** provides a compact presentation of all the extensions (layers) of a specific entity. The layers are ordered according to the compile order as computed from imports in top files and test files.

Position the cursor on the entity name and press :kbd:`Shift+F3` or **right click** and chose :menuselection:`Show --> Layers` from the menu.

The Layers View is automatically raised at any invocation. You can also open it from :menuselection:`Window --> Show View --> Other... --> DVT --> Layers`.

**Double click** on a layer and jump to the corresponding source location.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.


.. figure:: ../../images/edt_layers_view_method_notes.png

#.  **Collect Layers**. Applicable only for methods. Collects the source code from all method layers and dumps it to a temporary file.
#.  **Show History List**. Click to see the previously inspected layers (see the image below):


.. figure:: ../../images/edt_layers_view_history.png

In case of layers for a struct/unit you can **right click** and further inspect the :ref:`Type Hierarchy View` or the :ref:`Verification Hierarchy View`. 

Sometimes you might want see the layers of the type of a field, the layers of the return type of a method or the layers of the type of the elements in a list. Just place the cursor on the element and press **Shift+F3** twice (first time you will see the layers of the element, and second time the layers of its "associated" type, as defined above).

.. _Quick Layers View:

Quick Layers View
-----------------

.. include:: quick_layers_view.rst

.. figure:: ../../images/edt_quick_layers_view.png

Similar to the layers view, you can quickly inspect the "associated" type of an element by pressing the shortcut key twice.

.. _Macros View:

Macros View
~~~~~~~~~~~

The **Macros View** presents all the preprocessing macros in the project (including **define as** and **define as computed**).

Open the view from menu :menuselection:`Window --> Show View --> Other... --> DVT --> Macros`.

**Double click** on a macro to jump to its definition.

**Right click** on a macro to view its **Layers** and **Usages**.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - .. figure:: ../../images/icons/obj16/preproc_define.png
     - Preprocessing define
   * - .. figure:: ../../images/icons/obj16/preproc_undefine.png
     - Preprocessing undefine
   * - .. figure:: ../../images/icons/obj16/preproc_ifdef.png
     - Preprocessing ifdef, ifndef
   * - .. figure:: ../../images/icons/obj16/preproc_define_as.png
     - Define As Macro
   * - .. figure:: ../../images/icons/obj16/preproc_define_as_computed.png
     - Define As Computed Macro
   * - .. figure:: ../../images/icons/obj16/preproc_define_as_inst.png
     - Define As Macro Match
   * - .. figure:: ../../images/icons/obj16/preproc_define_as_computed_inst.png
     - Define As Computed Macro Match


.. figure:: ../../images/edt_macros_view.png
  :align: center


.. _Quick Macros View:

Quick Macros View
-----------------

.. include:: quick_macros_view.rst

.. figure:: ../../images/edt_quick_macros_view.png

.. _Outline View:

Outline View
~~~~~~~~~~~~

.. include:: outline_view1.rst

.. figure:: ../../images/edt-reference-views-outline_view.png

.. include:: outline_view2.rst

.. _Quick Outline View:

Quick Outline View
------------------

Press :kbd:`Ctrl+O` to open the **Quick Outline** dialog. It presents an overview of your file.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.

.. figure:: ../../images/edt-reference-views-quick_outline_view.png

Outline View Preferences
~~~~~~~~~~~~~~~~~~~~~~~~
You can configure the **Outline View** contents from menu **Window > Preferences > DVT > e Language > Outline View**.

.. figure:: ../../images/edt-reference-views-outline_view_prefs.png


.. _Problems View:

Problems View
~~~~~~~~~~~~~

If a project contains errors, for example syntax errors, it will be indicated using **decorators**:

.. figure:: ../../images/edt-get_started-browse_err-navigator.png

You can use the **Problems View** to inspect the errors.  Open the view from menu  **Window > Show View > Other... > General > Problems**. **Double clicking** on some error will jump to the source location.


.. figure:: ../../images/edt-get_started-browse_err-fullscreen.png

.. _Quick Query View:

Quick Query View
~~~~~~~~~~~~~~~~

Press :kbd:`Ctrl+Alt+Q` to quickly open the **Quick Query View**, which provides a filterable list of all the types, macros and compiled files in the project.

This view supports semantic search, allowing to look for a specific element. In order to do this, structure your query in the following manner: *query_key:search_pattern*.

You can use :ref:`CamelCase` or :ref:`Simple Regex` for the *search_pattern*.

.. tip::

	Use Content Assist to see all the available query keys (:kbd:`CTRL+Space`).

DVT supports the following query keys:

- file
- macro
- package
- scalar_type
- sequence
- struct
- type
- unit

.. note::

	You can use the *type:search_pattern* query in order to search for all the types (structs, units etc.) defined in your project.

Additionally, there are **UVM-specific queries** that have the following format: *uvm_class_name:search_pattern*, where *uvm_class_name* is one of the following:

- any_port
- any_sequence
- any_sequence_driver
- any_sequence_item
- uvm_agent
- uvm_agent_config
- uvm_bfm
- uvm_collector
- uvm_config_params
- uvm_driver
- uvm_env
- uvm_env_config
- uvm_mem
- uvm_monitor
- uvm_reg
- uvm_reg_file
- uvm_reg_map
- uvm_scoreboard
- uvm_sequence
- uvm_sequence_item
- uvm_signal_map
- vr_ad_map
- vr_ad_mem
- vr_ad_reg
- vr_ad_reg_file

Select an element and press :kbd:`Enter` or **click** to navigate to it.

.. note::

	By default, the Quick Query View will display 100 items from each category (types, macros, files). You can customize this value by going to :menuselection:`Window --> Preferences --> DVT --> Maximum number of elements per category in Quick Query View`.

.. _Tasks View:

Tasks View
~~~~~~~~~~


.. figure:: ../../images/edt-reminders-CodeTasksView.png


You can embed reminders in your source files by adding comments prefixed by certain "keywords" called *task tags*. 

There are three predefined tags:

* **FIXME** - high priority
* **TODO** - normal priority
* **XXX** - low priority

All reminders are listed in the **Tasks View**. If it is not visible, open the view from menu **Window > Show View > Other > General > Tasks**.

**Double click** on a task to jump to the marker definition.

You can define custom reminder tags and assign them priorities:

- Navigate to **Window > Preferences > DVT >  Task Tags** :

.. figure:: ../../images/common/tasktag-preferences.png

- You can specify if the tags should be considered case-sensitive and if the tag name should be displayed in Tasks View.

- Click the **Add...** button on the right, enter the name of your tag and select its priority 
  
.. figure:: ../../images/common/reminders-new_tag.png

- Click **OK** in the New Task Tag and Preferences dialogs

DVT will recognize the new tag and highlight it in code comments.  

.. note::
  
  It is recommended to rebuild the project so that DVT rescans all files for reminders.

.. _Types View:

Types View
~~~~~~~~~~

.. include:: types_view.rst

.. figure:: ../../images/edt_types_view.png

.. _Quick Types View:

Quick Types View
----------------

.. include:: quick_types_view.rst

.. figure:: ../../images/edt_quick_types_view.png

.. _Type Hierarchy View:

Type Hierarchy View
~~~~~~~~~~~~~~~~~~~

The **Type Hierarchy View** presents the like-inheritance and the members of a struct or unit.

Position the cursor on the element name and press :kbd:`F4` or **right click** and choose **Type Hierarchy** from the menu.

The Type Hierarchy View is automatically opened at any invocation. You can also open it from :menuselection:`Window --> Show View --> Other... --> DVT --> Type Hierarchy`.

You can right click in the inheritance tree and further inspect the **Type Hierarchy** or see **Usages**.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.


.. figure:: ../../images/edt_type_hierarchy_view.png

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

.. |filter-diagrams| image:: ../../images/icons/act16/filter.png
  :class: inline

|history-list| **Show History List**

Click to see the previously inspected types:

.. figure:: ../../images/edt_type_hierarchy_view_history.png

|filter-diagrams| **Filters...**

Select what members to show (methods, fields, events etc.):


.. figure:: ../../images/edt_type_hierarchy_view_members_filter.png


.. _Quick Type Hierarchy View:

Quick Type Hierarchy View
-------------------------

You can quickly inspect and jump to a specific parent or child in the hierarchy. Press :kbd:`Ctrl+T` with the cursor positioned on the element name.

The **Quick Type Hierarchy View** will pop-up and present a filterable list with all of the selected element's hierarchy.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.

Select and press :kbd:`Enter` or :kbd:`click` to jump to the corresponding source location.

.. tip::
  
   While the **Quick Type Hierarchy View** is open you can press :kbd:`Ctrl+T` to switch between **Full type** and **Supertype** hierarchy.

.. figure:: ../../images/edt_quick_type_hierarchy_view.png

For methods you can also see the implementations along the hierarchy (icons are not grayed).


.. figure:: ../../images/edt_quick_type_hierarchy_view_method.png

.. _UVM Browser View:

UVM Browser View
~~~~~~~~~~~~~~~~


The **UVM Browser View** is an intuitive entry point for exploring the components of a UVM-based or eRM-based verification environment.

It allows you to explore UVM-based types grouped by categories, like agents, monitors, BFMs, drivers or sequences and easily inspect the UVM flow specific API, like sub-instances, overridden phases or TLM ports.

Open the view from menu :menuselection:`Window --> Show View --> Other... --> DVT --> UVM Browser`.

You can use :ref:`CamelCase` or :ref:`Simple Regex` to locate a specific element.


.. figure:: ../../images/common/e-uvm-browser-presentation.png

.. list-table::

   * - **Toolbar**
     -  
     -  
   * - .. figure:: ../../images/icons/act16/prepend_package.png
     - **Prepend Package Name**
     - Prepend the enclosing package name to the name of each element, useful when you explore for example all agents across packages.
   * - .. figure:: ../../images/icons/obj16/package.png
     - **Group By Package**
     - Group categories by package. You may chose to see for example all agents across packages or to explore all categories in a specific package.

The top panel presents all the UVM-based structs and units defined in your verification environment. For convenience they are grouped by categories like agents or monitors.

The inheritance hierarchy between elements is shown up to the UVM base type and down to when subtypes.

The categories and their corresponding **base types** are the following:

.. list-table::

   * - Category
     - Base type
     - Methodology
   * - Agents
     - uvm_agent
     - UVM e
   * - Agent Configs
     - uvm_agent_config
     - UVM e
   * - BFMs
     - uvm_bfm
     - UVM e
   * - Collectors
     - uvm_collector
     - UVM e
   * - Config Params
     - uvm_config_params
     - UVM e
   * - Drivers
     - any_sequence_driver
     - eRM
   * - Envs
     - any_env / uvm_env
     - eRM / UVM e
   * - Env Configs
     - uvm_env_config
     - UVM e
   * - Items
     - any_sequence_item
     - eRM
   * - Memories
     - vr_ad_mem
     - vr_ad
   * - Monitors
     - uvm_monitor
     - UVM e
   * - Ports
     - any_port
     - eRM
   * - Registers
     - vr_ad_reg
     - vr_ad
   * - Register Files
     - vr_ad_reg_file
     - vr_ad
   * - Register Maps
     - vr_ad_map
     - vr_ad
   * - Scoreboards
     - uvm_scoreboard
     - UVM e
   * - Sequences
     - any_sequence
     - eRM
   * - Signal Maps
     - uvm_signal_map
     - UVM e
   * - Virtual Drivers
     - any_sequence_driver (of a virtual sequence)
     - eRM
   * - Virtual Sequences
     - any_sequence (no item)
     - eRM
   * - Phases
     - tf_phase_t
     - UVM e
   * - Phase domains
     - tf_domain_t
     - UVM e


.. |uvm-btn| image:: ../../images/icons/obj16/uvm.png
  :class: inline


The bottom *Members Panel* panel displays members of the type selected in the top panel. You can toggle the **UVM Members Mode** on/off using the |uvm-btn| button.

In **UVM Members Mode** it displays the following members:

-  All unit instances
-  Fields whose type is or inherits from one of the **base types** defined in the table above
-  Fields whose type is or inherits from a type defined in the uvm_e, uvm_scbd and vr_ad libraries
-  Fields whose type is or inherits from uvm_accel_input_pipe_proxy or uvm_accel_output_pipe_proxy
-  Extensions of fields, events and methods introduced by calls to macros defined in the uvm_e, uvm_scbd and vr_ad libraries
-  Extensions of UVM Scoreboard Data Transformation methods
-  Extensions of UVM Scoreboard Match Process Customization methods
-  Extensions of e Language Phases and Predefined Methods, like run(), connnect_pointers(), pre and post_generate() etc.
-  Extensions of body(), pre_body() and post_body() methods of any_sequence

When the **UVM Members Mode** is off, the *Members Panel* behaves exactly like the *Members Panel* of the :ref:`Type Hierarchy View`.


.. _UVM Sequence Tree View:

UVM Sequence Tree View
~~~~~~~~~~~~~~~~~~~~~~

The **UVM Sequence Tree View** presents the call tree of a sequence.

Place the editor cursor on a sequence, **right click** and choose :menuselection:`Show --> UVM Sequence Tree` or press :kbd:`Ctrl+Alt+Shift+S`.


.. figure:: ../../images/common/e_uvm_sequence_tree_editor_right_click_menu.png

The view is automatically raised and populated with the call tree of the selected sequence.

The call tree is made of all sub-sequences that are triggered by the selected sequence, in order, recursively down to leaf items.


.. figure:: ../../images/common/e_uvm_sequence_tree_view.png

The **pre_body(), body()** and **post_body()** methods of each sequence are analyzed, along with all TCMs called directly or indirectly from any of these methods.

.. note::

  All relevant layers (extensions) of each TCM are analyzed according to their type (**is also**, **is first**, **is only**). A TCM layer is relevant if it belongs to a struct layer whose determinant is the same or included by the determinant of the sequence layer where the view was called.

.. note::

  Only the modules loaded up to and including the module where the view is triggered are analyzed. For example, when triggered from a particular test, sequence calls in other tests are not analyzed. See also how DVT handles :ref:`e Language Test Files` and the :ref:`Compile Order View`.

.. note::

  *all of, first of* and *start* actions are also shown.

.. note::

  A sub-sequence may be called using a **do** action or started using the **seq.start_sequence()** function.

.. tip::
  
  **Double click** on any node to jump to the **sequence call**.

.. tip::
  
  **Right-click** on a sequence node to **Show UVM Sequence Tree** of the selected sequence. Practically set the selected sequence as root.


.. list-table:: Toolbar
   :header-rows: 1
   :widths: auto

   * - .. figure:: ../../images/icons/act16/history_list.png
     - **Show History List**
     - Click to see the previously inspected sequence call trees.
   * - .. figure:: ../../images/icons/act16/prepend_package.png
     - **Prepend Package Name**
     - Prepend the enclosing package name to the name of each class.


.. list-table:: Icons
   :header-rows: 1
   :widths: auto

   * - .. figure:: ../../images/icons/obj16/sequence_obj.png
     - Sequence.
   * - .. figure:: ../../images/icons/obj16/sequence_item_obj.png
     - Sequence item.
   * - .. figure:: ../../images/icons/obj16/fork_join_obj.png
     - All of/first of block.
   * - .. figure:: ../../images/icons/obj16/fork_join_process_obj.png
     - All of/first of *branch*, or *start* action.



.. _Verification Hierarchy View:

Verification Hierarchy View
~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

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

.. |show_hide_ports| image:: ../../images/icons/act16/show_hide_ports.png
  :class: inline

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

* |verification_hierarchy_top| **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-list| **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.
* |alphab_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

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

* **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




