1 #include "avt_API_types.h"
5 #define TTV_FLIPFLOP 'f'
6 #define TTV_BREAKPOINT 'b'
7 #define TTV_COMMAND 'q'
8 #define TTV_PRECHARGE 'r'
10 #define TTV_CONNECTOR 'c'
11 #define TTV_SIGNAL 's'
12 #define TTV_INSTANCE_CONNECTOR 'n'
14 #define TTV_TIMING 0x101010
15 #define TTV_SETUP 0x101011
16 #define TTV_HOLD 0x101012
17 #define TTV_ACCESS 0x101013
20 void ttv_API_AtLoad_Initialize();
22 void ttv_SetBaseNetlist(Netlist
*lf
);
25 MAN ttv_CreateTimingFigure
28 Initiates the creation of a timing figure. Computes the connectors capacitances assuming the netlist provided is a flat-transistor one.
30 lf % Netlist the timing figure is based on.
31 EXAMPLE % {ttv_CreateTimingFigure $netlist}
34 void ttv_CreateTimingFigure(Netlist
*lf
);
37 MAN ttv_EditTimingFigure
40 Edit an existing timing timing figure.
41 {ttv_FinishTimingFigure} must be called after the modifications to make the timing figure usable.
43 tvf % TimingFigure to edit.
44 EXAMPLE % {ttv_EditTimingFigure $fig}
46 void ttv_EditTimingFigure(TimingFigure
*tvf
);
50 CATEG gns+tcl+generation
52 Creates a connector timing signal.
54 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
55 dir % Direction of the connector: i=in, o=out, t=tristate, z=hz, x=unknown, b=inout (output reused internaly)
56 EXAMPLE % {set con [ttv_AddCommand input i]}
58 TimingSignal
*ttv_AddConnector(char *name
, char dir
);
62 CATEG gns+tcl+generation
64 Creates a command timing signal.
66 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
67 EXAMPLE % {set com [ttv_AddCommand com0]}
69 TimingSignal
*ttv_AddCommand(char *name
);
73 CATEG gns+tcl+generation
75 Creates a latch timing signal.
77 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
78 EXAMPLE % {set latch [ttv_AddLatch lt0]}
80 TimingSignal
*ttv_AddLatch(char *name
);
81 TimingSignal
*ttv_AddFlipFlop(char *name
);
85 CATEG gns+tcl+generation
87 Creates a precharge timing signal.
89 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
91 TimingSignal
*ttv_AddPrecharge(char *name
);
96 CATEG gns+tcl+generation
98 Creates a breakpoint timing signal.
100 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
102 TimingSignal
*ttv_AddBreakpoint(char *name
);
107 CATEG gns+tcl+generation
109 Creates a data delay line.
111 input % Delay line start point
112 output % Delay line end point
113 max_slope % Maximum slope associated with delay line
114 min_slope % Minimum slope associated with delay line
115 max_delay % Maximum propagation delay associated with delay line
116 min_delay % Minimum propagation delay associated with delay line
117 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.
119 TimingLine
*ttv_AddTiming(char *input
, char *output
, double max_delay
, double max_slop
, double min_delay
, double min_slope
, char *dir
);
123 CATEG gns+tcl+generation
125 Creates a HZ data delay line.
127 input % Delay line start point
128 output % Delay line end point
129 max_slope % Maximum slope associated with delay line
130 max_delay % Maximum propagation delay associated with delay line
131 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.
133 TimingLine
*ttv_AddHZTiming(char *input
, char *output
, double max_delay
, double min_delay
, char *dir
);
138 CATEG gns+tcl+generation
140 Creates a setup line.
144 delay % Constraint associated with the setup line
145 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.
147 TimingLine
*ttv_AddSetup(char *input
, char *output
, double delay
, char *dir
);
152 CATEG gns+tcl+generation
154 Creates a data access delay line
156 input % Data access line start point
157 output % Data access line end point
158 max_slope % Maximum slope associated with delay line
159 min_slope % Minimum slope associated with delay line
160 max_delay % Maximum propagation delay associated with delay line
161 min_delay % Minimum propagation delay associated with delay line
162 dir % Transitions on start and end timing signals: {uu}, {ud}, {dd} or {du}.
164 TimingLine
*ttv_AddAccess(char *input
, char *output
, double max_delay
, double max_slop
, double min_delay
, double min_slope
, char *dir
);
168 CATEG gns+tcl+generation
170 Creates a HZ data access line.
172 input % Delay line start point
173 output % Delay line end point
174 max_slope % Maximum slope associated with delay line
175 max_delay % Maximum propagation delay associated with delay line
176 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.
178 TimingLine
*ttv_AddHZAccess(char *input
, char *output
, double max_delay
, double min_delay
, char *dir
);
182 CATEG gns+tcl+generation
184 Creates a hold constraint line between a data pin and a clock pin.
188 delay % Nominal constraint value associated with the line
189 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.
191 TimingLine
*ttv_AddHold(char *input
, char *output
, double delay
, char *dir
);
194 MAN ttv_SetLineCommand
195 CATEG gns+tcl+generation
197 Associates commands to a line. The command is the signal that enables reading or writing in a latch point.
199 max_command % Command generating the maximum delay
200 min_command % Command generating the minimum delay
201 dir % First character is the edge of the max command and the second of the min command.
204 void ttv_SetLineCommand(TimingLine
*tl
, char *max_command
, char *min_command
, char *dir
);
208 CATEG gns+tcl+generation
210 Associates a model name to a line.
212 tl % Timing Line to set the model name
213 modelname % name of the model to associate.
214 where % value to associate model to: "delay max", "delay min", "slope max" or "slope min".
217 void ttv_SetLineModel(TimingLine
*tl
, char *modelname
, char *where
);
220 MAN ttv_FinishTimingFigure
223 Returns the finished timing figure currently in creation. No more modification will be
224 permitted on the timing figure after this step.
227 TimingFigure
*ttv_FinishTimingFigure();
230 MAN ttv_DriveTimingFigure
233 Drives a timing figure on disk
235 tvf % Figure to be driven
236 filename % Full filename
237 format % File format, {dtx} or {ttx}
240 void ttv_DriveTimingFigure(TimingFigure
*tvf
, char *filename
, char *format
);
242 // fonction pour la creation libre de ttv
243 TimingSignal
*ttv_SetNodeSubtype(char *node
, char subtype
);
244 TimingSignal
*ttv_GetNode(char *node
, char *signal
);
245 TimingSignal
*ttv_AddCustomNode(char *node
, char *signal
, char type
, char subtype
);
246 TimingLine
*ttv_AddCustomLine(TimingSignal
*input
, TimingSignal
*output
, double max_delay
, double max_slop
, double min_delay
, double min_slope
, char *dir
, int type
);
253 Creates a timing figure for the current instance model using the timing figure created for the sub-instances' models. The new timing figure is flat. The sub-instances' models without a timing figure associated will be disregarded.
255 void ttv_BuildTiming();
257 void ttv_API_Action_Initialize();
258 void ttv_API_Action_Terminate();
259 void ttv_API_TopLevel(long list
);
263 MAN ttv_TasBuiltTiming
266 Creates a timing figure for the current instance model using HiTas. {lf} should be a transistor level netlist with or without RC, obtained using the GNS API. This fonction is usefull for pure digital models whose timing can be computed without care for analog behaviours.
268 void ttv_TasBuiltTiming(Netlist
*lf
);
272 MAN ttv_SetFunctionsFile
275 Allows the user to specify the file in which the functions are to be found.
277 void ttv_SetFunctionsFile (char *functions_file
);
280 void ttv_Config(double value
, double out_capa
);
283 MAN ttv_Associate_Model
286 associate a delay computation method to a timing line. When the {line} delay will need to be recomputed, {function call} will be executed.
288 void ttv_Associate_Model(TimingLine
*tvl
, void *func
);
291 MAN ttv_SetOutputSwing
294 defines the swing of a signal to use when using the function 'ttv_Associate_Model'.
296 void ttv_SetOutputSwing(double low
, double high
);
299 MAN ttv_Associate_Sim
302 associate a simulation method to a timing line. When CALL_SIMULATION() will be called, {function call} will be executed.
304 void ttv_Associate_Sim(TimingLine
*tvl
, void *func
);
307 MAN ttv_Associate_Env
310 associate a simulation environment positioning method to a timing line. When CALL_SIMULATION_ENV() will be called, {function call} will be executed.
312 void ttv_Associate_Env(TimingLine
*tvl
, void *func
);
316 void ttv_Associate_Ctk_Env(TimingLine
*tvl
, void *func
);
322 indicates if the delay to be computed is a minimum transition delay.
323 Returns 1 if true, 0 otherwise.
331 indicates if the delay to be computed is a maximum transition delay.
332 returns 1 if true, 0 otherwise.
337 MAN ttv_UseInstanceMode
340 sets the ttv API to generate one timing figure per instance. The default behaviour is to create a timing model which will describe all the instances of the the same model.
342 void ttv_UseInstanceMode();
344 void ASSOCIATE_TIMING(void *func
);
350 MAN ttv_InitializeNewRun
353 Initializes the environment to enable the use of the TTV computing functions like {ttv_ComputeMaxPathDelay} or {ttv_LoadTimingFigure}. This function cleans up all the previously loaded timing figures.
355 void ttv_InitializeNewRun();
361 Cleans up all the timing figures loaded with {ttv_LoadTimingFigure}.
363 void ttv_TerminateRun();
366 MAN ttv_LoadTimingFigure
369 Reads a list of DTX timing figures from disk. The given {name} is the radical of the files. To use the timing computing functions, the figures on disk should look like {radical_voltage value_temperature value}. eg. for files like 'circuit_2.4_70', {ttv_LoadTimingFigure circuit} should be called. The last loaded timing figure is returned.
370 Returns NULL on failure.
372 TimingFigure
*ttv_LoadTimingFigure(char *name
);
375 MAN xxxxttv_LoadTimingPathFigure
378 Reads a list of TTX timing path figures from disk. The given {name} is the radical of the files. To use the timing computing functions, the figures on disk should look like {radical_voltage value_temperature value}. eg. for files like 'circuit_2.4_70', {ttv_LoadTimingPathFigure circuit} should be called. The last loaded timing figure is returned.
379 Returns NULL on failure.
381 TimingFigure
*ttv_LoadTimingPathFigure(char *name
);
384 MAN ttv_GetTimingFigure
387 <TimingPathList *> ttv_GetTimingFigure <name>
389 Obsolete but still working:\$
390 <TimingPathList *> ttv_GetTimingFigure <name> <temperature> <supply value>
392 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.
394 name % Timing figure's name
395 EXAMPLE % {set fig [ttv_GetTimingFigure my_design]}
397 TimingFigure
*ttv_GetTimingFigure(char *name
, float temp
, float alim
);
399 /*---------------------------------
400 MAN ttv_ComputeMaxPathDelay
403 Re-computes the delay of the maximum path from {start} to {end} with transitions {dir} on
404 {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}. {in_slope} is applied on {start} and {out_capa} is set on {end}. If {temp} and {alim} are negative or 0, the timing figure {figname} is used.
405 eg. ttv_ComputeMaxPathDelay(circuit, {reset[3]}, {internalreset}, {ud}, 200, 1e-15, 2.5, 70) returns the delay between {reset[3]} rising and {internalreset} falling with an input slope of 200ps and 1fF on {internalreset} when voltage is 2.5V and temperature 70C.
406 Returns 0 on failure.
408 double ttv_ComputeMaxPathDelay(char *figure
, char *start
, char *end
, char *dir
, double input_slope
, double output_capa
, double VDD
, double temperature
);
411 MAN ttv_ComputeMaxPathSlope
414 Re-computes the slope of the maximum path from {start} to {end} with transitions {dir} on {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}. {in_slope} is applied on {start} and {out_capa} is set on {end}. If {temp} and {alim} are negative or 0, the timing figure named {figname} will be used.
415 eg. ttv_ComputeMaxPathSlope(circuit, {reset[3]}, {internalreset}, {ud}, 200, 1e-15, 2.5, 70) returns the slope of {internalreset} for the maximum path between {reset[3]} rising and {internalreset} falling with input slope of 200ps on {reset[3]} and 1fF on {internalreset} when voltage is 2.5V and temperature 70C.
416 Returns 0 on failure.
418 double ttv_ComputeMaxPathSlope(char *figure
, char *start
, char *end
, char *dir
, double input_slope
, double output_capa
, double VDD
, double temperature
);
421 MAN ttv_ComputeMinPathDelay
424 Re-computes the delay of the minimum path from {start} to {end} with transitions {dir} on
425 {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}. {in_slope} is applied on {start} and {out_capa} is set on {end}. If {temp} and {alim} are negative or 0, the timing figure {figname} is used.
426 eg. ttv_ComputeMaxPathDelay(circuit, {reset[3]}, {internalreset}, {ud}, 200, 1e-15, 2.5, 70) returns the delay between {reset[3]} rising and {internalreset} falling with an input slope of 200ps and 1fF on {internalreset} when voltage is 2.5V and temperature 70C.
427 Returns 0 on failure.
429 double ttv_ComputeMinPathDelay(char *figure
, char *start
, char *end
, char *dir
, double input_slope
, double output_capa
, double VDD
, double temperature
);
432 MAN ttv_ComputeMinPathSlope
435 Returns 0 on failure.
436 Re-computes the slope of the minimum path from {start} to {end} with transitions {dir} on {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}. {in_slope} is applied on {start} and {out_capa} is set on {end}. If {temp} and {alim} are negative or 0, the timing figure named {figname} will be used.
437 eg. ttv_ComputeMaxPathSlope(circuit, {reset[3]}, {internalreset}, {ud}, 200, 1e-15, 2.5, 70) returns the slope of {internalreset} for the minimum path between {reset[3]} rising and {internalreset} falling with input slope of 200ps on {reset[3]} and 1fF on {internalreset} when voltage is 2.5V and temperature 70C.
439 double ttv_ComputeMinPathSlope(char *figure
, char *start
, char *end
, char *dir
, double input_slope
, double output_capa
, double VDD
, double temperature
);
442 MAN ttv_GetPathMaxDelay
445 Returns the maximum delay path from {start} to {end} with transitions {dir} on {start} and {end}, fromthe timing figure {figname}, with voltage {alim} and temperature {temp}.
446 eg. ttv_GetPathMaxDelay(circuit, {reset[3]}, {internalreset}, {ud}, 2.5, 70) returns the delay of the maximum delay path between {reset[3]} rising and {internalreset} falling when voltage is 2.5V and temperature 70C.
447 Returns 0 on failure.
449 double ttv_GetPathMaxDelay(char *figure
, char *start
, char *end
, char *dir
, double VDD
, double temperature
);
452 MAN ttv_GetPathMaxSlope
455 Returns the slope attached to the maximum path from {start} to {end} with transitions {dir} on {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}.
456 eg. ttv_GetPathMaxSlope(circuit, {reset[3]}, {internalreset}, {ud}, 2.5, 70) returns the slope of {internalreset} for the maximum delay path between {reset[3]} rising and {internalreset} falling when voltage is 2.5V and temperature 70C.
457 Returns 0 on failure.
459 double ttv_GetPathMaxSlope(char *figure
, char *start
, char *end
, char *dir
, double VDD
, double temperature
);
462 MAN ttv_GetPathMinDelay
465 Returns the minimum delay path from {start} to {end} with transitions {dir} on {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}.
466 eg. ttv_GetPathMinDelay(circuit, {reset[3]}, {internalreset}, {ud}, 2.5, 70) returns the delay of the minimum delay path between {reset[3]} rising and {internalreset} falling when voltage is 2.5V and temperature 70C.
467 Returns 0 on failure.
469 double ttv_GetPathMinDelay(char *figure
, char *start
, char *end
, char *dir
, double VDD
, double temperature
);
472 MAN ttv_GetPathMinSlope
475 Returns the slope attached to the minimum path from {start} to {end} with transitions {dir} on {start} and {end}, from the timing figure {figname}, with voltage {alim} and temperature {temp}.
476 eg. ttv_GetPathMinSlope(circuit, {reset[3]}, {internalreset}, {ud}, 2.5, 70) returns the slope of {internalreset} for the minimum delay path between {reset[3]} rising and {internalreset} falling when voltage is 2.5V and temperature 70C.
477 Returns 0 on failure.
479 double ttv_GetPathMinSlope(char *figure
, char *start
, char *end
, char *dir
, double VDD
, double temperature
);
481 /***********************************************************************************************/
482 /***********************************************************************************************/
484 /***********************************************************************************************/
485 /***********************************************************************************************/
488 MAN ttv_LoadSpecifiedTimingFigure
491 Reads a DTX timing figure from disk.
493 name % Timing figure's name. The name of the timing figure should be the same as its file name, without the {dtx} suffix.
494 EXAMPLE % {set fig [ttv_LoadSpecifiedTimingFigure "my_design"]}
496 TimingFigure
*ttv_LoadSpecifiedTimingFigure(char *name
);
500 MAN ttv_LoadSpecifiedTimingPathFigure
503 Reads a TTX timing path figure from disk.
505 name % Timing figure's name. The name of the timing figure should be the same as its file name, without the {ttx} suffix.
506 EXAMPLE % {set fig [ttv_LoadSpecifiedTimingPathFigure "my_design"]}
508 TimingFigure
*ttv_LoadSpecifiedTimingPathFigure(char *name
);
511 MAN ttv_LoadCrosstalkFile
514 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.
516 tvf % Pointer on the timing figure to annotate
517 EXAMPLE % {ttv_LoadCrosstalkFile $fig}
519 int ttv_LoadCrosstalkFile(TimingFigure
*tvf
);
522 MAN ttv_RecomputeDelays
525 Recomputes delays and slopes in a timing figure according to new input slopes and output capacitances.
527 tvf % Pointer on the timing figure
528 EXAMPLE % {ttv_RecomputeDelays $fig}
530 void ttv_RecomputeDelays(TimingFigure
*tvf
);
532 /***********************************************************************************************/
533 /***********************************************************************************************/
534 /* TimingFigure Properties */
535 /***********************************************************************************************/
536 /***********************************************************************************************/
537 Property
*ttv_GetTimingFigureProperty (TimingFigure
*fig
, char *code
);
539 MAN ttv_GetTimingFigureProperty
542 Returns a property of a timing figure. A Property is a polymorphic type, the returned type depends on the property code.
544 fig % Pointer on the timing figure
545 code % Property code; for available property codes, see the {TimingFigure} object section
548 TimingFigure
*ttv_GetTopTimingFigure(TimingFigure
*tvf
);
549 double ttv_GetTimingFigureTemperature(TimingFigure
*tf
);
550 double ttv_GetTimingFigureSupply(TimingFigure
*tf
);
551 double ttv_GetTimingFigureOutputCapacitance(TimingFigure
*tf
);
552 double ttv_GetTimingFigureInputSlope(TimingFigure
*tf
);
553 double ttv_GetTimingFigureLowThreshold(TimingFigure
*tf
);
554 double ttv_GetTimingFigureHighThreshold(TimingFigure
*tf
);
555 double ttv_GetTimingFigureThreshold(TimingFigure
*tf
);
556 char *ttv_GetTimingFigureTechno(TimingFigure
*tf
);
557 char *ttv_GetTimingFigureGenerationDate(TimingFigure
*tf
);
558 char *ttv_GetTimingFigureGenerationTime(TimingFigure
*tf
);
560 /***********************************************************************************************/
561 /***********************************************************************************************/
562 /* List * of TimingPath */
563 /***********************************************************************************************/
564 /***********************************************************************************************/
566 TimingPathList
*ttv_RemoveIncludedSmallerPath(TimingPathList
*lpl
, TimingPathList
*spl
);
567 TimingPathList
*ttv_GetMaxTimingPathFrom(TimingSignal
*start
, char dir
);
568 TimingPathList
*ttv_GetMaxTimingPathTo(TimingSignal
*end
, char dir
);
569 TimingPathList
*ttv_GetMaxTimingPath(TimingSignal
*start
,TimingSignal
*end
, char *dir
);
570 TimingPathList
*ttv_GetMinTimingPathFrom(TimingSignal
*start
, char dir
);
571 TimingPathList
*ttv_GetMinTimingPathTo(TimingSignal
*dest
, char dir
);
572 TimingPathList
*ttv_GetMinTimingPath(TimingSignal
*start
,TimingSignal
*end
, char *dir
);
573 TimingPathList
*ttv_GetCriticPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
, char *minmax
);
574 TimingPathList
*ttv_GetUnsortedCriticMaxPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
575 TimingPathList
*ttv_GetUnsortedCriticMinPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
576 TimingPathList
* ttv_GetCriticMaxAccessList(TimingFigure
*tf
, char *start
, char *end
, char *clock
, char *dir
, long number
);
577 TimingPathList
* ttv_GetCriticMinAccessList(TimingFigure
*tf
, char *start
, char *end
, char *clock
, char *dir
, long number
);
578 TimingPathList
* ttv_GetAllMaxAccessList(TimingFigure
*tf
, char *start
, char *end
, char *clock
, char *dir
, long number
);
579 TimingPathList
* ttv_GetAllMinAccessList(TimingFigure
*tf
, char *start
, char *end
, char *clock
, char *dir
, long number
);
580 TimingPathList
* ttv_GetMaxAccess(TimingSignal
*sig
, TimingSignal
*end
, char *clock
, char *dir
);
581 TimingPathList
* ttv_GetMinAccess(TimingSignal
*sig
, TimingSignal
*end
, char *clock
, char *dir
);
582 TimingPathList
* ttv_GetAllMaxAccess(TimingSignal
*sig
, TimingSignal
*end
, char *clock
, char *dir
, long number
);
583 TimingPathList
* ttv_GetAllMinAccess(TimingSignal
*sig
, TimingSignal
*end
, char *clock
, char *dir
, long number
);
584 TimingPathList
*ttv_GetCriticMaxPath(TimingSignal
*start
, TimingSignal
*end
, char *dir
, long number
);
585 TimingPathList
*ttv_GetCriticMinPath(TimingSignal
*start
, TimingSignal
*end
, char *dir
, long number
);
586 TimingPathList
*ttv_GetAllMaxPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
587 TimingPathList
*ttv_GetAllMinPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
588 TimingPathList
*ttv_GetAllMaxPath(TimingSignal
*start
, TimingSignal
*end
, char *dir
, long number
);
589 TimingPathList
*ttv_GetAllMinPath(TimingSignal
*start
, TimingSignal
*end
, char *dir
, long number
);
595 <TimingPathList *> ttv_GetPaths [<TimingFigue *tf>] [-from <startnodelist>] [-to <endnodelist>] [-thru <accessnodelist>] [-dir <dir>] [-nb <nb>] [-critic|-all] [-path|-access] [-max|-min]\$
597 Obsolete but still working:\$
598 TimingPathList *ttv_GetPaths(TimingFigure *tf, char *clock, char *start, char *end, char *dir, long number, char *all, char *path, char *minmax);\$
600 Gets a selection of paths/accesss, depending upon configuration.\$
601 If {tf} is not specified then {startnodelist}, {endnodelist} and {accessnodelist} are considered {TimingSignal} lists. They are node name lists otherwise.\$
602 The {accessnodelist} is used only if {-access} is specified.\$
604 tf % Related timing figure to use.
605 -from {<startnodelist>} % Path start node list (clock node if {-access} is used). If not specified, all possible start nodes are considered.
606 -thru {<accessnodelist>} % Path access node list (latchs, precharges, breakpoints). Used only with {-access}. If not specified, all possible access nodes are considered.
607 -to {<endnodelist>} % Path end node list (latchs, precharges, breakpoints, connectors). If not specified, all possible end nodes are considered.
608 -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 {??}.
609 -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}.
610 -critic % Returns only critical paths. This is the default.
611 -all % Returns critical and parallel paths.
612 -path % Searches for paths. This is the default.
613 -access % Searches for accesses.
614 -max % Uses maximum delays for the search. This is the default.
615 -min % Uses minimum delays for the search.
617 start % Path starting point (clock signal for an access path)
618 end % Path destination point
619 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.
620 number % Number of paths/access that will appear in the returned list. If {number} is negative, no path number limit will be considered
621 all % {all} or {critic}: all paths appear in the returned list or only critical paths disregarding parallel paths
622 path % Type of paths to return, either {path} or {access}
623 minmax % Maximum ({max}) or minimum ({min}) paths are returned
624 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]}
626 void ttv_GetPaths(void); // void to avoid gns wrappers
627 TimingPathList
*ttv_GetPaths_sub (TimingFigure
*tf
, char *clock
, char *start
, char *end
, char *dir
, long number
, char *all
, char *path
, char *minmax
);
628 TimingPathList
*ttv_internal_GetPaths_EXPLICIT(TimingFigure
*tf
, TimingSignalList
*clock
, TimingSignalList
*start
, TimingSignalList
*end
, char *dir
, long number
, char *all
, char *path
, char *minmax
);
634 Search for timing paths. Path delay is computed with regard to input slope and output load.
636 tf % Related timing figure to be driven
637 slopein % Path input slope to be propagated, if 0, default slope is taken into account.
638 start % Path starting point (clock signal for an access path)
639 end % Path destination point.
640 dir % Path transitions: {uu}, {dd}, {ud}, {du}; {u} or {d} can be replaced by the wildcard {?}
641 number % Number of paths/access that will appear in the returned list. If {number} is negative, no path number limit will be considered
642 all % {all} or {critic}: all paths appear in the returned list or only critical paths disregarding parallel paths
643 path % Type of paths to return, either {path} or {access}
644 minmax % Maximum ({max}) or minimum ({min}) paths are returned
645 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.
646 propagate % Type of slope propagation, can take values {0} (no propagation), {1} (full propagation) or {2} (1-stage propagation)
647 EXAMPLE % {set p_list [ttv_CharacPaths $fig 100e-12 a b ud 1 critic path max 10e-15 1]}
649 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
);
652 MAN ttv_GetParallelPaths
655 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.
657 ta % Pointer to a timing path
658 num % Max number of parallel paths to report
659 EXAMPLE % {set pr_list [ttv_GetParallelPaths [lindex $p_list 1] 10]}
661 TimingPathList
*ttv_GetParallelPaths (TimingPath
*ta
, long num
);
667 TimingPathList *ttv_ProbeDelay <TimingFigure *tf> <StringList *nodenamelist> [flags]\$\$
668 Obsolete but still working:\$
669 TimingPathList *ttv_ProbeDelay(TimingFigure *tf, double inputslope, StringList *nodenamelist, char *dir, int nbpaths, char *path_or_access, char *minmax)
671 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, ...).\$
672 The type of the crossed nodes can be specified as wildcards can be used to indicate a set of nodes.
675 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.
677 -dir {<dir>} % Requested start-to-end transition. Default is {??} (all transitions).
678 -slope {<inputslope>} % Value of the input slope to propagate through the path. If negative, the slope computed during database creation will be propagated.
679 -nb {<maxpath>} % If positive maximum number of paths returned. Default, is {-1} (unlimited).
680 -min % Search for minimum-delay paths
681 -max % Search for maximum-delay paths. This is the default.
682 -nosync % Disable synchornization to the latch opening when crossing latches if stb has been run on the timing figure.
683 -noprop % Disable slope propagation thru the found path gates. {<inputslope>} is ignored.
684 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]}.
686 TimingPathList
*ttv_ProbeDelay_sub(TimingFigure
*tf
, double slopein
, StringList
*nodenamelist
, char *dir
, int nbpath
, char *path_or_access
, char *minmax
, int nosync
, int noprop
);
687 void ttv_ProbeDelay(void); // (void) disables the gns wrappers
693 Frees the paths in a list
695 lst % Pointer on the head of a path list
696 EXAMPLE % {ttv_FreePathList $p_list}
698 void ttv_FreePathList(TimingPathList
*lst
);
702 MAN ttv_SearchExcludeNodeType
705 Allows the exclusion of nodes of a given type for path searching
707 conf % List of node types separated by spaces. Valid types are {Command}, {Precharge}, {Latch}, {Connector} and {Breakpoint}.
708 EXAMPLE % {ttv_SearchExcludeNodeType "Command Precharge"}
711 void ttv_SearchExcludeNodeType(char *conf
);
714 MAN ttv_CharacPathTables
717 Recompute path delay and output slope with all the combinations of slopes and capacitances.
718 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.
720 pth % Timing path to recompute
721 slopes % List of slope values to use
722 capas % List of capacitance values to use
723 propagate % type of slope propagation, can take values {0} (no propagation), {1} (full propagation))
724 EXAMPLE % {set res [ttv_CharacPathTables $mypath {`1e-12 3e-12}` {`1e-15 2e-15}` 1]}
726 ListOfDoubleTable
*ttv_CharacPathTables(TimingPath
*pth
, DoubleListTimeValue
*slopes
, DoubleListCapaValue
*capas
, int propagate
);
730 MAN ttv_CreateTimingTableModel
733 Creates a timing table model using the given axis and table values.\$
734 For GNS usage, set {tvf} to NULL
736 tvf % Timing figure where table model will be created
737 name % Name of the table model
738 axis1 % Y-axis values of the table
739 axis2 % X-axis values of the table
740 values % Values to set into the table. It's a 2D array.
741 type % defines the type of the table axis: "slope-slope", "slope-capa" or "slope-ckslope".
742 EXAMPLE % {ttv_CreateTimingTableModel $fig mymodel {`1e-12 3e-12}` {`1e-15 2e-15}` {`{`1e-12 2e-12}`{`3e-12 4e-12}`}` "slope-capa"}
744 void ttv_CreateTimingTableModel(TimingFigure
*tvf
, char *name
, DoubleListTimeValue
*axis1
, DoubleListCapaValue
*axis2
, DoubleTable
*values
, char *type
);
747 MAN ttv_CreateEnergyTableModel
750 Associate an energy table model using the given axis and table values.\$
751 For GNS usage, set {tvf} to NULL
753 tvf % Timing figure where table model will be created
754 name % Name of the table model
755 axis1 % Y-axis values of the table
756 axis2 % X-axis values of the table
757 values % Values to set into the table. It's a 2D array.
758 type % defines the type of the table axis: "slope-slope", "slope-capa" or "slope-ckslope".
759 EXAMPLE % {ttv_CreateTimingTableModel $fig mymodel {`1e-12 3e-12}` {`1e-15 2e-15}` {`{`1e-12 2e-12}`{`3e-12 4e-12}`}` "slope-capa"}
761 void ttv_CreateEnergyTableModel(TimingFigure
*tvf
, char *name
, DoubleListTimeValue
*axis1
, DoubleListCapaValue
*axis2
, DoubleTable
*values
, char *type
);
763 /***********************************************************************************************/
764 /***********************************************************************************************/
765 /* TimingPaths Properties */
766 /***********************************************************************************************/
767 /***********************************************************************************************/
768 double ttv_GetPathDelay(TimingPath
*ta
);
769 double ttv_GetPathRefDelay(TimingPath
*ta
);
770 double ttv_GetPathDataLag(TimingPath
*ta
);
771 double ttv_GetPathSlope(TimingPath
*ta
);
772 double ttv_GetPathRefSlope(TimingPath
*ta
);
773 double ttv_GetPathStartTime(TimingPath
*ta
);
774 double ttv_GetPathStartSlope(TimingPath
* ta
);
775 int ttv_PathIsHZ(TimingPath
*ta
);
776 TimingSignal
*ttv_GetPathStartSignal(TimingPath
*ta
);
777 TimingSignal
*ttv_GetPathEndSignal(TimingPath
*ta
);
778 TimingEvent
*ttv_GetPathCommand(TimingPath
*ta
);
779 TimingEvent
*ttv_GetPathAccessLatchCommand(TimingPath
*ta
);
780 char ttv_GetPathStartDirection(TimingPath
*ta
);
782 TimingPathList
*ttv_SortPathList( TimingPathList
*path
, char *order
);
783 char ttv_GetPathEndDirection(TimingPath
*ta
);
785 /***********************************************************************************************/
786 /***********************************************************************************************/
788 /***********************************************************************************************/
789 /***********************************************************************************************/
792 MAN ttv_GetTimingSignalListByNet
795 Retreives a timing signal list from a net name
797 tvf % Pointer on a timing figure
798 name % Name of the timing signal to retrieve. Should repect the naming conventions defined with {avtCaseSensitive} and {avtVectorize} configuration variables.
799 EXAMPLE % {set siglist [ttv_GetTimingSignalListByNet $fig net045]}
801 TimingSignalList
*ttv_GetTimingSignalListByNet(TimingFigure
*tvf
, char *name
);
804 MAN ttv_GetTimingSignal
807 Retreives a timing signal from the timing figure; returns NULL on failure.
809 tvf % Pointer on a timing figure
810 name % Name of the timing signal to retrieve. Should repect the naming conventions defined with {avtCaseSensitive} and {avtVectorize} configuration variables.
811 EXAMPLE % {set sig [ttv_GetTimingSignal $fig net045]}
813 TimingSignal
*ttv_GetTimingSignal(TimingFigure
*tvf
, char *name
);
817 MAN ttv_GetTimingSignalList
820 Retreives a list of timing signals of a given type and location
822 tvf % Pointer on a timing figure
823 type % {connector}, {precharge}, {latch}, {command} or {breakpoint}
824 location % {interface}, {internal} or {all}
825 EXAMPLE % {set ext_latches [ttv_GetTimingSignalList $fig latch interface]}
827 TimingSignalList
*ttv_GetTimingSignalList(TimingFigure
*tvf
, char *type
, char *location
);
830 presque redondant avec le ttv_GetTimingSignalList
832 TimingSignalList
*ttv_GetMatchingSignal(TimingFigure
*tf
, char *name
, char *type
);
834 TimingSignalList
*ttv_GetConnectorList(TimingFigure
*tf
);
835 TimingSignalList
*ttv_GetInterfaceBreakpointList(TimingFigure
*tvf
);
836 TimingSignalList
*ttv_GetInterfaceLatchList(TimingFigure
*tvf
);
837 TimingSignalList
*ttv_GetInterfaceCommandList(TimingFigure
*tvf
);
838 TimingSignalList
*ttv_GetInterfacePrechargeList(TimingFigure
*tvf
);
839 TimingSignalList
*ttv_GetInternalBreakpointList(TimingFigure
*tvf
);
840 TimingSignalList
*ttv_GetInternalLatchList(TimingFigure
*tvf
);
841 TimingSignalList
*ttv_GetInternalCommandList(TimingFigure
*tvf
);
842 TimingSignalList
*ttv_GetInternalPrechargeList(TimingFigure
*tvf
);
848 Returns the list of signals marked as clock in a given timing figure, with a {create_clock} command for example.
849 Returns an empty list if the timing figure is NULL, or if there are no clock connectors.
851 tvf % Pointer on a timing figure
852 EXAMPLE % {set clock_list [ttv_GetClockList $fig]}
854 extern TimingSignalList
*ttv_GetClockList (TimingFigure
*tvf
);
856 /***********************************************************************************************/
857 /***********************************************************************************************/
858 /* TimingSignals Properties */
859 /***********************************************************************************************/
860 /***********************************************************************************************/
862 TimingFigure
*ttv_GetSignalTopTimingFigure(TimingSignal
*tvs
);
865 MAN ttv_GetTimingSignalProperty
868 Returns a property of a timing signal. A Property is a polymorphic type, the returned type depends on the property code.
870 fig % Pointer on the timing signal
871 code % Property code; for available property codes, see the {TimingSignal} object section
873 Property
*ttv_GetTimingSignalProperty (TimingSignal
*fig
, char *code
);
876 MAN ttv_GetLatchAccess
879 Returns a latch's intrinsic access delay, from command to latch output
881 tvf % Pointer on a timing figure
882 latch % Pointer on the latch to consider
883 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.
884 command % Associated command node; if NULL, all commands will be considered
885 minmax % {min} or {max}; defines if min or max value is to be chosen when there are multiple choices.
886 EXAMPLE % {set intrinsic [ttv_GetLatchAccess $fig $lt1 falling $com1 min]}
888 double ttv_GetLatchAccess(TimingFigure
*tvf
, TimingSignal
*latch
, char dir
, TimingSignal
*command
, char *minmax
);
891 MAN ttv_GetLatchSetup
894 Returns a latch's intrinsic setup constraint, from latch input to command
896 tvf % Pointer on a timing figure
897 latch % Pointer on the latch to consider
898 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.
899 command % Associated command node; if NULL, all commands will be considered
900 minmax % {min} or {max}; defines if min or max value is to be chosen when there are multiple choices.
901 EXAMPLE % {set intrinsic [ttv_GetLatchSetup $fig $lt1 falling $com1]}
903 double ttv_GetLatchSetup(TimingFigure
*tvf
, TimingSignal
*latch
, char dir
, TimingSignal
*command
);
909 Returns a latch's intrinsic hold constraint, from latch input to command
911 tvf % Pointer on a timing figure
912 latch % Pointer on the latch to consider
913 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.
914 command % Associated command node; if NULL, all commands will be considered
915 minmax % {min} or {max}; defines if min or max value is to be chosen when there are multiple choices.
916 EXAMPLE % {set intrinsic [ttv_GetLatchHold $fig $lt1 falling $com1]}
919 double ttv_GetLatchHold(TimingFigure
*tvf
, TimingSignal
*latch
, char dir
, TimingSignal
*command
);
920 int ttv_GetNameIndex(char *sig
);
922 char *ttv_GetNameRadical(char *sig
);
925 MAN ttv_GetSignalCapaList
928 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.
930 tvs % Pointer on the timing signal to consider
931 EXAMPLE % {set capa_list [ttv_GetSignalCapaList]}
933 DoubleList
*ttv_GetSignalCapaList (TimingSignal
*tvs
);
936 MAN ttv_GetFullSignalNetName
939 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.
941 tvf % Pointer on a timing figure
942 tvs % Pointer on the timing signal to consider
943 EXAMPLE % {set name [ttv_GetFullSignalNetName $fig $sig]}
945 char *ttv_GetFullSignalNetName(TimingFigure
*tvf
, TimingSignal
*tvs
);
948 MAN ttv_GetFullSignalName
951 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.
953 tvf % Pointer on a timing figure
954 tvs % Pointer on the timing signal to consider
955 EXAMPLE % {set name [ttv_GetFullSignalName $fig $sig]}
957 char *ttv_GetFullSignalName(TimingFigure
*tvf
, TimingSignal
*tvs
);
958 char *ttv_GetSignalType(TimingSignal
*tvs
);
962 /***********************************************************************************************/
963 /***********************************************************************************************/
965 /***********************************************************************************************/
966 /***********************************************************************************************/
969 MAN ttv_GetTimingEventProperty
972 Returns a property of a timing event. A Property is a polymorphic type, the returned type depends on the property code.
974 ev % Pointer on the timing event
975 code % Property code; for available property codes, see the {TimingEvent} object section
978 Property
*ttv_GetTimingEventProperty (TimingEvent
*ev
, char *code
);
981 MAN ttv_GetLatchCommands
984 Returns the list of commands enabling writing in a given latch
986 ts % Pointer on the latch to consider
987 EXAMPLE % {set com_list [ttv_GetLatchCommands $lt1]}
989 TimingEventList
*ttv_GetLatchCommands(TimingSignal
*tvs
);
992 MAN ttv_GetLatchEventCommands
995 Returns the list of commands enabling writing of a specific transition in a given latch
997 tvs % Pointer on the timing signal to consider
998 dir % {u} or {d}; transition to be written
999 EXAMPLE % {set com_list [ttv_GetLatchCommands $lt1 u]}
1001 TimingEventList
*ttv_GetLatchEventCommands(TimingSignal
*tvs
, char dir
);
1003 TimingSignal
*ttv_GetTimingEventSignal(TimingEvent
*tve
);
1004 char ttv_GetTimingEventDirection(TimingEvent
*tve
);
1006 /***********************************************************************************************/
1007 /***********************************************************************************************/
1009 /***********************************************************************************************/
1010 /***********************************************************************************************/
1012 char *ttv_AutomaticDetailBuild(char *mode
);
1014 TimingDetailList
*ttv_GetParallelPathDetail (TimingPath
*ta
);
1017 MAN ttv_GetPathDetail
1020 Returns the list of elementary timing arcs (lines) making up a critical path
1022 ta % Pointer on the timing path to consider
1023 EXAMPLE % {set detail [ttv_GetPathDetail $path]}
1025 TimingDetailList
*ttv_GetPathDetail (TimingPath
*ta
);
1026 void ttv_FreePathDetail(TimingDetailList
*detail
);
1027 void ttv_FreeParallelPathDetail(TimingDetailList
*detail
);
1029 /***********************************************************************************************/
1030 /***********************************************************************************************/
1031 /* Detail Properties */
1032 /***********************************************************************************************/
1033 /***********************************************************************************************/
1035 MAN ttv_GetTimingDetailProperty
1038 Returns a property of a timing detail. A Property is a polymorphic type, the returned type depends on the property code.
1040 ev % Pointer on the timing detail
1041 code % Property code; for available property codes, see the {TimingDetail} object section
1043 Property
*ttv_GetTimingDetailProperty (TimingDetail
*det
, char *property
);
1045 int ttv_DetailIsHZ(TimingDetail
*td
);
1046 char *ttv_GetDetailNodeName (TimingDetail
*td
);
1047 char *ttv_GetDetailSignalName (TimingDetail
*td
);
1048 char *ttv_GetDetailSignalType(TimingDetail
*td
);
1049 double ttv_GetDetailDelay (TimingDetail
*td
);
1050 double ttv_GetDetailSlope (TimingDetail
*td
);
1051 double ttv_GetDetailRefDelay(TimingDetail
*td
);
1052 double ttv_GetDetailRefSlope(TimingDetail
*td
);
1053 double ttv_GetDetailSimDelay(TimingDetail
*td
);
1054 double ttv_GetDetailSimSlope(TimingDetail
*td
);
1055 double ttv_GetDetailDataLag(TimingDetail
*td
);
1056 char *ttv_GetDetailType (TimingDetail
*td
);
1057 char ttv_GetDetailDirection (TimingDetail
*td
);
1060 MAN xxxttv_GetCrossedTransistorNames
1063 Returns the list of transistors the propagation of a signal is crossing. The cone netlist ({.cns} file) must have been generated.
1064 Returns a list of names.
1066 tvf % Pointer on a timing figure, used to retrieve the appropriate cone netlist
1067 namein % Start node of the signal's propagation
1068 dirin % Transition on the start node; {u} or {d}
1069 nameout % Arrival node of the signal's propagation
1070 dirout % Transition on the start node; {u} or {d}
1071 hzflag % If 0, returns the list of transistors activated (if 1 deactivated) by the signal's propagation
1074 List
*ttv_GetCrossedTransistorNames(TimingFigure
*tvf
, char *namein
, char dirin
, char *nameout
, char dirout
, int hzflag
);
1075 List
*__ttv_GetCrossedTransistors(TimingFigure
*tvf
, char *namein
, char dirin
, char *nameout
, char dirout
, int hzflag
);
1078 /***********************************************************************************************/
1079 /***********************************************************************************************/
1080 /* STDOUT Reports */
1081 /***********************************************************************************************/
1082 /***********************************************************************************************/
1085 MAN ttv_DisplayPathList
1088 Prints summary information about paths given in a path list
1090 tpl % Pointer on a path list
1091 f % File where to save the report, {stdout} for standard output
1093 void ttv_DisplayPathList(FILE *f
, TimingPathList
*tpl
);
1096 MAN ttv_DisplayPathListDetail
1099 Prints detailed information about paths given in a path list
1101 tpl % Pointer on a path list
1102 f % File where to save the report, {stdout} for standard output
1104 void ttv_DisplayPathListDetail(FILE *f
, TimingPathList
*tpl
);
1106 //void ttv_DisplayPath(FILE *f, int num, TimingPath *tp);
1109 MAN ttv_DisplayPathDetail
1112 Prints detailed information about a given path
1114 tp % Pointer on a path
1115 f % File where to save the report, {stdout} for standard output
1116 num % Number to identify the path
1118 void ttv_DisplayPathDetail(FILE *f
, int num
, TimingPath
*tp
);
1120 void ttv_DisplayCompletePathDetail(FILE *f
, int num
, TimingPath
*tp
, TimingDetailList
*detail
);
1123 MAN ttv_DisplayPathDetailShowColumn
1126 Selects the columns to be displayed in the reports provided by {ttv_DisplayPath}.
1127 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.
1129 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}.
1131 void ttv_DisplayPathDetailShowColumn(char *conf
);
1134 MAN ttv_DisplayPathDetailHideColumn
1137 Selects the columns not to be displayed in the reports provided by {ttv_DisplayPath}.
1138 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.
1140 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}.
1142 void ttv_DisplayPathDetailHideColumn(char *conf
);
1146 MAN ttv_DisplayClockPathReport
1149 Prints a detailed report of timing paths originating from a clock.
1151 f % File where to save the report, {stdout} for standard output
1152 tf % Pointer on the timing figure to consider
1153 clock % Starting point name; can be a wildcard name
1154 minmax % {min} or {max}; type of path to be searched
1155 number % Maximum number of paths to report
1157 void ttv_DisplayClockPathReport(FILE *f
, TimingFigure
*tf
, char *clock
, char *minmax
, int number
);
1162 MAN ttv_DisplayConnectorToLatchMargin
1165 Prints a report displaying setup and hold constraints on latch points, originating from input connectors (both from rising and falling transitions).
1167 f % File where to save the report, {stdout} for standard output
1168 tf % Pointer on the timing figure to consider
1169 inputconnector % Names of the connectors to consider, can be wildcards.
1170 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.
1171 EXAMPLE % {ttv_DisplayConnectorToLatchMargin $ofile $fig "*" "summary split"}
1173 void ttv_DisplayConnectorToLatchMargin (FILE *f
, TimingFigure
*tf
, char *inputconnector
, char *mode
);
1176 MAN ttv_PlotPathDetail
1179 Plots the waveforms of nodes on a given path.
1181 tp % Pointer on a path
1182 f % File where to save the report, {stdout} for standard output
1184 void ttv_PlotPathDetail(FILE *f
, TimingPath
*tp
);
1186 void ttv_PlotCompletePathDetail(FILE *f
, TimingPath
*tp
, TimingDetailList
*detailchain
);
1192 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.
1194 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).
1196 void ttv_SetupReport(char *conf
);
1202 Prints information about the given timing figure and the running script
1204 f % File where to save the report, {stdout} for standard output
1205 tvf % Pointer on a timing figure
1207 void ttv_DumpHeader(FILE *f
, TimingFigure
*tvf
);
1213 ttv_DumpFigure <FILE *f> <TimingFigure *tvf> [type]
1215 Prints a table with the Timing Lines of a TimingFigure.
1217 f % File where to save the report, {stdout} for standard output
1218 tvf % Pointer on a timing figure
1219 type % Same type as ttv_GetLines API to filter output. Valid values: {setup}, {hold}, {access}, {hz}, {rc}, {prech}, {eval}, {data} or {all}.
1221 void ttv_DumpFigure(void); // (void) disables the gns wrappers
1224 /***********************************************************************************************/
1225 /***********************************************************************************************/
1226 /* STDOUT Reports */
1227 /***********************************************************************************************/
1228 /***********************************************************************************************/
1231 MAN ttv_SimulatePath
1234 ttv_SimulatePath <TimingFigure *tvf> <TimingPath *ta> [-force] [-mc <number>] [-plot]
1236 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.
1238 tvf % Pointer on a timing figure
1239 path % Pointer on the timing path the spice deck is to be extracted from
1240 -force % The path will be simulated even if it has already been
1241 -mc {<number>} % The number of monte-carlo simulations to be performed
1242 -plot % Generated a waveform file for viewing with gnuplot or gwave. Note that {simUsePrint} must be set.
1245 void ttv_SimulatePath(void);
1246 int ttv_SimulatePath_sub(TimingFigure
*tvf
, TimingPath
*path
, char *mode
, int mc
);
1247 //int ttv_SimulatePathDetail(TimingFigure *tvf, TimingPath *path, char *mode);
1250 MAN ttv_SimulateCharacPathTables
1253 Simulates path with all the combinations of slopes and capacitances values.
1254 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.
1256 tvf % Timing figure of the path
1257 tp % Timing path to simulate
1258 slopes % List of slope values to use
1259 capas % List of capacitance values to use
1260 maxsim % maximum number of concurent simulation authorized.
1261 EXAMPLE % {set res [ttv_SimulateCharacPathTables $myfig $mypath {`1e-12 3e-12}` {`1e-15 2e-15}` 3]}
1263 TimingPathTable
*ttv_SimulateCharacPathTables(TimingFigure
*tvf
, TimingPath
*tp
, DoubleListTimeValue
*slopes
, DoubleListCapaValue
*capas
, int maxsim
);
1266 MAN ttv_DriveSpiceDeck
1269 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.
1271 tvf % Pointer on a timing figure
1272 path % Pointer on the timing path the spice deck is to be extracted from
1273 filename % File where to save the report
1276 int ttv_DriveSpiceDeck(TimingFigure
*tvf
, TimingPath
*path
, char *filename
);
1279 MAN ttv_DriveSetupHoldSpiceDeck
1282 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.
1284 tvf % Pointer on a timing figure
1285 datapath % Pointer on the data path the spice deck is to be extracted from
1286 clockpathlist % Pointer on the clock path the spice deck is to be extracted from
1287 filename % File where to save the report
1290 int ttv_DriveSetupHoldSpiceDeck(TimingFigure
*tvf
, TimingPathList
*datapath
, TimingPathList
*clockpathlist
, char *filename
);
1293 MAN ttv_DisplayActivateSimulation
1296 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}.
1298 mode % {yes} or {no} to activate or deactivate spice deck construction and simulation
1300 void ttv_DisplayActivateSimulation(char mode
);
1303 MAN ttv_GetTimingPathProperty
1306 Returns a property of a timing path. A Property is a polymorphic type, the returned type depends on the property code.
1308 fig % Pointer on the timing path
1309 code % Property code; for available property codes, see the {TimingPath} object section
1311 Property
*ttv_GetTimingPathProperty (TimingPath
*fig
, char *code
);
1313 /***********************************************************************************************/
1314 /***********************************************************************************************/
1316 /***********************************************************************************************/
1317 /***********************************************************************************************/
1323 Gets a selection of lines, depending upon configuration.
1325 tf % Related timing figure
1326 start % Line starting point
1327 end % Line destination point
1328 dir % Line transitions: {uu}, {dd}, {ud}, {du}; {u} or {d} can be replaced by the wildcard {?}
1329 type % Line type filters: {setup}, {hold}, {access}, {hz}, {rc}, {prech}, {eval}, {data} or {all}
1330 EXAMPLE % {set l_list [ttv_GetLines $fig * * ?? "access setup hold"]}
1332 TimingLineList
*ttv_GetLines(TimingFigure
*tvf
, char *start
, char *end
, char *dir
, char *linetype
);
1335 MAN ttv_ComputeLineDelay
1338 Recomputes a line delay or slope depending on an input slope and an output capacitance.
1340 tl % Related timing line
1341 slope_in % desired input slope
1342 output_capa % desired output capacitance
1343 delayslope % type of delay to recompute {delay} or {slope}
1344 maxmin % type of delay to recompute {max} or {min}
1345 EXAMPLE % {set val [ttv_ComputeLineDelay $line 1.5e-12 0.3e-15 delay max]}
1347 double ttv_ComputeLineDelay(TimingLine
*tl
, double slope_in
, double output_capa
, char *delayslope
, char *maxmin
);
1350 MAN ttv_SetTimingLineDelay
1353 Forces the value of the propagation delay or output slope of a line. The line's propagation delay or output slope will
1354 never be reevaluated.
1356 tl % Related timing line
1357 delayslope % type of delay to set {delay} or {slope}
1358 maxmin % type of delay to set {max}, {min} or {all}
1360 EXAMPLE % {ttv_SetTimingLineDelay $line delay max 1e-9]}
1362 void ttv_SetTimingLineDelay(TimingLine
*tl
, char *delayslope
, char *maxmin
, double value
);
1365 MAN ttv_CharacTimingLineModel
1368 Compute delays or slopes using a given timing line model name.
1369 Returns a matrix of values. Each line correspond to an input slope and each element of a line to a capacitance.
1371 tvf % Timing figure with the timing model
1372 name % Name of the timing model
1373 slopes % List of slope values to use
1374 capas % List of capacitance/slope values to use
1375 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
1376 EXAMPLE % {set res [ttv_CharacTimingLineModel $fig "hold__EN/CP_01_1" \{1e-12 3e-12\} \{1e-15 2e-15\} slope-capa:slope]}
1378 DoubleTable
*ttv_CharacTimingLineModel(TimingFigure
*tf
, char *name
, DoubleListTimeValue
*input_slope
, DoubleListCapaValue
*output_capa
, char *type
);
1380 /***********************************************************************************************/
1381 /***********************************************************************************************/
1382 /* TimingLines Properties */
1383 /***********************************************************************************************/
1384 /***********************************************************************************************/
1387 MAN ttv_GetTimingLineProperty
1390 Returns a property of a timing line. A Property is a polymorphic type, the returned type depends on the property code.
1392 tl % Pointer on the timing line
1393 code % Property code; for available property codes, see the {TimingLine} object section
1395 Property
*ttv_GetTimingLineProperty (TimingLine
*tl
, char *code
);
1398 /***********************************************************************************************/
1399 /***********************************************************************************************/
1400 /* TimingConstraint */
1401 /***********************************************************************************************/
1402 /***********************************************************************************************/
1405 MAN ttv_GetConstraints
1408 Computes the constraints at the interface of a timing figure.
1409 Returns a list of TimingConstraint.
1412 inputconnector % Connector whose constraints must be computed
1413 towhat % Ending path node types, can be a mix of {latch}, {precharge}, {clockgating}, {precharge} or {all}
1414 EXAMPLE % {set cl [ttv_GetConstraints $fig * all}
1417 TimingConstraintList
*ttv_GetConstraints (TimingFigure
*tf
, char *inputconnector
, char *towhat
);
1420 MAN ttv_FreeConstraints
1423 ttv_FreeConstraints <allobj>
1425 Frees the constraints.
1427 allobj % Constraint objects to free
1428 EXAMPLE % {ttv_FreeConstraints $myconstraints}
1430 void ttv_FreeConstraints(void); // (void) disables the gns wrappers
1431 void ttv_FreeConstraints_sub(TimingConstraintList
*allobj
, TimingFigure
*tf
, int autoclean
);
1434 /***********************************************************************************************/
1435 /***********************************************************************************************/
1436 /* TimingConstraint Properties */
1437 /***********************************************************************************************/
1438 /***********************************************************************************************/
1441 MAN ttv_GetTimingConstraintProperty
1444 Returns a property of a timing constraint. A Property is a polymorphic type, the returned type depends on the property code.
1446 co % Pointer on the timing constraint
1447 property % Property code; for available property codes, see the {TimingConstraint} object section
1450 Property
*ttv_GetTimingConstraintProperty (TimingConstraint
*co
, char *property
);
1452 /***********************************************************************************************/
1453 /***********************************************************************************************/
1454 /* UTILITY FUNCTIONS */
1455 /***********************************************************************************************/
1456 /***********************************************************************************************/
1458 MAN ttv_DetectFalseClockPath
1461 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.
1463 tf % Pointer on a timing figure
1465 void ttv_DetectFalseClockPath(TimingFigure
*tf
);
1468 MAN ttv_DetectFalsePath
1471 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.
1473 tf % Pointer on a timing figure
1474 start % Name of the starting point
1475 end % Name of the ending point
1477 void ttv_DetectFalsePath(TimingFigure
*tvf
, char *start
, char *end
);
1479 /***********************************************************************************************/
1480 /***********************************************************************************************/
1481 /* DATABASE GENERATION */
1482 /***********************************************************************************************/
1483 /***********************************************************************************************/
1485 /***********************************************************************************************/
1486 /* INTERNAL FUNCTIONS NOT TO BE COMMENTED */
1487 /***********************************************************************************************/
1488 TimingPathList
*ttv_internal_GetCriticPath(TimingSignal
*start
, TimingSignal
*end
, char *dir
, long number
, int max
);
1489 TimingPathList
*ttv_internal_GetAccess(TimingSignal
*sig
, TimingSignal
*end
, char *clock
, char *dir
, int max
);
1490 //TimingPathList *ttv_internal_GetPaths(TimingFigure *tf, char *clock, char *start, char *end, char *dir, long number, char *all, char *path, char *minmax);
1491 TimingPathList
*ttv_internal_filterpathbycommand( TimingPathList
*, TimingEvent
*cmd
, TimingEvent
*inev
, int free
);
1492 TimingPath
*ttv_getcritic_pathlist (TimingFigure
*tf
, void *start
, void *end
, char *dir
, long number
, int minmax
, int no_class
, int names
, int all
);
1493 TimingPath
*ttv_getsigaccesslist (TimingFigure
*tf
, void *start
, void *end
, void *clk
, char *dir
, int number
, int minmax
, int no_class
, int all
);
1494 void ttv_setsearchexclude(long valstart
, long valend
, long *oldvalstart
, long *oldvalend
);
1496 /***********************************************************************************************/
1497 /***********************************************************************************************/
1498 /* NOT COMMENTED ON PURPOSE / OBSOLETE */
1499 /***********************************************************************************************/
1500 /***********************************************************************************************/
1502 double ttv_GetLatchMaxAccess(TimingFigure
*tvf
, TimingSignal
*latch
, char dir
, TimingSignal
*command
);
1503 double ttv_GetLatchMinAccess(TimingFigure
*tvf
, TimingSignal
*latch
, char dir
, TimingSignal
*command
);
1504 int ttv_GetVectorConnectorLeftBound(TimingSignal
*tvs
);
1505 int ttv_GetVectorConnectorRightBound(TimingSignal
*tvs
);
1506 double ttv_GetSignalCapacitance(TimingSignal
*tvs
);
1507 double ttv_GetConnectorCapacitance(TimingSignal
*tvs
);
1508 char *ttv_GetConnectorName(TimingSignal
*con
);
1509 char ttv_GetConnectorDirection(TimingSignal
*ts
);
1510 char *ttv_GetSignalNetName(TimingSignal
*tvs
);
1511 char *ttv_GetSignalName(TimingSignal
*tvs
);
1512 TimingPathList
*ttv_GetCriticMaxPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
1513 TimingPathList
*ttv_GetCriticMinPathList(TimingFigure
*tf
, char *start
, char *end
, char *dir
, long number
);
1514 void ttv_RemoveTimingFigure(TimingFigure
*tf
);
1515 void ttv_SetSearchMode(char *mode
);
1516 TimingSignal
*ttv_GetLatchCommandSignal(TimingEvent
*tve
);
1517 char ttv_GetLatchCommandDirection(TimingEvent
*tve
);
1518 void ttv_SetReportUnit(char *val
);
1519 TimingPathList
*ttv_RemoveDuplicatedPath(TimingPathList
*talist
);
1527 Constructs a timing figure from a netlist and an SDF file. The netlist must have been constructed before (related files loaded)
1529 fig % Pointer on a netlist
1530 sdf_file % Name of the corresponding SDF file
1532 TimingFigure
*ttv_LoadSDF (Netlist
*fig
, char *sdf_file
);
1534 TimingPathList
*ttv_ProbeDelay_v2(TimingFigure
*tvf
, double slopein
, char *start
, char *end
, char *dir
, int nbpath
, char *minmax
);
1538 MAN ttv_GetGeneratedClockPaths
1541 Gets the path list from a top level clock to the specified generated clock timing event.
1544 tve % Generated clock timing event
1545 minmax % Maximum ({max}) or minimum ({min}) paths are returned
1546 EXAMPLE % {set p_list [ttv_GetGeneratedClockPaths $fig $clockevent max]}
1548 TimingPathList
*ttv_GetGeneratedClockPaths(TimingFigure
*tvf
, TimingEvent
*tve
, char *minmax
);
1550 char *ttv_GetClockInfos(TimingFigure
*tvf
, char *name
, char *minmax
);
1553 MAN ttv_SetTimingFigureName
1554 CATEG tcl+generation
1556 Change the name of a timing figure.
1558 tvf % Figure to be changed
1559 name % New figure name
1562 void ttv_SetTimingFigureName(TimingFigure
*tvf
, char *name
);
1563 void ttv_SetFigureFlag(TimingFigure
*tvf
, char *mode
);
1566 MAN ttv_Simulate_AddDelayToVT
1569 Applyed on the path, indicate to CPE to add a measure to retreive the delay
1570 to VT of the ending node of {pth} which is a command generating the event {latch} on the latch.\$
1571 The value can be retreived using the corresponding TimingPath property after the simulation
1574 tvf % Pointer on a timing figure.
1575 pth % Pointer on the timing path.
1576 latch % Event of the latch generated by the ending node of {pth}.
1578 void ttv_Simulate_AddDelayToVT(TimingFigure
*tvf
, TimingPath
*pth
, TimingEvent
*latch
);
1581 MAN ttv_Simulate_FoundSolutions
1584 Returns the number of path activation solutions found by CPE.\$
1585 {0} means the path can not be activated hence it is a false path.\$
1586 More than {1} solution, means CPE tried to find the best solution depending on
1587 whether the path was a max or a min path between those solutions.
1589 int ttv_Simulate_FoundSolutions();
1593 int ttv_LoadSSTAResults(TimingFigure
*tvf
, StringList
*filenames
, IntegerTable
*order
);
1594 int ttv_SetSSTARunNumber(TimingFigure
*tvf
, int num
);
1595 int ttv_BuildSSTALineStats(TimingFigure
*tvf
);
1596 void ttv_UpdateInf(TimingFigure
*tvf
);
1597 void ttv_ChangePathStartTime(TimingPath
*tp
, TimeValue time
);
1598 void ttvapi_setdislaytab(int nb
);