Simulation Prerequisites

Simulator switches for SystemVerilog and VHDL

In order for DVT to communicate with the simulator, you need to pass the simulator a set of switches. The table below details the required switches per simulator:

Xcelium

xrun -linedebug -input “@source $DVT_HOME/libs/dvt_debug_tcl/dvt_debug.tcl” …

IUS

irun -linedebug -input “@source $DVT_HOME/libs/dvt_debug_tcl/dvt_debug.tcl” …

VCS

vcs -debug_acc+all -debug_region+cell+encrypt …

./simv -ucli -i “$DVT_HOME/libs/dvt_debug_tcl/dvt_debug.tcl” …

Questasim

vlog -O0 -vopt +acc …

vsim -vopt +acc -do “do $DVT_HOME/libs/dvt_debug_tcl/dvt_debug.tcl” …

Note

When running vsim with -qwavedb option, the Variables View may not be populated correctly (missing local and class variables).

Note

In general, simulation runs slower when debugging is enabled. This has nothing to do with the DVT-Simulator integration. The extent of this effect is simulator-specific.

Note

The -qwavedb flag of vsim is known to interfere with the proper display of local and class variable in the Variables View.

The dvt_sn_debug Library for e-Language

In order for DVT to communicate with Specman, you need to load or precompile the dvt_sn_debug library into Specman.

The library is typically located in the $DVT_HOME/libs folder, which you should add to your $SPECMAN_PATH

For example:

irun $DVT_HOME/libs/dvt_sn_debug/e/dvt_top.e ....

The dvt_sn_debug library implements the communication between DVT and Specman in debug mode. It doesn’t add any simulation overload.

Communication between DVT and the simulator is done:

  • when you connect

  • when a breakpoint is hit

  • when you switch threads or frames

  • when you inspect variables (they are fetched lazily)

  • when you add/remove or enable/disable breakpoints while being connected to the simulator