.. _SystemVerilog OVM or UVM Library Compilation:

SystemVerilog OVM or UVM Library Compilation
============================================

   
Typically the OVM or UVM libraries are compiled using directives like:

.. code-block::

    +incdir+/path/to/xvm/src
    /path/to/xvm/src/xvm_pkg.sv

.. rubric:: Using the -ovm or -uvm directives

You can use the ``-ovm`` or ``-uvm`` directives to compile the OVM or UVM libraries. They are shortcuts for the explicit directives above.

For ``-uvm``:

#.  If the ``$UVM_HOME`` system variable is specified, use that library.
#.  If the ``$DVT_UVM_HOME`` system variable is specified, use that library. If you launch DVT using one of the utility scripts that ship with DVT, ``$DVT_UVM_HOME`` is set by default to the most recent uvm library in ``$DVT_HOME/predefined_projects/libs`` (if you're using DVT Eclipse or the DVT for VS Code pre-packed distribution) or ``$DVT_HOME/common/predefined_projects/libs`` (if you're using the DVT extension from the VS Code Marketplace).
#.  If ``$DVT_UVM_HOME`` is not defined, falls back to ``$DVT_HOME/predefined_projects/libs/uvm-1.2`` (if you're using DVT Eclipse or the DVT for VS Code pre-packed distribution) or ``$DVT_HOME/common/predefined_projects/libs/uvm-1.2`` (if you're using the DVT extension from the VS Code Marketplace).

The ``-ovm`` directive works in a similar way.

.. note::
    
    At any time you can set a system variable using for example:
    
    .. code-block::
        
        +dvt_setenv+UVM_HOME=/path/to/xvm


