Verdi3 TCL Training

advertisement
Verdi3 TCL Training
Based on Verdi3 2013.01
© Synopsys 2012
1
Glossary
•
•
•
•
•
VIA = Verdi Interoperability Applications
NPI = Novas Programming Interface
Novas KDB = Novas Knowledge Database
FSDB = Fast Signal Database
VPI = Verilog Procedural Interface
© Synopsys 2012
2
Overview
• Verdi Tcl Introduction
– Use Tcl in Verdi
– Case Study
• Debug Tcl Scripts
• Labs
© Synopsys 2012
3
Overview
• Verdi Tcl Introduction
– Use Tcl in Verdi
– Case Study
• Debug Tcl Scripts
• Labs
© Synopsys 2012
4
Tcl Introduction
Verdi Technology Background
•
•
Automated cause & effect tracing
–
Save significant engineering time
–
Easy visualization of behavior with time
and structure
Complete, easy to use environment
–
Design knowledge activated viewers
–
–
Advanced debugger
–
•
Waveform, source code, schema, TFV
State, testbench, assertions, transactions
–
Power-aware
–
Clock analysis
–
Post-layout ECO
Single portal for multiple languages,
tools and methodologies
–
Verilog, VHDL, System Verilog
–
Open interface for verification tools
© Synopsys 2012
5
Verification Tools
Designs
Open API
Compiler
FSDB
KDB
Tcl Introduction
Tcl Basic
• What is Tcl?
– Tcl stands for Tool Command Language
– A “String” basis scripting language
– Use source your_script.tcl to execute your Tcl script under tclsh
• What is Tk?
– Tk is an associated toolkit to create window-based interactive
applications using Tcl
© Synopsys 2012
6
Tcl Introduction
What Can You Do in Verdi with Tcl?
•
Use Tcl to combine Verdi commands to make your own feature to
improve efficiency
•
Add your new feature, which was created by Tcl scripts, to the Verdi
menu command or bind-key
•
Use NPI (Novas Programming Interface) to traverse the design without
Verdi GUI
© Synopsys 2012
7
Tcl Introduction
Possible Applications in Verdi with Tcl
• Application of FSDB
– Calculate FSDB results. For example, duty cycles
– Search and sort FSDB results. For example, search for small pulses
• Interoperability with 3rd party tools
– Read 3rd party tool reports and translate into Verdi’s format
• Application of KDB
– Access to Verdi database to do calculations and queries. For example,
extract snake path from the design
© Synopsys 2012
8
Tcl Introduction
Tcl Command Sets in Verdi
•
Verdi provides Tcl commands for each action in the GUI
•
All Tcl commands are categorized by module and have a set prefix
© Synopsys 2012
9
Prefix
sys
deb
src
wv
sch
tfg
nMem
fsm
reg
eco
ta
sid
lx
Module
System
Debussy (Verdi)
nTrace
nWave
nSchema
Temporal Flow View
Memory/MDA
nState
nRegister
nECO
Transaction
Siloti
ListX
Overview
• Verdi Tcl Introduction
– Use Tcl in Verdi
– Case Study
• Debug Tcl Scripts
• Labs
© Synopsys 2012
10
Use Tcl in Verdi
Execute Tcl in GUI
•
In the Command Entry form:
–
–
–
When you execute any GUI command, the associated Tcl command will be
logged in the Command Entry form
Directly typing the Tcl command in the Command Entry form will execute the
Tcl command
Type source your_script.tcl in the Command Entry form to execute the Tcl
script
© Synopsys 2012
11
Use Tcl in Verdi
Execute Tcl in GUI
• Open the Command Entry form:
– Invoke the Preferences form from Tools  Preferences
–
–
© Synopsys 2012
Go to General folder, enable the Enable TCL Command Entry Form option,
the Command Entry form will be opened.
The setting will be saved into novas.rc, and the Command Entry form will be
opened automatically next time you invoke Verdi
12
Use Tcl in Verdi
Execute Tcl in Command Line
• Execute the Tcl script in Verdi command line:
– % Verdi –play your_script.tcl &
– All associated Tcl commands will be saved in ./VerdiLog/Verdi.cmd
–
Use –play to execute the Verdi.cmd file can reproduce previous steps
• Automatically source the Tcl script
– By setting NOVAS_AUTO_SOURCE environment variable:
–
% setenv NOVAS_AUTO_SOURCE your_script.tcl
–
% verdi &
– By modifying the novas.rc resource file:
–
Search for TclAutoSource tag in [General] section in the novas.rc file
–
Specify your Tcl script for the TclAutoSource tag, for example:
[General]
TclAutoSource = MyTclScript.tcl
© Synopsys 2012
13
Use Tcl in Verdi
Register Event Callbacks
• Register a Tk name for Verdi with –tkname
– % Verdi -tkName <Tk name>
• Add an event callback with triggered reason
– Syntax: AddEventCallback TkAppName CallbackFun Reason async
–
Check all available Reason in Introduction  Tk Command Client  Adding
Event Callbacks to Your Tk Application section of the Novas Command
Language document (tcl.pdf in <Novas_install>/doc directory)
• NOTE: you can also register a callback with a triggered reason after
invoking Verdi, for example:
– AddEventCallback [tk appname] AutoLoadSignal
wvCreateWindow 1
– To execute the Tcl procedure AutoLoadSignal when a nWave window is
created
– tk appname: returns the name of the application, the application name
will be “Verdi” if you source the Tcl script after invoking Verdi
© Synopsys 2012
14
Overview
• Verdi Tcl Introduction
– Use Tcl in Verdi
– Case Study
• VIA Introduction
• Debug Tcl Scripts
• Labs
© Synopsys 2012
15
Case Study – Verdi Tcl
Script Overview
• Script purpose:
– This script generates an nWave session file before exiting and loads last session
when nWave is invoked.
– When select Save and Close Win under File menu on nWave , it generates
nWave session file named "<FSDBName>.rc" and "AutoSaveSignal.rc"
automatically.
– If there is a file named "AutoSaveSignal.rc" when invoking nWave, it is loaded
automatically.
• Usage:
% setenv NOVAS_AUTO_SOURCE AutoSave.tcl
% verdi ...
• Output file:
<FSDBNAME>.rc
AutoSaveSignal.rc
© Synopsys 2012
16
Case Study – Verdi Tcl
The Script
proc AutoSaveSignal {} {
global ary
Inherit $ary from GetFileName procedure
if { [file exists "AutoSaveSignal.rc"] } {
file rename -force AutoSaveSignal.rc AutoSaveSignal.rc.bak
}
Check whether the save file already exists, rename if it exists
set wid [wvGetCurrentWindow]
set fname $ary($wid)
$fname: get the FSDB name from GetFileName
procedure. Note it uses $ary($wid) to get the
FSDB name in GetFileName procedure
when there are multiple FSDB files
if { $fname != "" } {
wvSaveSignal -win $wid "$fname.rc" Save signals to FSDB_name.rc file
}
Save signals to
wvSaveSignal -win $wid "AutoSaveSignal.rc“ AutoSaveSignal.rc file
}
wvCloseWindow -win $wid Close current nWave window
© Synopsys 2012
17
Case Study – Verdi Tcl
The Script
proc AutoLoadSignal {p1 p2} {
Note: here the p1 and p2 argument will be:
$P1: wvCreateWindow
$P2: 2a97b46aa8 (the window ID)
if { [file exists "AutoSaveSignal.rc"] } {
wvRestoreSignal -win $p2 "AutoSaveSignal.rc"
}
Restore the AutoSaveSignal.rc file
into nWave if the file already exists
qwConfig -type nWave -cmds [list\
{qwAction -name "Save" -text "Save and Close Win“ -tcl
{AutoSaveSignal}}\
{qwAddMenuAction -action "Save" -group "File" -before
"Reload"} ]
}
© Synopsys 2012
Create a “Save and Close Win” command under File menu,
invoking the command will execute the AutoSaveSignal procedure.
18
Case Study – Verdi Tcl
The Script
Note: here the p1 and p2 argument will be:
P1: wvOpenFSDBFile
P2: /verdi/home/allen_shieh/demo/rtl.fsdb
proc GetFileName {p1 p2} {
global ary
set lname ""
set wid [wvGetCurrentWindow]
set sid [string last / $p2]
set lid [string last . $p2]
Get the window ID for
current nWave window
$sid: get the index for last “/” in $p2
$lid: get the index for last “.” in $p2
set lname [string range $p2 [incr sid] [incr lid -1]]
# puts "$p1 $p2 $lname"
set ary($wid) $lname
}
To store the fsdb name in
$ary array with $wid index
$lname: get the string for
fsdb name without “.fsdb”
AddEventCallback [tk appname] AutoLoadSignal wvCreateWindow 1
AddEventCallback [tk appname] GetFileName wvOpenFSDBFile 1
Register callbacks to:
1.
Execute procedure AutoLoadSignal when opening nWave window
2.
Execute procedure GetFileName when loading FSDB
© Synopsys 2012
19
Overview
• Verdi Tcl Introduction
– Use Tcl in Verdi
– Case Study
• Debug Tcl Scripts
• Labs
© Synopsys 2012
20
Debug Tcl Scripts
The CMD_TRACE Environment Variable
• Set the environment variable CMD_TRACE to 1 for viewing received
commands
% setenv CMD_TRACE 1
% verdi -play demo_traverse.tcl > tcl_log &
% vi tcl_log
© Synopsys 2012
21
Debug Tcl Scripts
Using TclPro Debugger (1/2)
• The TclPro Debugger is not included in Novas package, download
the software and get the instruction from:
http://www.tcl.tk/software/tclpro/
• Set the path for TclPro Debugger, for example:
% set path= ( /tools/TCL/TclPro1.5/linux-ix86/bin $path )
• Invoke Verdi with –prodebug option and load the Tcl script with –
play option:
% verdi -prodebug -play demo_traverse.tcl
© Synopsys 2012
22
Debug Tcl Scripts
Using TclPro Debugger (2/2)
Run until
break or EOF
Variable values
Click to set
break point
Run stops
© Synopsys 2012
Run stops on this line
23
Reference
Get Help from Resources
•
Novas Command Language:
– <Verdi_install>/doc/tcl.pdf
•
NPI Models:
– <Verdi_install>/doc/VIA_NPI.pdf
•
Useful web sites:
–
–
–
–
Tcl Developer Site: http://www.tcl.tk/
Tcl Tutorials: http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
Tcl Commands: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm
Tk Commands: http://www.tcl.tk/man/tcl8.5/TkCmd/contents.htm
© Synopsys 2012
24
Download