5. Tcl Interface

5. 1. Objects

5. 1. 1. Netlist

The Netlist object describes the electrical view of a Subcircuit. It may be either flat or hierarchical, and contains components of the files it originates from: mosfets, resistances, capacitances and instances.

5. 1. 2. TimingFigure

Property codes:

TOP_LEVEL TimingFigure*. Top level TimingFigure the current TimingFigure belongs to.
STABILITY_FIGURE StabilityFigure*. Stability figure built on the current TimingFigure.
NAME char*. Name of the timing figure given as parameter.
TEMP double. Reference temperature the TimingFigure has been built with.
DEF_SUPPLY double. Reference power supply the TimingFigure has been built with.
DEF_LOAD double. Default load for output connectors.
DEF_SLOPE double. Default slope for input connectors.
TH_LOW double. Low threshold in slope computing
TH_HIGH double. High threshold in slope computing
TECH_NAME char*. Technolgy name
DATE char*. Date of generation
TIME char*. Time of generation

Properties described above are available through function:

ttv_GetTimingFigureProperty <timing_figure> <code>

5. 1. 3. TimingSignal

Property codes:

IS_CLOCK char*. Returns yes if the timing signal is defined as a clock. no otherwise.
IS_ASYNCHRONOUS char*. Returns yes if the timing signal is defined as an asynchronous pin. no otherwise.
DIR char. Direction of connector. Values can be i (input), o (output), b (bidirectional), t (tristate), z (HZ), u (unknown).
CAPA double. Total capacitance on signal (in Farads).
LOAD double. External load if the signal is an output connector (in Farads).
LEFT_BOUND int. Left bound of connector range. If signal is not a vector, value is -1.
RIGHT_BOUND int. Right bound of connector range. If signal is not a vector, value is -1.
TOP_LEVEL TimingFigure*. Top level timing figure the timing signal belongs to.
NET_NAME char*. Net name of timing signal.
NAME char*. Name of timing signal.
TYPE char*. Type of a timing signal. Possible values are connector, command, latch, flip-flop, precharge, breakpoint, internal, signal or an eventual concatenation of possible configurations.
EVENT_UP TimingEvent*. Pointer to the rising TimingEvent related to the TimingSignal.
EVENT_DOWN TimingEvent*. Pointer to the falling TimingEvent related to the TimingSignal.
RISING_SLOPE double. Input slope set on TimingSignal as an external constraint (only valid for input connectors).
FALLING_SLOPE double. Input slope set on TimingSignal as an external constraint (only valid for input connectors).
LEAKAGE_UP_MAX double. Maximum leakage current in the high state (in Amps).
LEAKAGE_UP_MIN double. Minimum leakage current in the high state (in Amps)e.
LEAKAGE_DN_MAX double. Maximum leakage current in the low state (in Amps).
LEAKAGE_DN_MIN double. Minimum leakage current in the low state (in Amps).
GATE_TYPE char*. Returns the name of the gate type driving the timing signal if it is known.
VOLTAGE_SWING char*. Returns the voltage difference between the vdd and vss sypply nodes on the signal.

Properties described above are available through function:

ttv_GetTimingSignalProperty <sig> <code>

5. 1. 4. TimingEvent

Property codes:

SIGNAL TimingSignal. Signal of the timing event.
TRANS char. Transition direction of the timing event. Value can be u (rising) or d (falling).
STABILITY list of list. The list of instability gaps of the timing event available when STB has been run on the timing figure. A range is a list of 2 values. eg: {{0 10} {20 40}}.

Properties described above are available through function:

ttv_GetTimingEventProperty <timing_event> <code>

5. 1. 5. TimingPath

Property codes:

DELAY double. Delay attached to the timing path. If a crosstalk analysis has been run on the timing figure, this delay take into account the crosstalk effect.
REF_DELAY double. Delay attached to the timing path. Crosstalk effect is not taken into account.
SIM_DELAY double. Simulated delay attached to the timing path. Returns -1 if simulation had failed.
DATA_LAG double. Only for clock-to-q access paths: waiting delay for the data to be available on the latch's input, after the latch opening (value is present only after stability analysis).
SLOPE double. Output slope attached to the timing path. If a crosstalk analysis has been run on the timing figure, this slope take into account the crosstalk effect.
REF_SLOPE double. Output slope attached to the timing path. Crosstalk effect is not taken into account.
SIM_SLOPE double. Simulated output slope attached to the timing path. Returns -1 if simulation had failed.
START_TIME double. Start time of the timing path.
START_SLOPE double. Start slope of the timing path.
START_SIG TimingSignal*. Starting node of the timing path.
END_SIG TimingSignal*. Ending node of the timing path.
START_EVENT TimingEvent*. Starting timing event of the timing path.
END_EVENT TimingEvent*. Ending timing event of the timing path.
COMMAND TimingEvent*. Timing event corresponding to the command of the timing path terminating on a register. In the case of a flip-flop this event is the triggering edge, in the case of a latch it is the event which opens the latch for writing.
ACCESS_COMMAND TimingEvent*. Timing event corresponding to the command of the latch or precharge crossed by the timing path when the path is an access. The result is the event which opens the latch for writing.
ACCESS_LATCH TimingEvent*. Timing event corresponding to the latch or precharge crossed by the timing path when the path is an access.
START_TRAN char. Transition direction on the starting node of the timing path. The value can be u (rising) or d (falling).
END_TRAN char. Transition direction on the ending node of the timing path. The value can be u (rising) or d (falling).
TYPE char*. Returns either min or max.
IS_HZ char*. Returns "yes" if the timing path is a HZ path. "no" otherwise.
PATH_MARGIN_FACTOR double. Path margin factor defined for this timing path.
PATH_MARGIN_DELTA double. Path margin delta defined for this timing path.

Properties described above are available through function:

ttv_GetTimingPathProperty <timing_path> <code>

5. 1. 6. TimingLine

Property codes:

DELAY_MAX double. Max delay attached to the timing line. If a crosstalk analysis has been run on the timing figure, this delay take into account the crosstalk effect.
REF_DELAY_MAX double. Max reference delay attached to the timing path. Crosstalk effect is not taken into account.
DELAY_MIN double. Min delay attached to the timing line. If a crosstalk analysis has been run on the timing figure, this delay take into account the crosstalk effect.
REF_DELAY_MIN double. Min reference delay attached to the timing path. Crosstalk effect is not taken into account.
SLOPE_MAX double. Max slope attached to the timing line. If a crosstalk analysis has been run on the timing figure, this slope take into account the crosstalk effect.
REF_SLOPE_MAX double. Max reference slope attached to the timing path. Crosstalk effect is not taken into account.
SLOPE_MIN double. Min slope attached to the timing line. If a crosstalk analysis has been run on the timing figure, this slope take into account the crosstalk effect.
REF_SLOPE_MIN double. Min reference slope attached to the timing path. Crosstalk effect is not taken into account.
TYPE char. Line type: setup, hold, access, hz, rc, prech, eval or data.
START_EVENT TimingEvent*. Start event of the timing line.
END_EVENT TimingEvent*. End event of the timing line.
COMMAND TimingEvent*. Command event of the timing line. Returns NULL if the line is not commanded.

Properties described above are available through function:

ttv_GetTimingLineProperty <timing_line> <code>

5. 1. 7. TimingDetail

Property codes:

HZ int. Indicates if the detail is an HZ state. If true, the signal direction indicates the state of the output before being HZ. 0 if false, 1 if true.
EVENT TimingEvent*. Pointer to the related TimingEvent
NODE_NAME char*. The name of the node in timing detail
NET_NAME char*. The name of the net in timing detail
SIGNAL_TYPE char*. Type of the timing signal. Possible values are connector, command, latch, flip-flop, precharge, breakpoint, internal, signal or an eventual concatenation of possible configurations.
DELAY double. The delay (in seconds) of the path detail. If a crosstalk analysis has been run on the timing figure, this delay take into account the crosstalk effect.
SLOPE double. The slope (in seconds) of the path detail. If a crosstalk analysis has been run on the timing figure, this delay take into account the crosstalk effect.
REF_DELAY double. The delay (in seconds) of the path detail
REF_SLOPE double. The slope (in seconds) of the path detail
SIM_DELAY double. The simulated delay (in seconds) of the path detail. -1 if no simulation has been done or an error occurred.
SIM_SLOPE double. The simulated slope (in seconds) of the path detail. -1 if no simulation has been done or an error occurred.
DATA_LAG double. Only for clock-to-q access paths: waiting delay for the data to be available on the latch's input, after the latch opening (value is present only after stability analysis).
TYPE char*. A string identifying whether the path detail is a gate or RC delay.
TRANS char. The transition direction of the node. u (rising) or d (falling).

Properties described above are available through function:

ttv_GetTimingDetailProperty <timing_detail> <code>

5. 1. 8. StabilityFigure

The StabilityFigure object is a back-annotation of the TimingFigure object. It contains the switching windows associated to the TimingSignal objects of the TimingFigure object. The switching window information of the StabilityFigure object is obtained by functions accessing directly the TimingSignal objects.

Property codes:

TIMING_FIGURE TimingFigure*. The TimingFigure the StabilityFigure has be created from.

Properties described above are available through function:

stb_GetStabilityFigureProperty <slack_object> <code>

5. 1. 9. StabilitySlack

Property codes:

TYPE char*. Slack type: setup or hold.
VALUE double. Slack value
DATA_VALID double. Arrival time of the DATA VALID event.
DATA_REQUIRED double. Arrival time of the DATA REQUIRED event.
DATA_VALID_PATH TimingPath*. Path related to the DATA VALID event.
DATA_REQUIRED_PATH TimingPath*. Path related to the DATA REQUIRED event. Can return NULL if the data required time is a user specified one set up with SDC command set_output_delay.
START_EVENT TimingEvent*. Starting event of the DATA VALID path.
END_EVENT TimingEvent*. Ending event of the DATA VALID path.
THRU_EVENT TimingEvent*. In case DATA VALID is an access, the event of the access latch.
THRU_COMMAND_EVENT TimingEvent*. In case DATA VALID is an access, the command event enabling the data thru the latch.
IS_HZ char*. Returns "yes" if the DATA VALID path is a HZ path. "no" otherwise.
DATA_VALID_PATH_MARGIN double. Computed margin to be added to the DATA VALID path delay.
DATA_REQUIRED_PATH_MARGIN double. Computed margin to be added to the DATA REQUIRED path delay.
INTRINSIC_CONSTRAINT double. Setup or hold constraint at the DATA VALID node.
SKEW_COMPENSATION double. Skew compensation value to be added to the DATA REQUIRED path delay. Skew compensation is deduced from common clock tree between DATA REQUIRED and DATA VALID paths.
UNCERTAINTY double. Clock uncertainty to be added to the DATA REQUIRED path delay. Clock uncertainty is a user given value.

Properties described above are available through function:

stb_GetSlackProperty <slack_object> <code>

5. 1. 10. TimingConstraint

Property codes:

TYPE char*. Constraint type: setup or hold.
VALUE double. Constraint value.
DATA_PATH TimingPath*. Path related to the data of the constraint.
If the constraint is a directive, the data path can be a clock path if specified in the directive.
CLOCK_PATH TimingPath*. Path related to the clock of the constraint.
If the constraint is a directive, the clock path can be a data path if specified in the directive.
INTRINSIC_MARGIN double. Intrinsic setup or hold margin for a constraint on a latch node or user defined margin in case of a directive.
INTRINSIC_MARGIN_MODEL char*. Intrinsic setup or hold model name (most likely a .lib table model name). Can return NULL if not no model is associated with the intrisic margin.
DATA_PATH_MARGIN double. Computed margin to be added to the DATA_PATH delay.
CLOCK_PATH_MARGIN double. Computed margin to be added to the CLOCK_PATH delay.
MASTER_CLOCK TimingEvent*. TimingEvent of the clock at the interface of the netlist if the CLOCK_PATH comes from a generated clock. If it is not the case, the MASTER_CLOCK is the starting event of the CLOCK_PATH.
MASTER_CLOCK_LATENCY double. Value of the delay from the master clock to the generated clock.

Properties described above are available through function:

ttv_GetTimingConstraintProperty <constraint_object> <code>

5. 1. 11. BehavioralFigure

The BehavioralFigure structure describes the functionality of a circuit.

5. 1. 12. Node Crosstalk Statistics

Properties:

SCORE_NOISE The noise score.
SCORE_ACTIVITY The activity score.
SCORE_CTK The crosstalk score.
SCORE_INTERVAL The interval score.
SCORE The total score.
VOLTAGE_THRESHOLD The worst gate threshold among all of the fanout gates.
NOISE_RISE_MAX The maximum rise peak, considering active all aggressors
NOISE_FALL_MAX The maximum fall peak, considering active all aggressors
NOISE_RISE_REAL The real rise peak, considering active overlapping aggressors only
NOISE_FALL_REAL The real fall peak, considering active overlapping aggressors only
CAPA_GROUND The ground interconnect capacitance.
CAPA_CTK The crosstalk interconnect capacitance.
CAPA_CGATE The load of all gate input driver.

Properties described above are available through function:

ctk_GetStatNodeProperty <stability_figure> <index> <property>

5. 1. 13. Delay Crosstalk Statistics

Properties.

START_NODE The starting event of delay.
END_NODE The ending event of delay.
DELAY_MIN_STA The minimum delay without crosstalk.
DELAY_MAX_STA The maximum delay without crosstalk.
SLOPE_MIN_STA The minimum slope without crosstalk.
SLOPE_MAX_STA The maximum slope without crosstalk.
DELAY_MIN_CTK The minimum delay with crosstalk.
DELAY_MAX_CTK The maximum delay with crosstalk.
SLOPE_MIN_CTK The minimum slope with crosstalk.
SLOPE_MAX_CTK The maximum slope with crosstalk.

Properties described above are available through function:

ctk_GetStatLineProperty <stability_figure> <index> <property>

5. 1. 14. Crosstalk Aggressor

Properties.

SIGNAL The timing signal (optionnal).
NETNAME The netname.
CAPA_CTK The coupling capacitance.
DELAYBESTAGR Return "no", "yes" or "excluded" if this aggressor is quiet, active or if it has not been taken into account due to switching mutual exclusion.
DELAYWORSTAGR idem.
NOISERISE idem.
NOISEFALL idem.

