.. _UVM Browser:

UVM Browser
===========

.. rst-class:: lead

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
	:align: center




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

   * - 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::
   :header-rows: 1
   :widths: auto

   * - 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-members| 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-members| 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`.

