This example tackles similar concepts as the ones described in the previous example. It just illustrates them on a more slightly complex design, a combinational full adder.
This example takes place in the adder/ directory.
The complete configuration required for the database generation takes place in the db.tcl. It is the same as in the previous example (inverters). The script also launches the commands that effectively generate that database.
The temperature and supplies specifications take place in the adder.spi file:
.TEMP 125 .GLOBAL vdd vss Vsupply vdd 0 DC 1.62 Vground vss 0 DC 0 |
As the adder.spi subcircuit is not instantiated, the vdd and vss signals appear in the .GLOBAL statement.
The technology file is included with a SPICE .INCLUDE directive in the adder.spi file.
.INCLUDE ../techno/bsim4_dummy.ng |
The generation launch is done through the command hitas:
avt_LoadFile adder.spi spice set fig [hitas adder] |
The hitas function takes as argument the name of the figure (the subckt for a SPICE netlist) to analyze. The tas function returns a pointer on the timing database newly created. This pointer can be used as an input to further steps of verification, thus avoiding costly re-reading of the timing database from the disk.
To perform the database generation, just launch the script db.tcl
The complete configuration required for the database browsing takes place in the report.tcl.
The command:
set fig [ttv_LoadSpecifiedTimingFigure adder] |
reads the timing database from disk (as said before, the re-reading of the database can be avoided by directly taking as an input the return value of the hitas function. For the sake of clarity, and because we are dealing with small timing databases, we preferred to split different verification steps into different scripts).
The command:
set clist [ttv_GetPaths $fig * * rr 5 critic path max] |
gives the 5 most critical paths (critic and path arguments) of the design, that begin and end on a rising transition (rr argument), with no specification of signal name (* * arguments), in the database pointed out by $fig. The function returns a pointer on the newly created list.
The command:
ttv_DisplayPathListDetail stdout $clist |
displays on the standard output the detail of all the paths of the path list given by the ttv_GetPaths function.
To get these paths, launch the script report.tcl.
#!/usr/bin/env avt_shell # Ex adder.1 set fig [ttv_LoadSpecifiedTimingFigure adder] set clist [ttv_GetTimingSignalList $fig connector interface] foreach c $clist { puts "[ttv_GetTimingSignalProperty $c NAME] [ttv_GetTimingSignalProperty $c DIR]" } # Ex adder.2 set fig [ttv_LoadSpecifiedTimingFigure adder] set clist [ttv_GetPaths $fig a_0 cout ?? 5 critic path max] ttv_DisplayPathListDetail stdout $clist # Ex adder.3 and adder.4 set fig [ttv_LoadSpecifiedTimingFigure adder] set clist [ttv_GetPaths $fig * * rr 5 critic path max] set plist [ttv_GetParallelPaths [lindex $clist 1] 10] ttv_DisplayPathListDetail stdout $plist # Ex adder.5 and adder.6 ttv_DisplayPathDetailHideColumn dt.linetype ttv_SetupReport ps ttv_DisplayPathListDetail stdout $plist |