Properties described above are available through function:

ctk_GetAggressorProperty <stability_figure> <property>

5. 2. Units

5. 2. 1. Input Values

All values given as inputs to Tcl functions of the HITAS platform need to be specified in the International Units System.

Values given as inputs to SDC functions are not given within the International Units System. Units are controlled by the variable sdcUnits

5. 2. 2. Returned Values

All values returned by Tcl functions are given in the in the International Units System, except for timing reports, which are controlled by the ttv_SetupReport function.

5. 3. General

5. 3. 1. Configuration

avt_Config

void avt_Config(char *var, char *val)

Main way to configure the tool. Affects a value to one of the variables listed in the Configuration Variables section

var Configuration variable to be set
val New value
EXAMPLE avt_Config tasGenerateConeFile yes


avt_GetConfig

char *avt_GetConfig(char *var)

returns the configurated value for configuration variable var

var Configuration variable to be set
EXAMPLE set cone_cfg [avt_GetConfig tasGenerateConeFile]


5. 3. 2. File Loading

avt_SetBlackBoxes

void avt_SetBlackBoxes(List *list)

Allows the user to blackbox subcircuits. Blackboxed subcircuits will not be analyzed. Instead, the tool will let a hole. Whether this hole should be filled up or not by a timing description depends on configuration variables tasIgnoreBlackbox and tasTreatBlackboxHierarchically. If a blackbox name is prefixed with "unused:", no hole will be created but instead all transistors in the blackbox will be marked as unused. Those blackboxes can still be retreived with GNS if the recognition rule uses the same transistor names as in the blackbox. This command is equivalent to and overrides the creation of a BLACKBOX file.

list List of subcircuits to be blackboxed. All intended blackboxed subcircuits should present as only one avt_SetBlackBoxes command is allowed.
EXAMPLE avt_SetBlackBoxes [list "sense_amp"]


avt_LoadBehavior

BehavioralFigure *avt_LoadBehavior(char *filename, char *format)

Loads behavioral descriptions and construct internal representation according to the file format

filename File to be loaded
format Available formats are vhdl and verilog
EXAMPLE avt_LoadFile model.v verilog


avt_DriveBehavior

void avt_DriveBehavior(BehavioralFigure *befig, char *format)

Drives a behavioral description according to the file format from the given internal representation

befig Behavior to be driven
format Available formats are vhdl and verilog
EXAMPLE avt_DriveBehavior $befig output.v verilog


avt_LoadFile

void avt_LoadFile(char *filename, char *format)

Loads files and construct internal representation according to the file format

filename File to be loaded
format Available formats are spice, tlf4, tlf3, lib, verilog, vhdl, spf, dspf, inf, spef and ttv
EXAMPLE avt_LoadFile design.hsp spice


avt_EncryptSpice

void avt_EncryptSpice(char *inputname, char *outputname)

Encrypts all sections of a Spice file (netlist or technology file) which are encapsulated by the .protect and .unprotect spice cards.

inputname File to be encrypted
outputname Destination for encrypted output
EXAMPLE avt_EncryptSpice techno.hsp techno.hsp.enc


avt_SetCatalog

void avt_SetCatalog(List *argv)

Sets the leaves when flattening a netlist to catal level; equivalent to create a CATAL file

argv List of subcircuits that will be used as leaves
EXAMPLE avt_SetCatalog [list "nand2" "inv" ]


avt_GetCatalog

StringList *avt_GetCatalog()

Returns the current list of cells set as leaves for a catal-level flatten

EXAMPLE set catal [avt_GetCatalog]


avt_CheckTechno

void avt_CheckTechno(char *label, char *tn, char *tp)

Runs a set of benchs to findout possible technology errors

label A prefix label for the output result files
tn NMOS transistor characteristics. It's a space separated string with coming first the NMOS transistor name followed by the parameters. Authorized parameters are: l, w, delvt0, mulu0, sa, sb, sd, nf, nrs, nrd, sc, sca, scb, scc.
tp same as tn for PMOS transistor.
EXAMPLE avt_CheckTechno check1 "nmos l=0.4u w=0.8u" "pmos l=0.4u w=1.6u"


5. 3. 3. Netlist Modification

avt_GetNetlist

Netlist *avt_GetNetlist(char *name)

Retrieves a netlist from memory and returns its pointer

name Name of the netlist to get in the program's memory
EXAMPLE set netlist [avt_GetNetlist "my_design"]


avt_FlattenNetlist

void avt_FlattenNetlist(Netlist *lf, char *level)

Flattens a netlist to a given level.

lf Pointer on the netlist to be flattened
level Hierarchical level (coming from top-level) the nelist will be flattened to. Available levels are trs, catal or bbox (transistor, catalog or blackbox). If none of those levels are used, level will be considered an instance name, to which the netlist will be flattened.
EXAMPLE avt_FlattenNetlist $netlist trs


avt_DriveNetlist

void avt_DriveNetlist(Netlist *lf, char *filename, char *format)

Saves the netlist on disk according to the given format

lf Pointer on the netlist to be saved
filename Name of the file to be created
format Available formats are spice, verilog, vhdl and spef
EXAMPLE avt_DriveNetlist $netlist design.spi spice


avt_DisplayNetlistHierarchy

void avt_DisplayNetlistHierarchy(FILE *f, char *netlistname, int maxdepth)

Displays hierarchy information of a given netlist, and other info such as number of transistors

f Pointer on the file where to save information, for standard output set stdout
netlistname Pointer on the netlist
maxdepth Maximum hierarchical depth coming from top level; can be set to 0 for infinite depth
EXAMPLE avt_DisplayNetlistHierarchy stdout "my_design" 3


avt_DisplayResistivePath

void avt_DisplayResistivePath(FILE *f, Netlist *lf, char *connector1, char *connector2)

Displays one resistive path between two connectors at the interface of a netlist.

f Pointer on the file where to save information, for standard output set stdout
lf Pointer on the netlist
connector1 first connector name
connector2 second connector name
EXAMPLE avt_DisplayResistivePath stdout [avt_GetNetlist "mynetlistname"] vdd_0 vdd_1


avt_RemoveResistances

void avt_RemoveResistances(Netlist *lf, char *nameregex)

Removes all resistances on signals matching a regular expression

lf Pointer on the netlist where to remove resistances
nameregex Regular expression to be matched, for all signals use *
EXAMPLE avt_RemoveResistances $netlist "cpu.*.sig3*"


avt_RemoveCapacitances

void avt_RemoveCapacitances(Netlist *lf, char *nameregex)

Removes all capacitances on signals matching a regular expression

lf Pointer on the netlist where to remove capacitances
nameregx Regular expression to be matched, for all signals use *
EXAMPLE avt_RemoveCapacitances $netlist "cpu.*.sig3*"


5. 3. 4. Statistics

avt_StartWatch

void avt_StartWatch(char *name)

Starts a timer; if the timer already exixts it'll be reset to 0.

name Timer name
EXAMPLE avt_StartWatch "CPU_TIME"


avt_StopWatch

void avt_StopWatch(char *name)

Stops a timer; the timer must be started for the function to work

name Name of the timer to stop
EXAMPLE avt_StopWatch "CPU_TIME"


avt_PrintWatch

char *avt_PrintWatch(char *name)

Returns a string with the value of a timer; the timer must have been started

name Name of the timer to print
EXAMPLE avt_PrintWatch "CPU_TIME"


avt_GetMemoryUsage

long avt_GetMemoryUsage()

Returns an integer with the memory usage of the program in bytes

EXAMPLE set memory [avt_GetMemoryUsage]


avt_RegexIsMatching

int avt_RegexIsMatching(char *nametocheck, char *template)

Returs 1 if nametocheck matches the regular expression template, 0 otherwise.

nametocheck name to check.
template regular expression to use.
EXAMPLE set match [avt_RegexIsMatching tatoo5 *too*]


5. 4. INF Configuration

Signal naming: only disassembly directives accept all hierarchical names as inputs. Other directives take as input the hierarchical name of the highest level.

5. 4. 1. General

inf_SetFigureName

void inf_SetFigureName(char *name)

Sets the target figure on which to apply the INF functions

name Name of the target figure
EXAMPLE inf_SetFigureName cpu


inf_AddFile

void inf_AddFile(char *filename, char *figname)

Loads an INF file and applies included statements on a figure (this function does not invoke inf_SetFigureName).

filename INF file to load
figname Figure on which to apply INF statements. Those statements will be added to the ones that my be already present.
EXAMPLE inf_AddFile cpu.inf cpu


inf_Drive

void inf_Drive(char *outputname)

Saves applied INF statements on disk

outputname File where to save INF statements (the .inf suffix is not automatically added)
EXAMPLE inf_Drive cpu.inf


inf_ExportSections

void inf_ExportSections(char *outputname, char *section)

Saves on disk applied INF statements related to specific INF sections

outputname File where to save INF statements
section OperatingCondition, PinSlew, Rename, Stop, Sensitive, Suppress, Inputs, NotLatch, CkLatch, Ckprech, Precharge, Dirout, Mutex, CrosstalkMutex, Constraint, ConnectorDirections, PathIN, PathOUT, PathDelayMargin, MulticyclePath, Ignore, NoCheck, Bypass, NoRising, NoFalling, Break, Inter, Asynchron, DoNotCross, Transparent, RC, NORC, SIGLIST, Falsepath, Delay, Dlatch, FlipFlop, Slopein, Capaout, OutputCapacitance, SwitchingProbability, Directives, Stb and Stuck.
EXAMPLE inf_ExportSections cpu.inf "Dirout CrosstalkMutex"


inf_CleanFigure

void inf_CleanFigure()

Removes all INF statements on current figure



5. 4. 2. Disassembly Directives

inf_DefineIgnore

void inf_DefineIgnore(char *type, List *list)

The tool ignores specified components. Equivalent to commenting out elements in a SPICE netlist.

list Pointer on the list of components to ignore. An component name can be a regular expression.
type Supported types are Instances, Transistors, Resistances, Capacitances, Diodes, Parasitics and SignalNames. Parasitics affects only DSPF files. SignalNames affects only the flattening of a hierarchical netlist, by ignoring the given name if several hierarchical names are available for one net.
EXAMPLE inf_DefineIgnore Transistors *.M23*


inf_DefineMutex

void inf_DefineMutex(char *type, List *list)

Adds mutual exclusion constraints on signals, in order to help the disassembly process. May be especially usefull when dealing with shifters or multiplexors, in case mutual exclusion constraints can not be directly derived from internal combinational circuitry (if the mutual exclusions constraints come from latched values or come from constraints on external pins).

type Mutual exclusion constraints, legal values for are muxup, muxdn, cmpup and cmpdn (see INF file description)
list List of signals mutual exclusions constraints should be applied on
EXAMPLE inf_DefineMutex cmpup [list a_0 a_1 a_2 a_3]


inf_DefineInputs

void inf_DefineInputs(char *name)

Sets a signal as a circuit input, in order to help the disassembly process.

name Signal's name


inf_DefineDirout

void inf_DefineDirout(char *name, int level)

Defines the level of a signal for transistor orientation, in order to help the disassembly process.

name Signal's name
level Signal's level; transistors are oriented (the sense of the current is) from high-level to low-level signals.


inf_DefineDLatch

void inf_DefineDLatch(char *name)

Sets a signal as a dynamic latch. Works only if the surrounding circuitry permits a HZ state on the signal. Commands are then identified automatically.

name Signal's name


inf_DefineNotDLatch

void inf_DefineNotDLatch(char *name)

Disables a dynamic latch directive on a signal. To be used together with yagMarkTristateMemory

name Signal's name


inf_DefineNotLatch

void inf_DefineNotLatch(char *name)

Disables the identification of a latch on a signal

name Signal's name


inf_DefineKeepTristateBehaviour

void inf_DefineKeepTristateBehaviour(char *name)

Disables the transformation of bus into register when configurations 'avtVerilogTristateIsMemory' or 'yagleTristateIsMemory' is used to drive a behavioural model.

name Signal's name


inf_DefinePrecharge

void inf_DefinePrecharge(char *name)

Sets a signal as a precharge.

name Signal's name


inf_DefineNotPrecharge

void inf_DefineNotPrecharge(char *name)

Disables the identification of a precharge on a signal

name Signal's name


inf_DefineModelLatchLoop

void inf_DefineModelLatchLoop(char *name)

Feedback loop is explicitly modeled in behavioural model if signal is a static latch.

name Signal's name


inf_DefineMemsym

void inf_DefineMemsym(char *name0, char *name1)

Sets a pair of signals to be a symmetric memory so long as there is a loop between the two signals.

name0 name of first memsym signal.
name1 name of second memsym signal.
EXAMPLE inf_DefineMemsym memsym0 memsym1


inf_DefineRS

void inf_DefineRS(char *name, char *type)

Allows control of how individual RS are handled. Overrides the global setting in yagAutomaticRSDetection.

name Signal's name, either the set or the reset one is enough.
type LEGAL, ILLEGAL or MARK_ONLY.
EXAMPLE inf_DefineRS rsnode "LEGAL"


inf_MarkSignal

void inf_MarkSignal(char *name, char *marks)

Allows application of special signal markings, such as latch identification.

name Signal's name
marks For a complete list of markings please refer to the INF section of this manual, MARKSIG subsection.
EXAMPLE inf_MarkSignal dff_m "LATCH+MASTER"


inf_MarkTransistor

void inf_MarkTransistor(char *name, char *marks)

Allows application of special transistor markings, such as latch commands identification.

name Signal's name
marks Legal markings are "Bleeder", "Feedback", "Command", "NonFunctional", "Blocker", "Short", "Unused". Types may be concatenated with the '+' character and are case-insensitive. For a description of the types please refer to the INF section of this manual, MARKTRANS subsection.
EXAMPLE inf_MarkTrans m0 "FEEDBACK+NOT_FUNCTIONAL"


5. 4. 3. Timing Directives

inf_DefineConnectorSwing

void inf_DefineConnectorSwing(char *name, double lowlevel, double highlevel)

