The HITAS platform provides the means to generate a simulatable netlist of any timing path of the timing database. This generated simulatable netlist contains all the transistors that participate to the timing path. Actually, as a timing path runs through a set of cones (partitions), the simulatable netlist contains the transistors belonging to this set of cones. Transistors that do not directly participate to the path (out-of-path transistors) can be either modeled as blocked transistors or as equivalent capacitances.
The path transistor netlist comes with all the stimuli enabling the propagation of the signal through the path. The tool automatically generates the stimuli enabling the appropriate transitions. The path transistor netlist and the stimuli form what is called the Spice Deck.
The HITAS platform also provides the means to link with external Spice simulators for simulating the Spice Deck, and to get back the results for pertinent comparison of HITAS results. The accuracy of most of Spice simulators is heavily dependant on their operating mode (digital/analog) and on convergence configuration. Pertinent comparison of HITAS results should be made with simulators in the mode allowing the most accurate results.
Path simulation is not available for hierarchical timing databases.
First a few variables need to be set to control spice deck generation. They are related to the simulator being used. Supported simulators are:
The minimal required configuration is as follow (example is given for ELDO):
# Spice deck target simulator avt_config SimToolModel eldo # Simulator invoking (command line) avt_config avtSpiceString "/tools/eldo $" # Transistor models (.INCLUDE to be added in spice deck) avt_config SimTechnologyName bsim3_018.tech |
Setting the SimToolModel variable to a specific simulator also controls the default value of the following variables:
Be aware that setting values for those variable overwrite their default value.
A spice deck is related to a timing path, and spice deck generation is based upon the detail of the timing path. Therefore, one should be able to get a timing path from a timing database before generating the spice deck. The following operations must be performed:
set fig [ttv_LoadSpecifiedTimingFigure my_design] set paths [ttv_GetPaths $fig * * ?? 1 critic path max] set path [lindex $paths 0] set detail [ttv_GetPathDetail $path] |
The spice deck generation is then done as follow:
ttv_DriveSpiceDeck $fig $detail "path.spicedeck" |
This method only generates the spice deck file path.spicedeck. It does not allow the reading of the results for comparison. Thsi operation is described in the next section.
Spice deck generation, simulator launch and result reading can be all done together within the function ttv_DisplayPathListDetail, given that it has been enabled through the ttv_DisplayActivateSimulation function. The ttv_DisplayPathListDetail requires a timing path as argument, but no timing detail. It gets it automatically:
set fig [ttv_LoadSpecifiedTimingFigure my_design] set paths [ttv_GetPaths $fig * * ?? 1 critic path max] set path [lindex $paths 0] ttv_SetupReport "ps ff" ttv_DisplayActivateSimulation y ttv_DisplayPathListDetail stdout $path |
This script performs the following actions:
The variable simOutLoad controls the way out-of-path transistors are modeled.
If simOutLoad is set to dynamic, the tool transforms out-of-path transistors into equivalent capacitances in the spicedeck. In such a case transistor models are needed for the grid and source/drain capacitances evaluations.
If simOutLoad is set to transistor, the tool does not transform out-of-path transistors into capacitances, but just print them in the spicedeck in a blocked configuration. In such a case the transistor models are not needed. One must be careful with this configuration, as the generated spice deck may be very big, for a very little accuracy gain.
The load of a file containing transistor models (bsim3_018.tech) at the beginning of the script is necessary when simOutLoad is set to dynamic.