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 1

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...

Comprehensive Guide to SSTI Explained with Payload Bypass Techniques

Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...

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.