Sets the switching voltage magnitude for a connector. This is usefull for multivoltage analysis.

name Connector's name
lowlevel Lower-bound voltage level, in Volts
highlevel Upper-bound voltage level, in Volts


inf_DefinePathDelayMargin

void inf_DefinePathDelayMargin(char *type, char *name, double factor, double delta, char *pathtype)

Defines a derating to be applied on a path delay, with the following formula: new_delay = real_delay * factor + delta. This derating is only used for the computation of setup and hold slacks by the by slack report functions.

type Arrival point type of the path on which to apply the derating. Valid values are any, latch, break, prech and con (connector)
name Arrival point name of the path on which to apply the derating. Wildcards can be used.
factor Integer value
delta Integer value
pathtype String with tokens separated by spaces or _. Valid token values for pathtype are clockpath, datapath, min, max, rise and fall. An empty string means that all the tokens are used.


inf_DefineConnectorDirections

void inf_DefineConnectorDirections(char *type, List *list)

Modifies the direction of connectors

type Affected direction, can be Input, Output, InOut, Tristate, HZ or Unknown
list List of signals a new direction will be affected to


inf_DefineNORC

void inf_DefineNORC(char *name)

Disables RC delay computation on a signal

name Signal's name


inf_DefineDoNotCross

void inf_DefineDoNotCross(char *name)

Disables the transparency of a latch or precharge, so that no path can traverse it. Effective only when static timing analysis has been run (stb). To be used together with avtMaxPathPeriodDepth.

name Signal's name


inf_DefineTransparent

void inf_DefineTransparent(char *name)

Force transparency of a latch or precharge, so that path can traverse it.

name Signal's name


inf_DisableTimingArc

void inf_DisableTimingArc(char *input, char *output, char *direction)

Disables the construction of timing arcs between timing signals.

input Source timing signal of the timing arc to disable
output Sink timing signal node of the timing arc to disable
direction Transition to disable: du, ud, dd, uu, ?u...
EXAMPLE inf_DisableTimingArc in out ud


inf_DefineFalsePath

void inf_DefineFalsePath(List *arglist)

Defines a false path. The parameters use the same syntax as in the .inf file except for the signal direction specification which does not allow spaces. Valid values <up> and <down>.

EXAMPLE inf_DefineFalsePath [list sig1 <up> sig2 <down> sig3 sig4].


5. 4. 4. Timing Abstraction Directives

inf_DefineSlopeRange

void inf_DefineSlopeRange(char *name, List *argv, char *type)

Sets a range for input slopes in lookup tables construction (.lib file purpose), values in Seconds. This function must be called before database construction (hitas function) for ranges to be taken into account.

name Connector the defined range will be applied on, default is for all connectors.
type custom or linear.
argv If type is custom, list of values defining the slope range. If type is linear, 3-uple (first_slope, last_slope, step).
EXAMPLE inf_DefineSlopeRange default [list 50e-12 120e-12 240e-12] custom


inf_DefineCapacitanceRange

void inf_DefineCapacitanceRange(char *name, List *argv, char *type)

Sets a range for ouput capacitances in lookup tables construction (.lib file purpose), values in Fahrads. This function must be called before database construction (hitas function) for ranges to be taken into account.

name Connector the defined range will be applied on, default is for all connectors.
type custom or linear.
argv If type is custom, list of values defining the capacitance range. If type is linear, 3-uple (first_capa, last_capa, step).
EXAMPLE inf_DefineCapacitanceRange default [list 100e-15 200e-15 300e-15] custom


5. 4. 5. STA Directives

inf_DefineStrictSetup

void inf_DefineStrictSetup(char *name)

Defines an latch whose setup must be check on the command opening event rather than the closing event.

name Name of the latch
EXAMPLE inf_DefineStrictSetup mylatch


inf_DefineAsynchron

void inf_DefineAsynchron(char *name)

Defines an asynchronous pin, i.e. reset pin. Necessary to obtain recovery/removal timing groups in .lib characterization.

name Name of the reset pin
EXAMPLE inf_DefineAsynchron reset


inf_DefineEquivalentClockGroup

void inf_DefineEquivalentClockGroup(char *domain, List *list)

Sets clocks as belonging to the same timing domain.

domain Timing domain name
list Set of clocks belonging to the domain
EXAMPLE inf_DefineEquivalentClockGroup domain1 [list ck1 ck2]


inf_DefineClockPriority

void inf_DefineClockPriority(char *name, char *clock)

Defines the preferred clock for a signal in case of multiple clock possibility.

name Signal's name
clock Priority clock


inf_DefineDirective

inf_DefineDirective <mode> [type1] <signal1> [dir1] <operation> [type2] <signal2> [dir2] [margin]

Adds a custom timing check between any two nodes. This timing check will be taken into account in STA and slack reports.

mode Type of operation: check or filter.
type1 Type of propagated information on signal1 to check: clock or data. Default is data.
signal1 Net name of the first signal.
dir1 Edge or value of signal1 to consider: rising or falling. Default is both.
operation before, after or with. Operation with checks that signal1 is stable when signal2's state is up or down. with cannot be used with signal1 as a clock or signal2 as a data, and dir2 as falling or rising. Operations before and after compare arrival times between clock/data and clock/data. dir1 and dir2 can be rising or falling only.
type2 Type of propagated information on signal2 to check: clock or data. Default is data.
signal2 Net name of the second signal.
dir2 Edge or value of signal2 to consider: rising, falling, up or down. Default is rising and falling.
margin Margin to add when computing slack or constraint.
EXAMPLE inf_DefineDirective check "data" with clock "data" up.
Checks that "data" is stable when the propagated clock state on data is high.


inf_DefineFalseSlack

inf_DefineFalseSlack [<restriction>:] <startclock> [<startclock_dir>] <startnode> [<startnode_dir>] <endnode> [<endnode_dir>] [<endnode_hz_state>] <endclock>

Defines a slack as being invalid.

restriction a '-' separated list of checks/signal types. Possible values: setup, hold, latch, prech. latch and prech define endnode signal type. Default is "setup-hold".
startclock name of the clock generating the startnode data
startclock_dir transition of startclock : <up>, <down>, <rise> or <fall>. Default is both.
startnode name of the generated data node
startnode_dir transition of startnode : <up>, <down>, <rise> or <fall>. Default is both.
endnode name of the data arrival node
endnode_dir transition of endnodestartnode : <up>, <down>, <rise> or <fall>. Default is both.
endnode_hz_state specify whether the end node transition goes to hz state or not: <hz> or <nothz>. Default is both.
endclock name of the clock controlling the arrival node
EXAMPLE inf_DefineFalseSlack setup: "ck" <rise> "data" <rise> "arrival" "ck2".


inf_DefineSwitchingProbability

inf_DefineSwitchingProbability signal switching probability

[IN ALPHA DEVELOPMENT STAGE] Associates a switching probability to signal. This probability can be used by CTK to remove non interesting agressions (see also variable: stbCtkMinOccurenceProbability).

signal signal to associate the probability to.
switching probability probability value from 0 to 1.
EXAMPLE inf_DefineSwitchingProbability "enable" 0.25. Signal "enable" can switch 1 time each 4 clock cycles.


5. 4. 6. Crosstalk Directives

inf_DefineCrosstalkMutex

void inf_DefineCrosstalkMutex(char *type, List *list)

Sets mutually exclusive signals with regard to crosstalk analysis.

type Legal values are muxup and muxdn.
list List of signals on which to apply mutual exclusion constraints


5. 5. SDC Support

Timing constraints can also be defined with SDC commands. Use the sdcUnits configuration variable to define the time unit for all commands. Only the commands that follow are supported as API functions.

5. 5. 1. Object Access Commands

all_clocks Applies a command to all clocks.
all_inputs Applies a command to all inputs. No options are supported.
all_outputs Applies a command to all outputs. No options are supported.
get_clocks Returns only the patterns given in argument. The name is verified to be a clock name by the calling command.
get_pins Returns only the patterns given in argument.
get_ports Returns only the patterns given in argument.

5. 5. 2. set_case_analysis

SYNTAX

set_case_analysis 0 | zero | 1 | one
                  | rise | rising | fall | falling
                  signal_list

ARGUMENTS

0 | zero Sets logical constraint 0 on specified signals (connectors or internal signals)
1 | one Sets logical constraint 1 on specified signals (connectors or internal signals)
rise | rising Only rising transitions are propagated on specified signals (connectors or internal signals)
fall | falling Only falling transitions are propagated on specified signals (connectors or internal signals)

INF EQUIVALENT

set_case_analysis 0 | 1 translates to the CONSTRAINT section

set_case_analysis rise | fall translates to the NORISING and NOFALLING sections

5. 5. 3. set_disable_timing

SYNTAX

set_disable_timing signal_list

INF EQUIVALENT

set_disable_timing translates to the BYPASS section

5. 5. 4. set_false_path

SYNTAX

set_false_path [-setup | -hold] [-rise] [-fall]
               [-from fr_list]
               [-through through_list]
               [-to to_list]

ARGUMENTS

-rise Restricts false paths to those ending on a rising edge
-fall Restricts false paths to those ending on a falling edge
-from Specifies a list of false paths starting points
-through Specifies a list of intermediary points the false paths must go through. Multiple groups of intermediary points can be specified using multiple -through options
-to Specifies a list of false paths ending points
-setup Disables setup verifications on signals specified in the to_list. The -setup option is ignored if to_list is not present. -rise and -fall options do not apply on setup verification disabling. from_list and through_list are not taken into account.
-hold Disables hold verifications on signals specified in the to_list. The -hold option is ignored if to_list is not present. -rise and -fall options do not apply on hold verification disabling. from_list and through_list are not taken into account.

INF EQUIVALENT

set_false_path -from | -through | -to translates to the BYPASS section

set_false_path -from -through -to translates to the FALSEPATH section

set_false_path -rise | -fall translates to the NORISING and NOFALLING sections

set_false_path -setup | -hold translates to the NOCHECK section

5. 5. 5. create_clock

SYNTAX

create_clock [-name clock_name] -period period_value 
             [-waveform edge_list] connector_list

ARGUMENTS

-name Specifies the name of the clock to be created.
-period Sets the clock period.
-waveform Sets the rising and falling edge times of the clock waveform.
connector_list Connectors to apply the waveform on. If no connector is specified, the clock is assumed to be virtual

INF EQUIVALENT

create_clock translates to the CLOCK CONNECTORS and ASYNCHRONOUS CLOCK GROUPS section

5. 5. 6. create_generated_clock

SYNTAX

create_generated_clock [-name clock_name] -source source_connector
                       [-divide_by factor | -multiply_by factor]
                       [-duty_cycle duty_cycle_value]
                       [-invert]
                       [-edges edge_list]
                       [-edge_shift shift_list] connector_list

ARGUMENTS

-name Name of the clock to be created.
-source Clock source from which the clock is generated.
-divide_by Divides the clock source frequency by factor. factor must be a power of 2.
-multiply_by Multiplicates the clock source frequency by factor. factor must be a power of 2.
-duty_cycle Sets the duty cycle in percents.
-invert Inverts the waveform of the generated clock.
-edges Specifies the number of clock source edges to form the edges of the generated clock.
-edge_shift For each edge specified in the edge_list, sets the shift value to be applied to.

INF EQUIVALENT

create_generated_clock translates to the CLOCK CONNECTORS and ASYNCHRONOUS CLOCK GROUPS section

5. 5. 7. set_clock_latency

SYNTAX

set_clock_latency [-source] [-rise] [-fall]
                  [-late] [-early]
                  delay_value clock_list

ARGUMENTS

-source Specifies clock source latency. If not set, ideal clock latency is assumed.
-rise Sets the delay for the clock's rising edge.
-fall Sets the delay for the clock's falling edge.
-late The delay affects only the max time of the clock's corresponding edge. Only for source latency.
-early The delay affects only the min time of the clock's corresponding edge. Only for source latency.
-max The delay affects only the max time of the clock's corresponding edge. Only for ideal clock latency.
-min The delay affects only the min time of the clock's corresponding edge. Only for ideal clock latency.

INF EQUIVALENT

set_clock_latency translates to the CLOCK CONNECTORS and ASYNCHRONOUS CLOCK GROUPS section

5. 5. 8. set_clock_uncertainty

SYNTAX

set_clock_uncertainty [-from from_clock] [-to to_clock]
                      [-rise_from rise_from_clock]
                      [-fall_from fall_from_clock]
                      [-rise_to rise_to_clock]
                      [-fall_to fall_to_clock]
                      [-rise] [-fall]
                      [clock_pin_list]
                      [-setup] [-hold] uncertainty

DESCRIPTION

Specifies the clock uncertainty (skew characteristics) of specified clock networks. This command can specify either interclock uncertainty or simple uncertainty.

ARGUMENTS

-from Specifies the source clock pins for interclock uncertainty.
-to Specifies the destination clock pins for interclock uncertainty.
-rise_from Same as -from, but uncertainty only applies to rising edge of source clock.
-fall_from Same as -from, but uncertainty only applies to falling edge of source clock.
-rise_to Same as -to, but uncertainty only applies to rising edge of destination clock.
-fall_to Same as -to, but uncertainty only applies to falling edge of destination clock.
-rise Deprecated option. Same as -rise_to.
-fall Deprecated option. Same as -fall_to.
clock_pin_list Specifies the destination clock pins for simple uncertainty.
-setup Indicates that the uncertainty only applies to setup checks.
-hold Indicates that the uncertainty only applies to hold checks.
uncertainty A floating-point number (usually positive) that specifies the uncertainty value.

EXAMPLE

set_clock_uncertainty CLK1 100
set_clock_uncertainty -from CLK1 -to CLK2 200

5. 5. 9. set_input_transition

SYNTAX

set_input_transition [-rise] [-fall]
                [-max] [-min] transition port_list

ARGUMENTS

-rise Sets rising transition only
-fall Sets falling transition only
-min Not supported
-max Not supported
transition Transition value
port_list List of input pins

EXAMPLE

set_input_transition -rise 100 di
set_input_transition -fall 120 di

INF EQUIVALENT

set_input_delay translates to the PINSLEW section

5. 5. 10. set_load

