UVM_NO_DPI Option usage

Hi,

Is the UVM DPI same as Systemverilog DPI inorder to make C and other programming languages compatible with systemverilog?

I am seeing the UVM_NO_DPI option in UVM related testbencheS. What is the usage of this option? If I am disabling UVM DPI by setting +define+UVM_NO_DPI, then what will be the behaviour and working and if I am not passing +define+UVM_NO_DPI what will be the behaviour and working?

In the DPI file I am seeing like this: what is meant by use UVM without any tool -specific overlay?

   21 `ifndef UVM_DPI_SVH
   22 `define UVM_DPI_SVH
   23
   24 //
   25 // Top-level file for DPI subroutines used by UVM.
   26 //
   27 // Tool-specific distribution overlays may be required.
   28 //
   29 // To use UVM without any tool-specific overlay, use +define+UVM_NO_DPI
   30 //
   31
   32 `ifdef UVM_NO_DPI
   33   `define UVM_HDL_NO_DPI
   34   `define UVM_REGEX_NO_DPI
   35   `define UVM_CMDLINE_NO_DPI
   36 `endif
   37
   38 `include "dpi/uvm_hdl.svh"
   39 `include "dpi/uvm_svcmd_dpi.svh"
   40 `include "dpi/uvm_regex.svh"
   41
   42 `endif // UVM_DPI_SVH

In reply to rr2007:

There is only one DPI as defined by SystemVerilog. The UVM_NO_DPI option prevents compilation of UVM C code that uses the SystemVerilog DPI. This option is only there for some environments that do not have their C compilers installed. I think this this is pretty rare, plus most tools ship with UVM libraries pre-compiled anyways.

This UVM DPI code gives you the following features:

  • UVM RAL backdoor access to DUT registers via a string path
  • improved command line access better than what you can do with $value$plusargs
  • Improved wildcard string matching using regular expressions(REGEX) instead of the simpler glob patern