ASIC/FPGA Design and Verification Out Source Services
Exporting simvision TRN to VCD
- In this page I will show how to convert simvision TRN wave data base to VCD.
- The motivation is to minimize to use of "license consuming" CAD software.
- The tests, which I run at work, are quite long. Some may run several hours. So I use GUI only for the first steps of program bring-up and switch to batch mode for the rest of the debug process.
- While the test runs and after it completes, I need to inspect the results. One way is to analyze waves. I use the free GTK wave viewer wherever possible.
- I noticed that when the NC simulator is instructed to generate waves, in VCD format, from the TCL file, the simulation is slowed down dramatically.
- At the verilog test-bench I use:
initial begin
$shm_open ("lli.shm", , , , 1900, 0); //incremental size of 1.9G
//$shm_probe(tb.dut.i_lo_proc_top.i_losl_top, "AMSC");//current and below
$shm_probe(tb.dut.i_lo_proc_top.i_losl_top, "ASC");//current and below
$shm_probe(tb, "A");
end
From tcl the data base can be split into incremental size
by using the following command:
database -open waves -incsize 1900M
-
So I generate TRN. To convert to VCD during and after run, from the
command line, I use the following script:
#!/bin/bash
#1 vcd output file
#2 trn input file
cad simvisdbutil -vcd -OUTPUT $1 -OVERWRITE $2
- If you need only a few signals out of a TRN files, to keep your VCD small in size, do the following:
#!/bin/bash
simvisdbutil -vcd -OUTPUT gtk.vcd -OVERWRITE ncsim.shm/ncsim.trn \
-signal pm_tb.dut.arm_div8_clk \
-signal pm_tb.dut.arm_div8_clk \
-signal pm_tb.dut.chn2_e2_paddr \
-signal pm_tb.dut.chn2_e2_penable \
-signal pm_tb.dut.chn2_e2_pwrite \
-signal pm_tb.dut.chn2_e2_psel \
-signal pm_tb.dut.chn2_e2_pready \
-signal pm_tb.dut.chn2_e2_pwdata \
-signal pm_tb.dut.chn2_e2_prdata \
-signal pm_tb.dut.arm_div8_clk \
-signal pm_tb.dut.chn2_e1_paddr \
-signal pm_tb.dut.chn2_e1_penable \
-signal pm_tb.dut.chn2_e1_pwrite \
-signal pm_tb.dut.chn2_e1_psel \
-signal pm_tb.dut.chn2_e1_pready \
-signal pm_tb.dut.chn2_e1_pwdata \
-signal pm_tb.dut.chn2_e1_prdata \
-signal pm_tb.dut.arm_dcsu_clk_out \
-signal pm_tb.dut.core_dcsu_clk_out \
-signal pm_tb.dut.mddr_dcsu_clk_out \
-signal pm_tb.dut.sddr_dcsu_clk_out \
-signal pm_tb.dut.arm_dcsu_lock \
-signal pm_tb.dut.core_dcsu_lock \
-signal pm_tb.dut.mddr_dcsu_lock \
-signal pm_tb.dut.sddr_dcsu_lock
ls gtk.vcd && gzip gtk.vcd
ls gtk.vcd.gz && \mv -f gtk.vcd.gz ~/Junk
If you use VCS, you can convert VPD to VCD in this way:
vpd2vcd inter.vpd inter.vcd
|