SYNTAX

set_load [-min] [-max] [-substract_pin_load] 
                [-pin_load] [-wire_load] value objects

DESCRIPTION

Sets the capacitance to a specified value on specified ports and nets. This function should be called before database construction or database loading. In order to operate correctly, this function should be used together with the configuration variable avtPrecisionLevel set to 1.

ARGUMENTS

-min Not supported
-max Not supported
-substract_pin_load Not supported
-pin_load Not supported
-wire_load Not supported
value Capacitance value
objects List of output pins

EXAMPLE

avt_config avtPrecisionLevel 1
inf_SetFigureName my_design
set_load 0.31 [get_ports [all_outputs]]
 
set fig [ttv_LoadSpecifiedTimingFigure my_design]
set clist [ttv_GetPaths $fig * * uu 5 critic path max]

INF EQUIVALENT

set_load translates to the OUTPUT CAPACITANCE section

5. 5. 11. set_input_delay

SYNTAX

set_input_delay [-clock clock_name] [-clock_fall]
                [-rise] [-fall] [-max] [-min]
                delay_value connector_list

ARGUMENTS

-clock Relative clock.
-clock_fall Reference edge is the falling edge of a clock. Affects the From and After statements. If not specified reference edge is rising edge.
-rise Delay for input rising edge only.
-fall Delay for input falling edge only.
-min Minimum arrival time on input. Corresponds to the Unstable subsection in the .inf file.
-max Maximum arrival time on input. Corresponds to the Stable subsection in the .inf file.

EXAMPLE

set_input_delay -clock ck -clock_fall -rise -min 200 di
set_input_delay -clock ck -clock_fall -rise -max 300 di

INF EQUIVALENT

set_input_delay translates to

SPECIFY INPUT CONNECTORS
BEGIN
    "di" Rising From "ck"  Falling:
      Unstable 200 After "ck"  Falling;
      Stable 300 After "ck"  Falling;
END;

5. 5. 12. set_output_delay

SYNTAX

set_output_delay [-clock clock_name] [-clock_fall]
                 [-rise] [-fall] [-max] [-min]
                 delay_value connector_list

ARGUMENTS

-clock Relative clock.
-clock_fall Reference edge is the falling edge of a clock. Affects the For and After statements. If not specified reference edge is rising edge.
-rise Delay for output rising edge only.
-fall Delay for output falling edge only.
-min Minimum departure time on output. Corresponds to the Unstable subsection in the .inf file.
-max Maximum departure time on output. Corresponds to the Stable subsection in the .inf file.

INF EQUIVALENT

set_input_delay translates to VERIFY OUTPUT CONNECTORS section.

5. 5. 13. set_multicycle_path

SYNTAX

set_multicycle_path [-setup] [-hold]
                    [-rise] [-fall] [-start] [-end]
                    [-from from_list] [-to to_list] path_multiplier

ARGUMENTS

-setup Uses path_multiplier for setup calculation only.
-hold Uses path_multiplier for hold calculation only.
-rise Affects rising path delays only.
-fall Affects falling path delays only.
-start Calculation is relative to the clock's period at path startpoint.
-end Calculation is relative to the clock's period at path endpoint.
-from Specify a list of timing path startpoints. Valid startpoints are latches, input pins, or inout pins.
-to Specify a list of timing path endpoints. Valid endpoints are latches, output pins, or inout pins.

INF EQUIVALENT

set_multicycle_path translates to MULTICYCLE PATH section.

5. 5. 14. set_max_delay

SYNTAX

set_max_delay [-rise] [-fall]
              [-from from_list]
              [-rise_from from_list] [-fall_from from_list]
              [-to to_list]
              [-rise_to to_list] [-fall_to to_list]
              delay_value

DESCRIPTION

Specifies a required maximum delay for the specified timing paths. Appears as a setup check in slack reports.

ARGUMENTS

-rise Only rising paths are constrained.
-fall Only falling paths are constrained.
-from Specifies the timing path source.
-rise_from Same as -from, but constraint only applies to rising edge of source.
-fall_from Same as -from, but constraint only applies to falling edge of source.
-to Specifies the timing path destination.
-rise_to Same as -to, but constraint only applies to rising edge of destination.
-fall_to Same as -to, but constraint only applies to falling edge of destination.
delay_value A floating-point number (usually positive) that specifies the delay value.

EXAMPLE

set_max_delay -from CLK1  -to LATCH1 500

5. 5. 15. set_min_delay

SYNTAX

set_min_delay [-rise] [-fall]
              [-from from_list]
              [-rise_from from_list] [-fall_from from_list]
              [-to to_list]
              [-rise_to to_list] [-fall_to to_list]
              delay_value

DESCRIPTION

Specifies a required minimum delay for the specified timing paths. Appears as a hold check in slack reports.

ARGUMENTS

-rise Only rising paths are constrained.
-fall Only falling paths are constrained.
-from Specifies the timing path source.
-rise_from Same as -from, but constraint only applies to rising edge of source.
-fall_from Same as -from, but constraint only applies to falling edge of source.
-to Specifies the timing path destination.
-rise_to Same as -to, but constraint only applies to rising edge of destination.
-fall_to Same as -to, but constraint only applies to falling edge of destination.
delay_value A floating-point number that specifies the delay value.

EXAMPLE

set_max_delay -from CLK1  -to LATCH1 500

5. 6. Timing DB Generation

5. 6. 1. Automatic Generation

hitas

<TimingFigure *> hitas <figname> [-annotatefromcns] [-startfromcns]



Generates a timing figure from a pre- or post-layout transistor netlist. It is assumed that an internal representation of the netlist exists in the program's memory, i.e., that the related files (including MOS models) have already been loaded. See avt_LoadFile function.

figname Name of the subcircuit the timing figure is to be derived
-annotatefromcns [experimental] If a $filename.cns file exist, disassembling circuit stage is replaced by annotate the circuit from cns file information.
-startfromcns [experimental] Same as -annotatefromcns expect that the netlist saved in the cns file is used, not the user loaded one.
EXAMPLE set fig [hitas my_design]


hitas_pvt_count

int hitas_pvt_count()

Returns the number of PVT errors encountered in the last hitas run.

EXAMPLE set pvterrors [hitas_pvt_count]


ttv_LoadSDF

TimingFigure *ttv_LoadSDF(Netlist *fig, char *sdf_file)

Constructs a timing figure from a netlist and an SDF file. The netlist must have been constructed before (related files loaded)

fig Pointer on a netlist
sdf_file Name of the corresponding SDF file


5. 6. 2. Manual Generation

ttv_CreateTimingFigure

void ttv_CreateTimingFigure(Netlist *lf)

Initiates the creation of a timing figure. Computes the connectors capacitances assuming the netlist provided is a flat-transistor one.

lf Netlist the timing figure is based on.
EXAMPLE ttv_CreateTimingFigure $netlist


ttv_EditTimingFigure

void ttv_EditTimingFigure(TimingFigure *tvf)

Edit an existing timing timing figure. ttv_FinishTimingFigure must be called after the modifications to make the timing figure usable.

tvf TimingFigure to edit.
EXAMPLE ttv_EditTimingFigure $fig


ttv_AddConnector

TimingSignal *ttv_AddConnector(char *name, char dir)

Creates a connector timing signal.

name Name of the newly created command. If this timing signal already exists, no new timing signal is created. In the last case, incompatible timing signal types will raise a warning and the timing signal type will be overridden
dir Direction of the connector: i=in, o=out, t=tristate, z=hz, x=unknown, b=inout (output reused internaly)
EXAMPLE set con [ttv_AddCommand input i]


ttv_AddCommand

TimingSignal *ttv_AddCommand(char *name)

Creates a command timing signal.

name Name of the newly created command. If this timing signal already exists, no new timing signal is created. In the last case, incompatible timing signal types will raise a warning and the timing signal type will be overridden
EXAMPLE set com [ttv_AddCommand com0]


ttv_AddLatch

TimingSignal *ttv_AddLatch(char *name)

Creates a latch timing signal.

name Name of the newly created latch. If this timing signal already exists, no new timing signal is created. In the last case, incompatible timing signal types will raise a warning and the timing signal type will be overridden
EXAMPLE set latch [ttv_AddLatch lt0]


ttv_AddPrecharge

TimingSignal *ttv_AddPrecharge(char *name)

Creates a precharge timing signal.

name Name of the newly created precharge. If this timing signal already exists, no new timing signal is created. In the last case, incompatible timing signal types will raise a warning and the timing signal type will be overridden


ttv_AddBreakpoint

TimingSignal *ttv_AddBreakpoint(char *name)

Creates a breakpoint timing signal.

name Name of the newly created breakpoint. If this timing signal already exists, no new timing signal is created. In the last case, incompatible timing signal types will raise a warning and the timing signal type will be overridden


ttv_AddTiming

TimingLine *ttv_AddTiming(char *input, char *output, double max_delay, double max_slop, double min_delay, double min_slope, char *dir)

Creates a data delay line.

input Delay line start point
output Delay line end point
max_slope Maximum slope associated with delay line
min_slope Minimum slope associated with delay line
max_delay Maximum propagation delay associated with delay line
min_delay Minimum propagation delay associated with delay line
dir Transitions on start and end points: uu for input rising/output rising, ud for input rising/output falling, dd for input falling/output falling, du for input falling/output rising.


ttv_AddHZTiming

TimingLine *ttv_AddHZTiming(char *input, char *output, double max_delay, double min_delay, char *dir)

Creates a HZ data delay line.

input Delay line start point
output Delay line end point
max_slope Maximum slope associated with delay line
max_delay Maximum propagation delay associated with delay line
dir Transitions on start and end points: uu for input rising/output rising, ud for input rising/output falling, dd for input falling/output falling, du for input falling/output rising.


ttv_AddSetup

TimingLine *ttv_AddSetup(char *input, char *output, double delay, char *dir)

Creates a setup line.

input Data point
output Clock point
delay Constraint associated with the setup line
dir Transitions on data and clock points: uu for input rising/output rising, ud for input rising/output falling, dd for input falling/output falling, du for input falling/output rising.


ttv_AddAccess

TimingLine *ttv_AddAccess(char *input, char *output, double max_delay, double max_slop, double min_delay, double min_slope, char *dir)

Creates a data access delay line

input Data access line start point
output Data access line end point
max_slope Maximum slope associated with delay line
min_slope Minimum slope associated with delay line
max_delay Maximum propagation delay associated with delay line
min_delay Minimum propagation delay associated with delay line
dir Transitions on start and end timing signals: uu, ud, dd or du.


ttv_AddHZAccess

TimingLine *ttv_AddHZAccess(char *input, char *output, double max_delay, double min_delay, char *dir)

Creates a HZ data access line.

input Delay line start point
output Delay line end point
max_slope Maximum slope associated with delay line
max_delay Maximum propagation delay associated with delay line
dir Transitions on start and end points: uu for input rising/output rising, ud for input rising/output falling, dd for input falling/output falling, du for input falling/output rising.


ttv_AddHold

TimingLine *ttv_AddHold(char *input, char *output, double delay, char *dir)

Creates a hold constraint line between a data pin and a clock pin.

input Data pin
output Clock pin
delay Nominal constraint value associated with the line
dir Transitions on the data and clock pins: uu for input rising/output rising, ud for input rising/output falling, dd for input falling/output falling, du for input falling/output rising.


ttv_SetLineCommand

void ttv_SetLineCommand(TimingLine *tl, char *max_command, char *min_command, char *dir)

Associates commands to a line. The command is the signal that enables reading or writing in a latch point.

max_command Command generating the maximum delay
min_command Command generating the minimum delay
dir First character is the edge of the max command and the second of the min command.


ttv_SetLineModel

void ttv_SetLineModel(TimingLine *tl, char *modelname, char *where)

Associates a model name to a line.

tl Timing Line to set the model name
modelname name of the model to associate.
where value to associate model to: "delay max", "delay min", "slope max" or "slope min".


ttv_FinishTimingFigure

TimingFigure *ttv_FinishTimingFigure()

Returns the finished timing figure currently in creation. No more modification will be permitted on the timing figure after this step.



ttv_DriveTimingFigure

void ttv_DriveTimingFigure(TimingFigure *tvf, char *filename, char *format)

Drives a timing figure on disk

tvf Figure to be driven
filename Full filename
format File format, dtx or ttx


ttv_CreateTimingTableModel

void ttv_CreateTimingTableModel(TimingFigure *tvf, char *name, DoubleListTimeValue *axis1, DoubleListCapaValue *axis2, DoubleTable *values, char *type)

Creates a timing table model using the given axis and table values.
For GNS usage, set tvf to NULL

tvf Timing figure where table model will be created
name Name of the table model
axis1 Y-axis values of the table
axis2 X-axis values of the table
values Values to set into the table. It's a 2D array.
type defines the type of the table axis: "slope-slope", "slope-capa" or "slope-ckslope".
EXAMPLE ttv_CreateTimingTableModel $fig mymodel {1e-12 3e-12} {1e-15 2e-15} {{1e-12 2e-12}{3e-12 4e-12}} "slope-capa"


ttv_CreateEnergyTableModel

void ttv_CreateEnergyTableModel(TimingFigure *tvf, char *name, DoubleListTimeValue *axis1, DoubleListCapaValue *axis2, DoubleTable *values, char *type)

Associate an energy table model using the given axis and table values.
For GNS usage, set tvf to NULL

tvf Timing figure where table model will be created
name Name of the table model
axis1 Y-axis values of the table
axis2 X-axis values of the table
values Values to set into the table. It's a 2D array.
type defines the type of the table axis: "slope-slope", "slope-capa" or "slope-ckslope".
EXAMPLE ttv_CreateTimingTableModel $fig mymodel {1e-12 3e-12} {1e-15 2e-15} {{1e-12 2e-12}{3e-12 4e-12}} "slope-capa"


ttv_SetTimingFigureName

void ttv_SetTimingFigureName(TimingFigure *tvf, char *name)

Change the name of a timing figure.

tvf Figure to be changed
name New figure name


5. 7. Timing DB Browsing

5. 7. 1. TimingFigure Access

ttv_GetTimingFigure

