Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Generating FSDB Waveforms with VCS, IES, and Questa for Verdi Debugging

Tech Sep 19 37

The Verdi debug platform consumes Fast Signal Database (FSDB) files to provide full-featured waveform analysis, source browsing, schematic views, and FSM bubble diagrams. These FSDB files can be produced by the major simulation engines. Below are the integration recipes for Synopsys VCS, Cadence IES (irun), and Mentor QuestaSim, followed by a single Verdi invocation to load the resulting database.

1. Synopsys VCS Flow (UCLI Dumping)

Compilation
Compile the design with the Novas PLI table and shared library. The example assumes environment variable VERDI_HOME is set.

vcs -sverilog -debug_acc+all -LDFLAGS -rdynamic -full64 \
    -P ${VERDI_HOME}/share/PLI/VCS/${PLATFORM}/novas.tab \
       ${VERDI_HOME}/share/PLI/VCS/${PLATFORM}/pli.a \
    -f tb_top.f \
    +vcs+lic+wait \
    -l com_vcs.log

Simulation
Run the compiled simv executable in UCLI mode. The Tcl script configures FSDB dumping and then triggers execution.

./simv +ntb_random_seed=${SEED} \
    -ucli -i ./tcl/setup_dump.tcl \
    +fsdb+autoflush \
    -l sim_vcs.log

UCLI Control Script (./tcl/setup_dump.tcl)

global env
fsdbDumpfile "$env(WAVE_NAME).fsdb"
fsdbDumpvars 0 "tb_top"
run

2. Cadence IES Flow (NCSIM Interface)

Elaboration
irun is used in two-step mode. The first pass elaborates the design snapshot.

irun -elaborate -access +r \
    -f tb_top.f \
    -top tb_top \
    -licqueue \
    -l com_irun.log

Simulation with Dumping
The -R flag reuses the previously elaborated snapshot. Dumping commands are passed via -input.

irun -R \
    -input ./tcl/setup_dump_ies.tcl \
    +fsdb+autoflush \
    -licqueue \
    -l sim_irun.log

Tcl Dump Script (./tcl/setup_dump_ies.tcl)

global env
call fsdbDumpfile "$env(WAVE_NAME).fsdb"
call fsdbDumpvars 0 "tb_top"
run
quit

Note: Cadence requires call before each FSDB command, and an explicit quit to end the simulation cleanly.

3. Mentor QuestaSim Flow

Library Creaiton & Compilation
Create the work library, map it, and compile the source files.

vlib work
vmap work work
vlog -64 -sv +acc \
    -f tb_top.f \
    -l com_questa.log

Simulation with the FLI Shared Object
The -pli switch loads the Novas FLI library. A Tcl DO file controls dumping.

vsim -64 -batch \
    -pli ${VERDI_HOME}/share/PLI/MODELSIM/${PLATFORM}/novas_fli.so \
    work.tb_top \
    -do ./tcl/setup_dump_questa.tcl \
    +fsdb+autoflush \
    -l sim_questa.log

DO Script (./tcl/setup_dump_questa.tcl)

global env
fsdbDumpfile "$env(WAVE_NAME).fsdb"
fsdbDumpvars 0 "tb_top"
run -all
quit -sim

4. Loading the FSDB in Verdi

Once the simulation produces the FSDB file, open it with Verdi, referencing the original file list for source code and design hierarchy.

verdi \
    -sv \
    -nologo \
    -f tb_top.f \
    -ssf wave_database.fsdb

Adjust the -ssf argument to point to the actual waveform file generated by the chosen simulator.

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Implement Image Upload Functionality for Django Integrated TinyMCE Editor

Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.