performance profile
VCS:profile in VCS by time or memory.
#for memory profiling
-simproile //compile option
-simprofile mem //simulation option
#for time profiling
-simprofile //compile options
-simprofile time //sim options
the profile report will be store at compile directory named "profilereport"
IUS:
debug sim hang by using cpu usage report
compile option: -linedebug
simulation option: -profile
at sim hang point, stop test by: Ctrl+c (1 time), then ncsim>exit
check the ncprof.out file (cpu usage summary and source code location)
Coverage
code coverage fefinition:line/statement: will not cover module/end module/comments/time scale
block: begin...end, if...else, always
expression:
branch: case
conditional: if...else, ternary operator (?:)
toggle:
FSM:
VCS:
%vcs -cm line+tgl+branch source.v
%simv -cm branch
vcs urg (Unified Report Generator):
%urg -dir simv1.vdb [simv2.dir simv3.vdb ...] -metric line+cond+branch -report specified_ouput_dir //general options
%urg ... -parallel -sub bsub -lsf "" //run urg in parallel to speed up
%urg -elfile <filename> //for exclusion files
%dve -covdir simv.vdb//view coverage db directly in DVE
Dump Waveform
1. Options
setenv FSDB_FORCE //to display forced signals in highlight in waveform viewer
2. sdf
3. use do file to control fsdb dump.
%vcs -ucli -do PATH_OF_DO_FILE //simulation options
below is a sample tcl do file:
####start of file###############
#control fsdb dump
set run_time_before_dump 0us
set dump_all 1
set run_time 400us
run $run_time_before_dump
set TOP eth_top_tb
fsdbDumpfile $TOP.fsdb
if (dump_all == 1) {
fsdbDumpvars 3 $TOP
fsdbDumpvars 0 $TOP.xxx...
fsdbDumpMDA 1 $TOP...
} esel {
...
}
run $run_time
exit
####end of file################
4.dump force information
setenv FSDB_FORCE //to display forced signals in highlight in waveform viewer
2. sdf
3. use do file to control fsdb dump.
%vcs -ucli -do PATH_OF_DO_FILE //simulation options
below is a sample tcl do file:
####start of file###############
#control fsdb dump
set run_time_before_dump 0us
set dump_all 1
set run_time 400us
run $run_time_before_dump
set TOP eth_top_tb
fsdbDumpfile $TOP.fsdb
if (dump_all == 1) {
fsdbDumpvars 3 $TOP
fsdbDumpvars 0 $TOP.xxx...
fsdbDumpMDA 1 $TOP...
} esel {
...
}
run $run_time
exit
####end of file################
4.dump force information
simv +fsdb+force
5.dump glitch info
Before VCSMX/1509,
simv +fsdb+sequential +fsdb+glitch=0 +fsdb+region
+fsdb+glitch=num,0表示所有的glitch都保存,1表示最近的glitch保存,2表示最近两个glitch被保存
After VCSMX/1509,
simv +fsdb+delta
Race Condition
VCS:
+evalorder //vcs sim option
//eval combinational group then behavioral group.
//reduce race, refer to vcs userguide