<TimingPathList *> ttv_GetTimingFigure <name>
Obsolete but still working:
<TimingPathList *> ttv_GetTimingFigure <name> <temperature> <supply value>

Gets a timing figure from memory, assuming it has already been loaded. Only usefull when a timing figure comes from a .lib of .tlf file.

name Timing figure's name
EXAMPLE set fig [ttv_GetTimingFigure my_design]


ttv_LoadSpecifiedTimingFigure

TimingFigure *ttv_LoadSpecifiedTimingFigure(char *name)

Reads a DTX timing figure from disk.

name Timing figure's name. The name of the timing figure should be the same as its file name, without the dtx suffix.
EXAMPLE set fig [ttv_LoadSpecifiedTimingFigure "my_design"]


ttv_LoadSpecifiedTimingPathFigure

TimingFigure *ttv_LoadSpecifiedTimingPathFigure(char *name)

Reads a TTX timing path figure from disk.

name Timing figure's name. The name of the timing figure should be the same as its file name, without the ttx suffix.
EXAMPLE set fig [ttv_LoadSpecifiedTimingPathFigure "my_design"]


ttv_LoadCrosstalkFile

int ttv_LoadCrosstalkFile(TimingFigure *tvf)

Loads a CTX file, result of a previous crosstalk analysis, and annotates a timing figure with crosstalk information such as delta-delays. The CTX file should have the same name of the timing figure, with the ctx extension. Returns 1 on failure, 0 on success.

tvf Pointer on the timing figure to annotate
EXAMPLE ttv_LoadCrosstalkFile $fig


ttv_RecomputeDelays

void ttv_RecomputeDelays(TimingFigure *tvf)

Recomputes delays and slopes in a timing figure according to new input slopes and output capacitances.

tvf Pointer on the timing figure
EXAMPLE ttv_RecomputeDelays $fig


ttv_GetTimingFigureProperty

Property *ttv_GetTimingFigureProperty(TimingFigure *fig, char *code)

Returns a property of a timing figure. A Property is a polymorphic type, the returned type depends on the property code.

fig Pointer on the timing figure
code Property code; for available property codes, see the TimingFigure object section


5. 7. 2. TimingPath Access

ttv_GetPaths

<TimingPathList *> ttv_GetPaths [<TimingFigue *tf>] [-from <startnodelist>] [-to <endnodelist>] [-thru <accessnodelist>] [-dir <dir>] [-nb <nb>] [-critic|-all] [-path|-access] [-max|-min]

Obsolete but still working:
TimingPathList *ttv_GetPaths(TimingFigure *tf, char *clock, char *start, char *end, char *dir, long number, char *all, char *path, char *minmax);


Gets a selection of paths/accesss, depending upon configuration.
If tf is not specified then startnodelist, endnodelist and accessnodelist are considered TimingSignal lists. They are node name lists otherwise.
The accessnodelist is used only if -access is specified.


tf Related timing figure to use.
-from <startnodelist> Path start node list (clock node if -access is used). If not specified, all possible start nodes are considered.
-thru <accessnodelist> Path access node list (latchs, precharges, breakpoints). Used only with -access. If not specified, all possible access nodes are considered.
-to <endnodelist> Path end node list (latchs, precharges, breakpoints, connectors). If not specified, all possible end nodes are considered.
-dir <dir> Path transitions: uu, dd, ud, du; u or d can be replaced by the wildcard ?. z or / can be added to the usual direction to respectively retreive only HZ path or only non-HZ path. Default is ??.
-nb <nb> Maximum number of paths that will appear in the returned list. If <nb> is negative or zero, no path number limit will be considered. Default is -1.
-critic Returns only critical paths. This is the default.
-all Returns critical and parallel paths.
-path Searches for paths. This is the default.
-access Searches for accesses.
-max Uses maximum delays for the search. This is the default.
-min Uses minimum delays for the search.
Obsolete options:
start Path starting point (clock signal for an access path)
end Path destination point
dir Path transitions: uu, dd, ud, du; u or d can be replaced by the wildcard ?. z or / can be added to the usual direction to respectively retreive only HZ path or only non-HZ path.
number Number of paths/access that will appear in the returned list. If number is negative, no path number limit will be considered
all all or critic: all paths appear in the returned list or only critical paths disregarding parallel paths
path Type of paths to return, either path or access
minmax Maximum (max) or minimum (min) paths are returned
EXAMPLE set p_list [ttv_GetPaths $fig -to {*outsig* out} -dir ?r -nb 10 -critic -path -min]
or with Timing Signals myclock1 and myclock2:
set p_list [ttv_GetPaths -from {$myclock1 $myclock2} -access]
Obsolete use:
set p_list [ttv_GetPaths $fig * * ?? 10 critic path max]


ttv_CharacPaths

TimingPathList *ttv_CharacPaths(TimingFigure *tf, double slopein, char *start, char *end, char *dir, long number, char *all, char *path, char *minmax, double capaout, int propagate)

Search for timing paths. Path delay is computed with regard to input slope and output load.

tf Related timing figure to be driven
slopein Path input slope to be propagated, if 0, default slope is taken into account.
start Path starting point (clock signal for an access path)
end Path destination point.
dir Path transitions: uu, dd, ud, du; u or d can be replaced by the wildcard ?
number Number of paths/access that will appear in the returned list. If number is negative, no path number limit will be considered
all all or critic: all paths appear in the returned list or only critical paths disregarding parallel paths
path Type of paths to return, either path or access
minmax Maximum (max) or minimum (min) paths are returned
capaout Load to add to output connectors (on-path bidir connectors affected only in full propagation, see below). If negative load, default is taken into account.
propagate Type of slope propagation, can take values 0 (no propagation), 1 (full propagation) or 2 (1-stage propagation)
EXAMPLE set p_list [ttv_CharacPaths $fig 100e-12 a b ud 1 critic path max 10e-15 1]


ttv_GetParallelPaths

TimingPathList *ttv_GetParallelPaths(TimingPath *ta, long num)

Returns a list of paths parallel to a given path, i.e. starting end ending on the same nodes, with same transitions, but crossing different intermediary nodes.

ta Pointer to a timing path
num Max number of parallel paths to report
EXAMPLE set pr_list [ttv_GetParallelPaths [lindex $p_list 1] 10]


ttv_ProbeDelay

TimingPathList *ttv_ProbeDelay <TimingFigure *tf> <StringList *nodenamelist> [flags]

Obsolete but still working:
TimingPathList *ttv_ProbeDelay(TimingFigure *tf, double inputslope, StringList *nodenamelist, char *dir, int nbpaths, char *path_or_access, char *minmax)

Retreives the paths by specifying a list of nodes on the paths without the need for intermediate nodes to be forcibly path stop nodes (latches, precharges, connectors, ...).
The type of the crossed nodes can be specified as wildcards can be used to indicate a set of nodes.

tf Timing figure
nodenamelist Nodes that the path must cross. Must be present at least the start node, all memory/intermediate nodes on the path in the right order and the end node.
The types of the nodes can be specified by adding the prefixes: "-any=", "-latch=", "-prech=" and "-con=". Respectively for any node, latch, precharge and connector.
If wildcards are used for the intermediate nodes without precising the node types, "-latch=" is assumed.
Using "-any=" for intermediate nodes can be very time consuming because all the matching nodes combinations will be considered. Adding -access before one of this option (eg. -access-latch) will indicate a probe thru the access timing line to the specified node.
flags:
-dir <dir> Requested start-to-end transition. Default is ?? (all transitions).
-slope <inputslope> Value of the input slope to propagate through the path. If negative, the slope computed during database creation will be propagated.
-nb <maxpath> If positive maximum number of paths returned. Default, is -1 (unlimited).
-min Search for minimum-delay paths
-max Search for maximum-delay paths. This is the default.
-nosync Disable synchornization to the latch opening when crossing latches if stb has been run on the timing figure.
-noprop Disable slope propagation thru the found path gates. <inputslope> is ignored.
EXAMPLE To probe a delay from node "net23" to node "net045" thru node "lt1":
set p_list [ttv_ProbeDelay $fig {net23 lt1 net045} -slope 100e-12 -dir ud -nbpaths 1]
To probe paths from all connectors to node "net045" thru any latch:
set p_list [ttv_ProbeDelay $fig {-con=* -latch=* net045} -slope 100e-12].
To probe the minimum accesses from connector "ck" thru any latch to node "endnode":
set p_list [ttv_ProbeDelay $fig {-con=ck -access-latch=* endnode} -min].


ttv_FreePathList

void ttv_FreePathList(TimingPathList *lst)

Frees the paths in a list

lst Pointer on the head of a path list
EXAMPLE ttv_FreePathList $p_list


ttv_SearchExcludeNodeType

void ttv_SearchExcludeNodeType(char *conf)

Allows the exclusion of nodes of a given type for path searching

conf List of node types separated by spaces. Valid types are Command, Precharge, Latch, Connector and Breakpoint.
EXAMPLE ttv_SearchExcludeNodeType "Command Precharge"


ttv_CharacPathTables

ListOfDoubleTable *ttv_CharacPathTables(TimingPath *pth, DoubleListTimeValue *slopes, DoubleListCapaValue *capas, int propagate)

Recompute path delay and output slope with all the combinations of slopes and capacitances. Returns a list of 2 matrices (list of lists). The first list contains the delays and the second the slopes. Each line correspond to an input slope and each element of a line to a capacitance.

pth Timing path to recompute
slopes List of slope values to use
capas List of capacitance values to use
propagate type of slope propagation, can take values 0 (no propagation), 1 (full propagation))
EXAMPLE set res [ttv_CharacPathTables $mypath {1e-12 3e-12} {1e-15 2e-15} 1]


ttv_GetTimingPathProperty

Property *ttv_GetTimingPathProperty(TimingPath *fig, char *code)

Returns a property of a timing path. A Property is a polymorphic type, the returned type depends on the property code.

fig Pointer on the timing path
code Property code; for available property codes, see the TimingPath object section


ttv_DetectFalseClockPath

void ttv_DetectFalseClockPath(TimingFigure *tf)

Checks the evidence of signal propagation of clock paths arriving on command signals (and not on other signals), in order to eliminate possible false paths. Detected false paths are added to the INF file.

tf Pointer on a timing figure


ttv_DetectFalsePath

void ttv_DetectFalsePath(TimingFigure *tvf, char *start, char *end)

Checks the evidence of signal propagation between two signals, in order to eliminate possible false paths. Detected false paths are added to the INF file.

tf Pointer on a timing figure
start Name of the starting point
end Name of the ending point


ttv_GetGeneratedClockPaths

TimingPathList *ttv_GetGeneratedClockPaths(TimingFigure *tvf, TimingEvent *tve, char *minmax)

Gets the path list from a top level clock to the specified generated clock timing event.

tvf Timing figure
tve Generated clock timing event
minmax Maximum (max) or minimum (min) paths are returned
EXAMPLE set p_list [ttv_GetGeneratedClockPaths $fig $clockevent max]


5. 7. 3. TimingLine Access

ttv_GetLines

TimingLineList *ttv_GetLines(TimingFigure *tvf, char *start, char *end, char *dir, char *linetype)

Gets a selection of lines, depending upon configuration.

tf Related timing figure
start Line starting point
end Line destination point
dir Line transitions: uu, dd, ud, du; u or d can be replaced by the wildcard ?
type Line type filters: setup, hold, access, hz, rc, prech, eval, data or all
EXAMPLE set l_list [ttv_GetLines $fig * * ?? "access setup hold"]


ttv_ComputeLineDelay

double ttv_ComputeLineDelay(TimingLine *tl, double slope_in, double output_capa, char *delayslope, char *maxmin)

Recomputes a line delay or slope depending on an input slope and an output capacitance.

tl Related timing line
slope_in desired input slope
output_capa desired output capacitance
delayslope type of delay to recompute delay or slope
maxmin type of delay to recompute max or min
EXAMPLE set val [ttv_ComputeLineDelay $line 1.5e-12 0.3e-15 delay max]


ttv_SetTimingLineDelay

void ttv_SetTimingLineDelay(TimingLine *tl, char *delayslope, char *maxmin, double value)

Forces the value of the propagation delay or output slope of a line. The line's propagation delay or output slope will never be reevaluated.

tl Related timing line
delayslope type of delay to set delay or slope
maxmin type of delay to set max, min or all
value new value
EXAMPLE ttv_SetTimingLineDelay $line delay max 1e-9]


ttv_CharacTimingLineModel

DoubleTable *ttv_CharacTimingLineModel(TimingFigure *tf, char *name, DoubleListTimeValue *input_slope, DoubleListCapaValue *output_capa, char *type)

Compute delays or slopes using a given timing line model name. Returns a matrix of values. Each line correspond to an input slope and each element of a line to a capacitance.

tvf Timing figure with the timing model
name Name of the timing model
slopes List of slope values to use
capas List of capacitance/slope values to use
type defines the type of the table axis: "slope-slope", "slope-capa:delay" or "slope-capa:slope".
"slope-slope" (capas contains slopes values) returns delay values
"slope-capas:delays" returns delay values
"slope-capa:slope" returns slope values
EXAMPLE set res [ttv_CharacTimingLineModel $fig "hold__EN/CP_01_1" {1e-12 3e-12} {1e-15 2e-15} slope-capa:slope]


ttv_GetTimingLineProperty

Property *ttv_GetTimingLineProperty(TimingLine *tl, char *code)

Returns a property of a timing line. A Property is a polymorphic type, the returned type depends on the property code.

tl Pointer on the timing line
code Property code; for available property codes, see the TimingLine object section


5. 7. 4. TimingPath Reports

ttv_DisplayPathList

void ttv_DisplayPathList(FILE *f, TimingPathList *tpl)

Prints summary information about paths given in a path list

tpl Pointer on a path list
f File where to save the report, stdout for standard output


ttv_DisplayPathListDetail

void ttv_DisplayPathListDetail(FILE *f, TimingPathList *tpl)

Prints detailed information about paths given in a path list

tpl Pointer on a path list
f File where to save the report, stdout for standard output


ttv_DisplayPathDetail

void ttv_DisplayPathDetail(FILE *f, int num, TimingPath *tp)

Prints detailed information about a given path

tp Pointer on a path
f File where to save the report, stdout for standard output
num Number to identify the path


ttv_DisplayPathDetailShowColumn

void ttv_DisplayPathDetailShowColumn(char *conf)

Selects the columns to be displayed in the reports provided by ttv_DisplayPath. By default, all columns are displayed when available information. Wild cards can be used, eg. dt.*slope. Prefix pl. refers to path reports, .dt to path detail reports, c2l. to connector to latch and stab to stability reports.

conf list of column IDs separated by spaces. Valid IDs are: pl.index, pl.starttime, pl.startslope, pl.pathdelay, pl.totaldelay, pl.datalag, pl.endslope, pl.startnode, pl.endnode, dt.simacc, dt.simdelta, dt.simslope, dt.simerror, dt.refacc, dt.refdelta, dt.refslope, dt.reflagacc, dt.reflagdelta, dt.ctkacc, dt.ctkdelta, dt.ctkslope, dt.ctklagacc, dt.ctklagdelta, dt.capa, dt.nodetype, dt.nodename, dt.netname, dt.linetype, dt.transistors, dt.clockinfo, stab.from, stab.thru, c2l.absdata or all.


ttv_DisplayPathDetailHideColumn

void ttv_DisplayPathDetailHideColumn(char *conf)

Selects the columns not to be displayed in the reports provided by ttv_DisplayPath. By default, all columns are displayed when available information. Wild cards can be used, eg. dt.*slope. Prefix pl. refers to path reports, dt. to path detail reports, c2l. to connector to latch and stab to stability reports. Hidding dt.linetype activates the merge of RC delays with gate delays.

conf list of column IDs separated by spaces. Valid IDs are: pl.index, pl.starttime, pl.startslope, pl.pathdelay, pl.totaldelay, pl.datalag, pl.endslope, pl.startnode, pl.endnode, dt.simacc, dt.simdelta, dt.simslope, dt.simerror, dt.refacc, dt.refdelta, dt.refslope, dt.reflagacc, dt.reflagdelta, dt.ctkacc, dt.ctkdelta, dt.ctkslope, dt.ctklagacc, dt.ctklagdelta, dt.capa, dt.nodetype, dt.nodename, dt.netname, dt.linetype, dt.transistors, dt.clockinfo, stab.from, stab.thru, c2l.absdata or all.


ttv_DisplayClockPathReport

void ttv_DisplayClockPathReport(FILE *f, TimingFigure *tf, char *clock, char *minmax, int number)

Prints a detailed report of timing paths originating from a clock.

f File where to save the report, stdout for standard output
tf Pointer on the timing figure to consider
clock Starting point name; can be a wildcard name
minmax min or max; type of path to be searched
number Maximum number of paths to report


ttv_DisplayConnectorToLatchMargin

void ttv_DisplayConnectorToLatchMargin(FILE *f, TimingFigure *tf, char *inputconnector, char *mode)

Prints a report displaying setup and hold constraints on latch points, originating from input connectors (both from rising and falling transitions).

f File where to save the report, stdout for standard output
tf Pointer on the timing figure to consider
inputconnector Names of the connectors to consider, can be wildcards.
mode Controls the amount of information displayed. Valid values are summary or all (display path detail) associated with split. Using split displays the report connector one connector at a time. This option can also be used to reduce memory usage on huge UTDs. margins will show the computed contsraints for each path in the summary. pathcomp permits will display the spice total error as total spice delay versus total tas delay + path margin. By default, the path margin is not included.
EXAMPLE ttv_DisplayConnectorToLatchMargin $ofile $fig "*" "summary split"


ttv_PlotPathDetail

void ttv_PlotPathDetail(FILE *f, TimingPath *tp)

Plots the waveforms of nodes on a given path.

tp Pointer on a path
f File where to save the report, stdout for standard output


ttv_SetupReport

void ttv_SetupReport(char *conf)

Changes units and format used in path reports. Default units are ns and pf. Formats affect the way most of the values are displayed in the report columns. By default, values are justified right, node and net names are displayed together, and delay deviations are given relatively to the path delay.

conf List of names separated by spaces. Valid units are: ns, ps, pf, ff and #digits (which defines the precision for delay values, # ranging from 1 to 9). Valid formats are: JustifyRight, JustifyLeft, OnlyNetName, NodeName, HideRC, ShowRC, LocalError (which gives local delay deviations), PathComp (compares simulated delay versus hitas delay+path margin).


ttv_DumpHeader

void ttv_DumpHeader(FILE *f, TimingFigure *tvf)

Prints information about the given timing figure and the running script

f File where to save the report, stdout for standard output
tvf Pointer on a timing figure


ttv_DumpFigure

ttv_DumpFigure <FILE *f> <TimingFigure *tvf> [type]

Prints a table with the Timing Lines of a TimingFigure.

f File where to save the report, stdout for standard output
tvf Pointer on a timing figure
type Same type as ttv_GetLines API to filter output. Valid values: setup, hold, access, hz, rc, prech, eval, data or all.


5. 7. 5. TimingDetail Access

ttv_GetPathDetail

TimingDetailList *ttv_GetPathDetail(TimingPath *ta)

Returns the list of elementary timing arcs (lines) making up a critical path

ta Pointer on the timing path to consider
EXAMPLE set detail [ttv_GetPathDetail $path]


ttv_GetTimingDetailProperty

Property *ttv_GetTimingDetailProperty(TimingDetail *det, char *property)

Returns a property of a timing detail. A Property is a polymorphic type, the returned type depends on the property code.

ev Pointer on the timing detail
code Property code; for available property codes, see the TimingDetail object section


5. 7. 6. TimingDetail Simulation

ttv_SimulatePath

ttv_SimulatePath <TimingFigure *tvf> <TimingPath *ta> [-force] [-mc <number>] [-plot]

Constructs and saves on disk the spice netlist and stimuli required for simulation, relative to the given path. This requires all configuration variables related to simulation to be set correctly. Returns 0 on success, 1 on error.

tvf Pointer on a timing figure
path Pointer on the timing path the spice deck is to be extracted from
-force The path will be simulated even if it has already been
-mc <number> The number of monte-carlo simulations to be performed
-plot Generated a waveform file for viewing with gnuplot or gwave. Note that simUsePrint must be set.
No description


ttv_SimulateCharacPathTables

TimingPathTable *ttv_SimulateCharacPathTables(TimingFigure *tvf, TimingPath *tp, DoubleListTimeValue *slopes, DoubleListCapaValue *capas, int maxsim)

Simulates path with all the combinations of slopes and capacitances values. Returns a matrix (list of lists) of paths. Each line corresponds to an input slope and each element of a line to a capacitance. Each path in the matrix is a replica of the user given path except for the simulated slopes and delays.

tvf Timing figure of the path
tp Timing path to simulate
slopes List of slope values to use
capas List of capacitance values to use
maxsim maximum number of concurent simulation authorized.
EXAMPLE set res [ttv_SimulateCharacPathTables $myfig $mypath {1e-12 3e-12} {1e-15 2e-15} 3]


ttv_DriveSpiceDeck

int ttv_DriveSpiceDeck(TimingFigure *tvf, TimingPath *path, char *filename)

Constructs and saves on disk the spice netlist and stimuli required for simulation, relative to a given path. This requires all configuration variables related to simulation to be set correctly. Returns 0 on success, 1 on error.

tvf Pointer on a timing figure
path Pointer on the timing path the spice deck is to be extracted from
filename File where to save the report


ttv_DriveSetupHoldSpiceDeck

int ttv_DriveSetupHoldSpiceDeck(TimingFigure *tvf, TimingPathList *datapath, TimingPathList *clockpathlist, char *filename)

Constructs and saves on disk the spice netlist and stimuli required for simulation, relative to the computation of a setup or hold value. This requires all configuration variables related to simulation to be set correctly. Returns 0 on success, 1 on error.

tvf Pointer on a timing figure
datapath Pointer on the data path the spice deck is to be extracted from
clockpathlist Pointer on the clock path the spice deck is to be extracted from
filename File where to save the report


ttv_DisplayActivateSimulation

void ttv_DisplayActivateSimulation(char mode)

Enables the construction and simulation of the spice deck of a given path, when a reporting request occurs for this path. The simulation columns in the report appear automatically except explicitly disabled with ttv_DisplayPathDetailHideColumn.

mode yes or no to activate or deactivate spice deck construction and simulation


ttv_Simulate_AddDelayToVT

void ttv_Simulate_AddDelayToVT(TimingFigure *tvf, TimingPath *pth, TimingEvent *latch)

Applyed on the path, indicate to CPE to add a measure to retreive the delay to VT of the ending node of pth which is a command generating the event latch on the latch.
The value can be retreived using the corresponding TimingPath property after the simulation is done.

tvf Pointer on a timing figure.
pth Pointer on the timing path.
latch Event of the latch generated by the ending node of pth.


ttv_Simulate_FoundSolutions

int ttv_Simulate_FoundSolutions()

Returns the number of path activation solutions found by CPE.
0 means the path can not be activated hence it is a false path.
More than 1 solution, means CPE tried to find the best solution depending on whether the path was a max or a min path between those solutions.



5. 7. 7. TimingSignal Access

ttv_GetTimingSignalListByNet

TimingSignalList *ttv_GetTimingSignalListByNet(TimingFigure *tvf, char *name)

Retreives a timing signal list from a net name

tvf Pointer on a timing figure
name Name of the timing signal to retrieve. Should repect the naming conventions defined with avtCaseSensitive and avtVectorize configuration variables.
EXAMPLE set siglist [ttv_GetTimingSignalListByNet $fig net045]


ttv_GetTimingSignal

TimingSignal *ttv_GetTimingSignal(TimingFigure *tvf, char *name)

Retreives a timing signal from the timing figure; returns NULL on failure.

tvf Pointer on a timing figure
name Name of the timing signal to retrieve. Should repect the naming conventions defined with avtCaseSensitive and avtVectorize configuration variables.
EXAMPLE set sig [ttv_GetTimingSignal $fig net045]


ttv_GetTimingSignalList

TimingSignalList *ttv_GetTimingSignalList(TimingFigure *tvf, char *type, char *location)

Retreives a list of timing signals of a given type and location

tvf Pointer on a timing figure
type connector, precharge, latch, command or breakpoint
location interface, internal or all
EXAMPLE set ext_latches [ttv_GetTimingSignalList $fig latch interface]


ttv_GetClockList

TimingSignalList *ttv_GetClockList(TimingFigure *tvf)

Returns the list of signals marked as clock in a given timing figure, with a create_clock command for example. Returns an empty list if the timing figure is NULL, or if there are no clock connectors.

tvf Pointer on a timing figure
EXAMPLE set clock_list [ttv_GetClockList $fig]


ttv_GetTimingSignalProperty

Property *ttv_GetTimingSignalProperty(TimingSignal *fig, char *code)

Returns a property of a timing signal. A Property is a polymorphic type, the returned type depends on the property code.

fig Pointer on the timing signal
code Property code; for available property codes, see the TimingSignal object section


ttv_GetLatchAccess

double ttv_GetLatchAccess(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command, char *minmax)

Returns a latch's intrinsic access delay, from command to latch output

tvf Pointer on a timing figure
latch Pointer on the latch to consider
dir Indicates that the access delay is given for the falling or rising edge of the latch node. Use both to be able to choose between min and max values.
command Associated command node; if NULL, all commands will be considered
minmax min or max; defines if min or max value is to be chosen when there are multiple choices.
EXAMPLE set intrinsic [ttv_GetLatchAccess $fig $lt1 falling $com1 min]


ttv_GetLatchSetup

double ttv_GetLatchSetup(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command)

Returns a latch's intrinsic setup constraint, from latch input to command

tvf Pointer on a timing figure
latch Pointer on the latch to consider
dir Indicates that the setup constraint is given for the falling or rising edge of the latch node. Use both to be able to choose between min and max values.
command Associated command node; if NULL, all commands will be considered
minmax min or max; defines if min or max value is to be chosen when there are multiple choices.
EXAMPLE set intrinsic [ttv_GetLatchSetup $fig $lt1 falling $com1]


ttv_GetLatchHold

double ttv_GetLatchHold(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command)

Returns a latch's intrinsic hold constraint, from latch input to command

tvf Pointer on a timing figure
latch Pointer on the latch to consider
dir Indicates that the hold constraint is given for the falling or rising edge of the latch node. Use both to be able to choose between min and max values.
command Associated command node; if NULL, all commands will be considered
minmax min or max; defines if min or max value is to be chosen when there are multiple choices.
EXAMPLE set intrinsic [ttv_GetLatchHold $fig $lt1 falling $com1]


ttv_GetSignalCapaList

DoubleList *ttv_GetSignalCapaList(TimingSignal *tvs)

Returns the list of capacitance values (in Farads) for a given timing signal. Values are given in the order: nominal, min and max for rise transition then nominal, min and max for fall transition.

tvs Pointer on the timing signal to consider
EXAMPLE set capa_list [ttv_GetSignalCapaList]


ttv_GetFullSignalNetName

char *ttv_GetFullSignalNetName(TimingFigure *tvf, TimingSignal *tvs)

Returns the full hierarchical net name of a given timing signal. Returned name is to be pasted for further use. Up to 16 full names are kept in order to reduce memory consumption.

tvf Pointer on a timing figure
tvs Pointer on the timing signal to consider
EXAMPLE set name [ttv_GetFullSignalNetName $fig $sig]


ttv_GetFullSignalName

char *ttv_GetFullSignalName(TimingFigure *tvf, TimingSignal *tvs)

Returns the full hierarchical name of a given timing signal. Returned name is to be pasted for further use. Up to 16 full names are kept in order to reduce memory consumption.

tvf Pointer on a timing figure
tvs Pointer on the timing signal to consider
EXAMPLE set name [ttv_GetFullSignalName $fig $sig]


5. 7. 8. TimingEvent Access

ttv_GetTimingEventProperty

Property *ttv_GetTimingEventProperty(TimingEvent *ev, char *code)

Returns a property of a timing event. A Property is a polymorphic type, the returned type depends on the property code.

ev Pointer on the timing event
code Property code; for available property codes, see the TimingEvent object section


ttv_GetLatchCommands

TimingEventList *ttv_GetLatchCommands(TimingSignal *tvs)

Returns the list of commands enabling writing in a given latch

ts Pointer on the latch to consider
EXAMPLE set com_list [ttv_GetLatchCommands $lt1]


ttv_GetLatchEventCommands

TimingEventList *ttv_GetLatchEventCommands(TimingSignal *tvs, char dir)

Returns the list of commands enabling writing of a specific transition in a given latch

tvs Pointer on the timing signal to consider
dir u or d; transition to be written
EXAMPLE set com_list [ttv_GetLatchCommands $lt1 u]


5. 8. Static Timing Analysis

5. 8. 1. Stability Back-Annotation

stb

StabilityFigure *stb(TimingFigure *tf)

Launches the static timing analysis, based upon SDC and INF constraints. The analysis can be tuned with configuration variables through avt_Config (). The function returns a stability figure, which is a mapping of stabilty information (switching windows) on the timing figure.

tf Pointer on the timing figure the analysis is to be run on


stb_LoadSwitchingWindows

StabilityFigure *stb_LoadSwitchingWindows(TimingFigure *tvf, char *filename)

Reads an STO file (.sto extension), result of a static timing analysis (stb funcion). Back-annotates (maps) a timing figure with stability information. Warning: it is not yet compatible with false paths configuration.

tvf Pointer on the timing figure to back-annotate
filename Name of the STO file to load


stb_FreeStabilityFigure

void stb_FreeStabilityFigure(StabilityFigure *sf)

Deletes a stability figure from memory

sf Pointer on the stability figure to be freed


stb_GetStabilityFigureProperty

Property *stb_GetStabilityFigureProperty(StabilityFigure *sf, char *property)

Returns a property of a stability figure. A Property is a polymorphic type, the returned type depends on the property code.

sf Pointer on the stability figure.
code Property code; for available property codes, see the StabilityFigure object section.


5. 8. 2. Violations

stb_DisplayErrorList

void stb_DisplayErrorList(FILE *f, StabilityFigure *stbfig, double margin, int nberror)

Prints a report of signals presenting timing violations (setup and hold)

f File where to save the report, stdout for standard output
stbfig Pointer on a stability figure
margin Value below which a setup/hold slack is reported as a violation. For example, if the margin is 100ps (100e-12 second), a signal with a setup or a hold slack below 100ps will be reported as a violation.
nberror Maximum number of reported violations


stb_GetErrorList

TimingSignalList *stb_GetErrorList(StabilityFigure *sf, double margin, int nberror)

Returns a sorted list of the signals having the worst violations.

sf Pointer on a stability figure
margin Value below which a setup/hold slack is reported as a violation. For example, if the margin is 100ps (100e-12 second), a signal with a setup or a hold slack below 100ps will be reported as a violation.
nberror Maximum number of reported violations


stb_GetSetupSlack

double stb_GetSetupSlack(StabilityFigure *fig, char *signame, char dir)

Returns the setup slack value of a given signal. If there is no setup slack value, -1 is returned.

fig Pointer on a stability figure
signame Name of the signal to consider
dir u, d or ?; reports slack value for a given transition


stb_GetHoldSlack

double stb_GetHoldSlack(StabilityFigure *fig, char *signame, char dir)

Returns the hold slack value of a given signal. If there is no hold slack value, -1 is returned.

fig Pointer on a stability figure
signame Name of the signal to consider
dir u, d or ?; reports slack value for a given transition


stb_DisplaySlackReport

stb_DisplaySlackReport <FILE *file> <StabilityFigure *stbfig> [-from <nodename>] [-to <nodename>] [-thru_node <nodename>] [-dir <dir>] [-nbslacks <nb>] [-margin <marginval>] [-noprechlag] [common-options]
or
stb_DisplaySlackReport <FILE *file> -slacks <stabilityslackslist> [-nbslacks <nb>] [common-options]

common-options:
[-setuponly] [-holdonly] [-simple] [-summary] [-displaythru] [-displaymargins]

Obsolete but still working:
stb_DisplaySlackReport(FILE *f, StabilityFigure *stbfig, char *start, char *end, char *dir, int number, char *mode, TimeValue margin)

Retreives and prints or only prints a slack report.

file File where to save the report, stdout for standard output.
stbfig Stability figure.
-from <nodename> DATA VALID start point (clock or input pin).
-to <nodename> DATA VALID end point (latch, precharge, output or directive node).
-thru_node nodename DATA VALID access node when the DATA VALID is an acces path.
-dir <dir> Start and end points transitions, u, d, ?. z or / can be added to the usual direction to respectively display only HZ slacks or only non-HZ slacks. Default is ??.
-nbslacks <nb> Maximum number of reported setup and hold slacks. Default is unlimited (<nb><=0).
-margin <marginval> Value below which a setup/hold slack is reported as a violation. For example, if the margin is 100ps (100e-12 second), a signal with a setup or a hold slack below 100ps will be reported as a violation. Default is 0.
-noprechlag Removes slacks whose DATA VALID passes thru transparent precharges when DATA VALID is an access.
common-options:
-setuponly Displays only setup slacks.
-holdonly Displays only hold slacks.
-summary Displays only the summary of the slacks.
-displaythru Displays access node in the summary if the DATA VALID path is an access.
-displaymargins Displays the path margins and the intrinsic margin in the summary.
-simple Displays less detailed slack details by hiding period change operations.
EXAMPLE To display an already obtained StabilitySlack list:
stb_DisplaySlackReport $myfile -slacks $myslacklist -displaythru -simple -summary -displaymargins
To display a slack report:
stb_DisplaySlackReport $myfile $sf -margin 100e-9 -from myclock -to mylatch -dir ?f -simple
obsolete options:
mode Selects the displayed slack types: setup, hold, all, margins, summary setup, summary hold or summary all. all means setup and hold. margins will show in the summary the internal margins used for the slack computation. thru shows in the summary the latch through which the data arrives as well as the latch command which enables this data.


stb_DisplayCoverage

stb_DisplayCoverage <FILE *file> <StabilityFigure *stbfig> [-detail]


Prints a coverage report concerning all the signals checked or not checked in the design.

file File where to save the report, stdout for standard output.
stbfig Stability figure.
-detail Output the list of the signals not checked.
EXAMPLE stb_DisplayCoverage stdout $sfig -detail


stb_GetSlacks

<StabilitySlackList *> stb_GetSlacks <StabilityFigure *stbfig> [-from <nodename>] [-to <nodename>] [-thru_node <nodename>] [-dir <dir>] [-nbslacks <nb>] [-margin <marginval>] [-noprechlag] [-setuponly] [-holdonly]

Obsolete but still working:
StabilitySlackList *stb_GetSlacks(StabilityFigure *stbfig, char *start, char *end, char *dir, int number, char *mode, TimeValue margin)


Returns a list of stability slack objects.

stbfig Stability figure.
-from <nodename> DATA VALID start point (clock or input pin).
-to <nodename> DATA VALID end point (latch, precharge, output or directive node).
-thru_node nodename DATA VALID access node when the DATA VALID is an acces path.
-dir <dir> Start and end points transitions, u, d, ?. z or / can be added to the usual direction to respectively display only HZ slacks or only non-HZ slacks. Default is ??.
-nbslacks <nb> Maximum number of retreived setup and hold slacks. Default is unlimited (<nb><=0).
-margin <marginval> Value below which a setup/hold slack is reported as a violation. For example, if the margin is 100ps (100e-12 second), a signal with a setup or a hold slack below 100ps will be reported as a violation. Default is 0.
-noprechlag Removes slacks whose DATA VALID passes thru transparent precharges when DATA VALID is an access.
-setuponly Retreives only setup slacks.
-holdonly Retreives only hold slacks.
EXAMPLE set sl [stb_GetSlacks $sf -from ck -to end* -setuponly -nbslacks 10]
Obsolete:
set sl [stb_GetSlacks $sf * * ?? 0 setup 100e-9]


stb_FreeSlackList

void stb_FreeSlackList(StabilitySlackList *cl)

Frees a list of stability slack objects.

cl slack object list


stb_GetSlackProperty

Property *stb_GetSlackProperty(StabilitySlack *so, char *property)

Returns a property of a slack object. A Property is a polymorphic type, the returned type depends on the property code.

so Pointer on the slack object
code Property code; for available property codes, see the StabilitySlack object section


stb_SortSlacks

<StabilitySlackList *> stb_SortSlacks [<StabilitySlackList *> l1] [<StabilitySlackList *> l2] ...

Concatenates the given slack lists and sorts the resulting list from the worst slack to the best.

l1, l2, ... StabilitySlack list to merge and sort.
EXAMPLE set result [stb_SortSlacks $slacklist1 $slacklist2 $slacklist3]


stb_ComputeSlacks

<StabilitySlackList *> stb_ComputeSlacks <StabilityFigure *sf> <char *datavalid> <operation> <char *datarequired> [options]
or
<StabilitySlackList *> stb_ComputeSlacks <TimingPathList *datavalid> <operation> <TimingPathList *datarequired> [options]
options:
[-nextperiod] [-margin <val>] [-nosync]

Computes slacks for a combination of data valid path list and required path list.
The data valid path and data required path can be given as a specification or directly as a path list.
A specification is a string containing the arguments to be given to the ttv_ProbeDelay API without mentioning the Timing Figure argument which is deduced from the Stability Figure. If "-min" or "-max" is not specified in a specification, "-max" for data valid and "-min" for data required is assumed for before operation and the opposite for after operation.

sf Stability figure.
datavalid DATA VALID specification or path list.
datarequired DATA REQUIRED specification or path list.
operation Operation to do between the two lists. Value can be before or after. before corresponds to a setup and after to a hold.
options:
-margin <val> Adds an additionnal margin to the calculus. The higher the margin the worse is the slack values. If a negative value is given and the datariquired path ends on the command of the dala valid path end latch, the UTD latch to command intrinsic margin is will be used.
-nextperiod If the data required path and the data valid path comes from the same clock edge, tells the API that the data required is generated by the next cycle.
-nosync Disables all kind of guessed data required period changes done automatically by the API hence the given paths are compared directly.
EXAMPLE By using the specifications:
set slacks [stb_ComputeSlacks $sf "{-con=ck* -access-latch=convlat convsig}" before "{ck1 convck convsig} -dir ?d" -margin 1ps]
By using the path lists:
set slacks [stb_ComputeSlacks $data_paths_min after $clock_path_max -margin 2ps -nextperiod]


stb_FindLagPaths

stb_FindLagPaths <file> <slacklist> [-margin <value>] [-lagmargin <value>] [-maxdepth <number>] [-closingpath]

Reports the lag paths for each given slack. This API can help find possible false paths generating data lag hence creating wrong negative slacks.

file File where to save the report, stdout for standard output.
slacklist List of slacks to analyse.
-margin <value> Only analyse slacks whose value is lower than or equal to value. Default is 1s (i.e. all given slacks).
-lagmargin <value> Only analyse slacks where the data lag value is greater than value. Default is 0.
-maxdepth <number> Stop backtracking after a maximum of number paths for each slack. Default is 3.
-closingpath Displays the closing clock path in case of huge lags where the latch closing is responsible for the lag maximum value.
EXAMPLE stb_FindLagPaths stdout $myslacks -lagmargin 100e-12


stb_DriveReport

void stb_DriveReport(StabilityFigure *stbfig, char *filename)

Drives a report file corresponding to a stability figure

stbfig Stability figure
filename File where to save the report


5. 9. Statistical Runs

5. 9. 1. MonteCarlo Runs

avt_SetMainSeed

void avt_SetMainSeed(int value)

Sets the main seed to use when evaluating random mathematical function with monte-carlo runs enabled. The main seed is used for anything but model parameters in a ".mcparam" spice section concerning transistor model alterations. This function goal is to enable the reproducibility of past results.

value seed value.
EXAMPLE avt_SetMainSeed 123456


avt_GetMainSeed

int avt_GetMainSeed()

Returns the main seed used to evaluate random mathematical function with monte-carlo runs enabled. The main seed is used for anything but model parameters in a ".mcparam" spice section concerning transistor model alterations. This function goal is to enable the reproducibility of past results.
This function must be called after HiTas execution.

EXAMPLE puts [avt_GetMainSeed]


avt_SetGlobalSeed

void avt_SetGlobalSeed(int value)

Sets the seed to use when evaluating random mathematical function with monte-carlo runs enabled. Global seed is used only for parameters in a ".mcparam" spice section concerning transistor model alterations. This function goal is to enable the reproducibility of past results.

value seed value.
EXAMPLE avt_SetGlobalSeed 654321


avt_GetGlobalSeed

int avt_GetGlobalSeed()

Returns the main seed used to evaluate random mathematical function with monte-carlo runs enabled. Global seed is used only for parameters in a ".mcparam" spice section concerning transistor model alterations. This function goal is to enable the reproducibility of past results.
This function must be called after HiTas execution.

EXAMPLE puts [avt_GetGlobalSeed]


runStatHiTas

runStatHiTas <numberofruns> [-slavescript <name>] [-jobscript <name>] [-datafile <name>] [-incremental | -override]


Initiates monte-carlo statistical timing runs through the call of several independent hitas (slave) runs.
This command creates a master process which will centralize all the different monte-carlo results.
The TCL variable ssta_MasterPath is available in the slave runs and indicates the directory where the master script is run.

numberofruns Scheduling description of the jobs define as <total number of runs>:<maximum number of parallel runs> to run. Or simply the number of run desired if no parallelism is wanted.
-jobscript <name> Script file name. This script is called to spawn each slave runs. By default the slave scripts run on the same machine in separate sub-directories.
-slavescript <name> The slave monte-carlo script name which run a single monte carlo job. This argument can be used if the slave script is not the one using the API runStatHiTas. By default it's the current script.
-datafile <name> Result file name. If the file already exists, a number is added to the filename if neither -incremental nor -override are specified. By default the name is set to "ssta_data.log".
-incremental Force all the results to be added at the end of the data file preserving previous results.
-override Overrides existing datafile.
EXAMPLE runStatHiTas 500:2 -slavescript slave-script.tcl -datafile monte-data.log
Runs 500 slave-script.tcl (2 max in parallel) with the result file monte-data.log.


avt_McPostData

void avt_McPostData(char *msg)

Used by a slave monte-carlo run, tells the master to write the given message (result) to the result file.
This function exits the slave script.

msg Message to send.
EXAMPLE avt_McPostData [list $myworstsetupslack $myworstholdslack]


avt_McInfo

void avt_McInfo(char *msg)

Used by a slave monte-carlo run, tells the master to display/log the given message.
The message does not go to the result file.

msg Message to send.
EXAMPLE avt_McInfo "Running into STA stage"


5. 9. 2. MonteCarlo Analysis

ssta_ToolBox

ssta_ToolBox [-parsedatafile] [-getfield <filednum>] [-getdistrib] [options]
options:
[-values <valuelist>] [-filename <fname>]
[-parsefunction <funcname>] [-fixedrange <time>] [-nbrange <number>]


Handles various operations related to statistical timing analysis results.


-parsedatafile Reads a SSTA data file and returns its content as a list (one entry per SSTA run) of 2 element lists with the SSTA run number and the line corresponding to the SSTA run from the file: {{<ssta run number> <file line>} {...} ...}.
-getdistrib Returns a distribution from the list of values. The distribution is a list of list with 5 elements: {{<low range value> <high range value> <number of occurence> <cumulative number of occurence> <cumulative % of occurence>} {...} ...}.
-getfield <filednum> Reads and returns the <filednum>'th field of each line of a file: {<line1 field value> <line2 field value> ...}.
options:
-values <valuelist> List of values to use.
Works with -getdistrib.
-filename <fname> Filename of the file to read from or to drive to.
Works with -getfield, -parsedatafile.
-parsefunction <funcname> Function name to run while parsing result file. Each line parsed is feed to the function as one argument which is a list with 2 values: {<ssta run number> <file line>}. When -parsefunction is used, the API returns nothing.
Works with -parsedatafile.
-nbrange <number> Specifies the number of range to use when building a distribution. The default value is 20.
Works with -getdistrib.
-fixedrange <time> Specifies a range length rather than a range number to build a distribution.
Works with -getdistrib.
EXAMPLE ssta_ToolBox -getdistrib -values {1 3 5 1 8}


ssta_PathReport

Usage 1: ssta_PathReport -senddata <path list> <methodname>
Usage 2: ssta_PathReport -display <ssta result file> <filedescriptor>


Sends a predefined monte-carlo result from a given path list to the master ssta script or drives a report from predefined sent data file.

Usage 1:
-senddata <path list> <methodname> Sends a predefined result extracted from the given <path list>. <path list> is standard path list obtained thru ttv_GetPaths for instance. Only one method (kind of results to output) exists for now called "simple".
Usage 2:
-display <ssta result file> <filedescriptor> Uses the predefined data writen into result file <ssta result file> to output a specific report concerning the path monte-carlo characteristics. <filedescriptor> if the result of a "fopen" command call in with the report will be written.
EXAMPLE ssta_ToolBox -senddata $mypathlist simple


ssta_SlackReport

Usage 1: ssta_SlackReport -senddata <stability figure> <methodname> Usage 2: ssta_SlackReport -display <ssta result file> <filedescriptor> Usage 3: ssta_SlackReport -plot <ssta result file> <output filename>

Sends a predefined monte-carlo result from a given path list to the master ssta script or drives a report from predefined sent data file.

Usage 1:
-senddata <stability figure> <methodname> Sends a predefined result extracted from the given <stability figure>. Only one method (kind of results to output) exists for now called "simple".
Usage 2:
-display <ssta result file> <filedescriptor> Uses the predefined data writen into result file <ssta result file> to output a specific report concerning the path monte-carlo characteristics. <filedescriptor> if the result of a "fopen" command call in with the report will be written.
Usage 3:
-plot <ssta result file> <output filename> Uses the predefined data writen into result file <ssta result file> to output a gnuplot view of the distributions of worst setup and hold slacks. The gnuplot file output are prefixed with <output filename>.
EXAMPLE ssta_ToolBox -senddata $stbfig simple
or
ssta_SlackReport -plot "ssta_data.log" "distrib"


5. 10. Timing Abstraction

5. 10. 1. Blackbox Modelling

tma_GetConnectorAxis

DoubleList *tma_GetConnectorAxis(TimingFigure *tvf, char *type, char *name)

Returns the defined connector axis set for a connector/signal.
If no axis have been defined for the signal or the signal does not exist, the returned list contains only one element with value -1.
There is an exeption if the signal is an internal clock and no axis is defined for it. In this case, the slope max of the clock is returned.

fig Pointer on the timing figure.
type Type of axis: slope or capacitance
name Name of the signal.
EXAMPLE set slopeaxis [tma_GetConnectorAxis $fig slope ck]


tmabs

TimingFigure *tmabs <TimingFigure *fig> <BehavioralFigure *befig> <clocks> <inputs> <outputs> [flags]
or
TimingFigure *tmabs <TimingFigure *fig> \[-behaviour <bef>] \[-clocks <clocklist>] \[-inputs <inputlist>]
\[-outputs <outputlist>] \[-internal <internallist>] [flags]


Generates a characterization from a timing database and associates functionality if provided.
It returns a blackbox timing figure with constraints at the interface of the circuit.
The constraints generated can be filter by input, output and/or clock connectors.
Generated clocks are handled and simulations can also be used thru CPE to get spice precise results for the circuit characterisation.

fig Pointer on the timing figure to be blackboxed.
befig Pointer on the behavioral figure to associate with the blackbox. Set to NULL if no info is available.
clocks list of clock names to consider in the timing figure.
inputs list of input names to consider in the timing figure.
outputs list of output names to consider in the timing figure.
flags:
-simulate <list> Indicates what to simulate. <list> is a list of path description. A path description is a list of 1 or 2 pin names. The list looks like {pin_name related_pin_name} following .lib convention. if the related_pin_name is omited it is considered to be *.
-maxsim <number> Maximum number of parallel simulations to launch to speed up characterisations done with simulations.
-enablecache Enables the use of a cache file with already simulated path delays to continue a previously stopped run.
-scalevalues <list> Gives a list of factors to use to computed default slope and capacitance axis in case they are not specified in the information file.
-verbose Enables verbose mode.
-detailfile <filename> Drives in the file <filename> the detail of the paths used for each characterisation.
-minonly Computes only min delays.
-maxonly Computes only max delays.
-setuponly Computes only setups.
-holdonly Computes only holds.
-dumpdtx Drive the computed blackbox at the end of the process.
-exitonerror Exit on any error. Most likely simulation errors.
-ignoremargins Dot not add defined path margins to the computed/simulated delays.
-detectfalsepath Run a falsepath detection prior to begin the blackbox creation.
-addpins <pinlist> Add non existing connectors into the blackbox. Direction of pins can be defined in the list. eg. input0 input1 i output o. See ttv_AddConnector for available pin directions.
EXAMPLE set bbox [tmabs $tf NULL * * * -maxsim 4 -simulate * -verbose -enablecache]


tma_SetMaxCapacitance

void tma_SetMaxCapacitance(TimingFigure *bbox, char *name, CapaValue value)

Sets the max capacitance to report in .lib file.

bbox Blackbox timing figure.
name Name of the connector (can be a regular expression).
value Capacitance value
EXAMPLE set slopeaxis [tma_GetConnectorAxis $fig slope ck]


lib_DriveFile

void lib_DriveFile(List *fig_list, List *befig_list, char *file, char *delaytype)

Saves a list of blackboxed timing figures on disk, in a single .lib file

fig_list List of timing figures to print in the .lib file. For a single timing figure, use a list of one element (example given below)
befig_list List of behavioral figures to associate with the timing figures. There should be a one-to-one correspondence between the elements in befig_list and fig_list, and there should be the same number of elements if the two lists. Use NULL to fill the gaps in befig_list.
file Name of the .lib file to create
delaytype Defines if the cell_rise and cell_fall timing groups will have only maximum delays (max), minimum delays (min) or both (both).
EXAMPLE lib_DriveFile [list $bbox] NULL cpu.lib max


lib_DriveHeader

void lib_DriveHeader(TimingFigure *fig, FILE *file, char *libname)

Prints a .lib header in a file, regarding to the information present in the given timing figure

fig Pointer on the timing figure to consider
file Pointer on the file where to print the .lib header
libname Name to be put in the library statement of the .lib header


lib_CanonicPinName

char *lib_CanonicPinName(char *name)

Adapts pin names according to the .lib syntax (typically bus delimiter are replaced by _)

name Pin's name


5. 10. 2. Greybox Modelling

ttv_GetConstraints

TimingConstraintList *ttv_GetConstraints(TimingFigure *tf, char *inputconnector, char *towhat)

Computes the constraints at the interface of a timing figure. Returns a list of TimingConstraint.

tf Timing figure
inputconnector Connector whose constraints must be computed
towhat Ending path node types, can be a mix of latch, precharge, clockgating, precharge or all
EXAMPLE set cl [ttv_GetConstraints $fig * all


ttv_FreeConstraints

ttv_FreeConstraints <allobj>

Frees the constraints.

allobj Constraint objects to free
EXAMPLE ttv_FreeConstraints $myconstraints


ttv_GetTimingConstraintProperty

Property *ttv_GetTimingConstraintProperty(TimingConstraint *co, char *property)

Returns a property of a timing constraint. A Property is a polymorphic type, the returned type depends on the property code.

co Pointer on the timing constraint
property Property code; for available property codes, see the TimingConstraint object section


5. 11. Crosstalk DB Browsing

5. 11. 1. Building statistics

ctk_LoadAggressionFile

void ctk_LoadAggressionFile(StabilityFigure *stbfig)

Loads the crosstalk database (generated with stb in crosstalk mode), and back-annotates a stability figure

stbfig Pointer on the stability figure to back-annotate


ctk_LoadCrosstalkResults

ctk_LoadCrosstalkResults <timingfigure>

Puts the UTD in the same state as after the crosstalk analysis was done. The corresponding StabilityFigure is returned. Functions 'ttv_LoadCrosstalkFile', 'stb_LoadSwitchingWindows' then 'ctk_LoadAggressionFile' are called to do this action.

timingfigure TimingFigure to put into post-crosstalk analysis state
EXAMPLE set stabfig [ctk_LoadCrosstalkResults $myUTD].


ctk_DriveStatCtk

void ctk_DriveStatCtk(StabilityFigure *stbfig)

Drives a .ctk crosstalk analysis report file

stbfig Pointer on the stability figure associated


ctk_BuildCtkStat

void ctk_BuildCtkStat(StabilityFigure *stbfig)

Builds the internal crosstalk table of statistics for events and delays

stbfig Pointer on the stability figure associated


5. 11. 2. Browsing statistics

ctk_GetStatNodeProperty

Property *ctk_GetStatNodeProperty(StabilityFigure *stbfig, int index, char *property)

Returns a property of a crosstalk node. A Property is a polymorphic type, the returned type depends on the property code.

stbfig Pointer on a stability figure
index Number between 1 and the value returned by ctk_GetNumberOfCtkStatNode
property Property code; for available property codes, see the StatNode object section


ctk_GetNumberOfCtkStatNode

int ctk_GetNumberOfCtkStatNode(StabilityFigure *stbfig)

Returns the number crosstalk node statistics

stbfig Pointer on a stability figure


ctk_GetCtkStatNodeFromEvent

int ctk_GetCtkStatNodeFromEvent(StabilityFigure *stbfig, TimingEvent *event)

Returns the crosstalk statistic index of a given timing event

stbfig Pointer on a stability figure
event Pointer on a timing event


ctk_GetNumberOfCtkStatLine

int ctk_GetNumberOfCtkStatLine(StabilityFigure *stbfig)

Returns the number crosstalk delay statistics

stbfig Pointer on a stability figure


ctk_GetStatLineProperty

Property *ctk_GetStatLineProperty(StabilityFigure *stbfig, int index, char *property)

Returns a property of a crosstalk delay line. A Property is a polymorphic type, the returned type depends on the property code.

stbfig Pointer on a stability figure
index Number between 1 and the value returned by ctk_GetNumberOfCtkStatLine
property Property code; for available property codes, see the StatLine object section


5. 11. 3. Sorting statistics

ctk_SortCtkStatLine

void ctk_SortCtkStatLine(StabilityFigure *stbfig, char *criterion)

Sorts crosstalk delay statistics according to various criteria

stbfig Pointer on a stability figure
criterion ABSOLUTE_DELAY, ABSOLUTE_MAX_DELAY, ABSOLUTE_MIN_DELAY, RELATIVE_DELAY, RELATIVE_MAX_DELAY, RELATIVE_MIN_DELAY, ABSOLUTE_SLOPE, ABSOLUTE_MAX_SLOPE, ABSOLUTE_MIN_SLOPE, RELATIVE_SLOPE, RELATIVE_MAX_SLOPE or RELATIVE_MIN_SLOPE.


5. 11. 4. Getting aggressors

ctk_GetAggressorList

AggressorList *ctk_GetAggressorList(StabilityFigure *stbfig, TimingEvent *event)

Returns the list of all the aggressors of an event. This list must be freed with the ctk_FreeAggressorList command.

stbfig Pointer on a stability figure
event Pointer on a timing event


ctk_GetAggressorProperty

Property *ctk_GetAggressorProperty(Aggressor *aggressor, char *property)

Returns a property of a aggressor node. A Property is a polymorphic type, the returned type depends on the property code.

aggressor Pointer on a aggressor
property Property code; for available property codes, see the Aggressor object section


ctk_FreeAggressorList

void ctk_FreeAggressorList(AggressorList *list)

Frees the list given by ctk_GetAggressorList

list Pointer on the aggressor list to be freed


5. 12. CPE (path simulation)

5. 12. 1. Pattern Generation

cpe_DefineCorrelation

cpe_DefineCorrelation <net1> <relation> <net2>


Defines the relation between 2 signals to help computing propagation condition for simulations.

net1 First net name.
relation Value '=' means net1=net2
Value '!=' means net1=not(net2)
net2 Second net name.
EXAMPLE cpe_DefineCorrelation clk != clkb