Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / api / ttv / ttv_API.h
1 #include "avt_API_types.h"
2
3 #define TTV_NONE ' '
4 #define TTV_LATCH 'l'
5 #define TTV_FLIPFLOP 'f'
6 #define TTV_BREAKPOINT 'b'
7 #define TTV_COMMAND 'q'
8 #define TTV_PRECHARGE 'r'
9
10 #define TTV_CONNECTOR 'c'
11 #define TTV_SIGNAL 's'
12 #define TTV_INSTANCE_CONNECTOR 'n'
13
14 #define TTV_TIMING 0x101010
15 #define TTV_SETUP 0x101011
16 #define TTV_HOLD 0x101012
17 #define TTV_ACCESS 0x101013
18
19
20 void ttv_API_AtLoad_Initialize();
21
22 void ttv_SetBaseNetlist(Netlist *lf);
23
24 /*
25 MAN ttv_CreateTimingFigure
26 CATEG tcl+generation
27 DESCRIPTION
28 Initiates the creation of a timing figure. Computes the connectors capacitances assuming the netlist provided is a flat-transistor one.
29 ARGS
30 lf % Netlist the timing figure is based on.
31 EXAMPLE % {ttv_CreateTimingFigure $netlist}
32 */
33
34 void ttv_CreateTimingFigure(Netlist *lf);
35
36 /*
37 MAN ttv_EditTimingFigure
38 CATEG tcl+generation
39 DESCRIPTION
40 Edit an existing timing timing figure.
41 {ttv_FinishTimingFigure} must be called after the modifications to make the timing figure usable.
42 ARGS
43 tvf % TimingFigure to edit.
44 EXAMPLE % {ttv_EditTimingFigure $fig}
45 */
46 void ttv_EditTimingFigure(TimingFigure *tvf);
47
48 /*
49 MAN ttv_AddConnector
50 CATEG gns+tcl+generation
51 DESCRIPTION
52 Creates a connector timing signal.
53 ARGS
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]}
57 */
58 TimingSignal *ttv_AddConnector(char *name, char dir);
59
60 /*
61 MAN ttv_AddCommand
62 CATEG gns+tcl+generation
63 DESCRIPTION
64 Creates a command timing signal.
65 ARGS
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]}
68 */
69 TimingSignal *ttv_AddCommand(char *name);
70
71 /*
72 MAN ttv_AddLatch
73 CATEG gns+tcl+generation
74 DESCRIPTION
75 Creates a latch timing signal.
76 ARGS
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]}
79 */
80 TimingSignal *ttv_AddLatch(char *name);
81 TimingSignal *ttv_AddFlipFlop(char *name);
82
83 /*
84 MAN ttv_AddPrecharge
85 CATEG gns+tcl+generation
86 DESCRIPTION
87 Creates a precharge timing signal.
88 ARGS
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
90 */
91 TimingSignal *ttv_AddPrecharge(char *name);
92
93
94 /*
95 MAN ttv_AddBreakpoint
96 CATEG gns+tcl+generation
97 DESCRIPTION
98 Creates a breakpoint timing signal.
99 ARGS
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
101 */
102 TimingSignal *ttv_AddBreakpoint(char *name);
103
104
105 /*
106 MAN ttv_AddTiming
107 CATEG gns+tcl+generation
108 DESCRIPTION
109 Creates a data delay line.
110 ARGS
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.
118 */
119 TimingLine *ttv_AddTiming(char *input, char *output, double max_delay, double max_slop, double min_delay, double min_slope, char *dir);
120
121 /*
122 MAN ttv_AddHZTiming
123 CATEG gns+tcl+generation
124 DESCRIPTION
125 Creates a HZ data delay line.
126 ARGS
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.
132 */
133 TimingLine *ttv_AddHZTiming(char *input, char *output, double max_delay, double min_delay, char *dir);
134
135
136 /*
137 MAN ttv_AddSetup
138 CATEG gns+tcl+generation
139 DESCRIPTION
140 Creates a setup line.
141 ARGS
142 input % Data point
143 output % Clock point
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.
146 */
147 TimingLine *ttv_AddSetup(char *input, char *output, double delay, char *dir);
148
149
150 /*
151 MAN ttv_AddAccess
152 CATEG gns+tcl+generation
153 DESCRIPTION
154 Creates a data access delay line
155 ARGS
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}.
163 */
164 TimingLine *ttv_AddAccess(char *input, char *output, double max_delay, double max_slop, double min_delay, double min_slope, char *dir);
165
166 /*
167 MAN ttv_AddHZAccess
168 CATEG gns+tcl+generation
169 DESCRIPTION
170 Creates a HZ data access line.
171 ARGS
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.
177 */
178 TimingLine *ttv_AddHZAccess(char *input, char *output, double max_delay, double min_delay, char *dir);
179
180 /*
181 MAN ttv_AddHold
182 CATEG gns+tcl+generation
183 DESCRIPTION
184 Creates a hold constraint line between a data pin and a clock pin.
185 ARGS
186 input % Data pin
187 output % 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.
190 */
191 TimingLine *ttv_AddHold(char *input, char *output, double delay, char *dir);
192
193 /*
194 MAN ttv_SetLineCommand
195 CATEG gns+tcl+generation
196 DESCRIPTION
197 Associates commands to a line. The command is the signal that enables reading or writing in a latch point.
198 ARGS
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.
202 */
203
204 void ttv_SetLineCommand(TimingLine *tl, char *max_command, char *min_command, char *dir);
205
206 /*
207 MAN ttv_SetLineModel
208 CATEG gns+tcl+generation
209 DESCRIPTION
210 Associates a model name to a line.
211 ARGS
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".
215 */
216
217 void ttv_SetLineModel(TimingLine *tl, char *modelname, char *where);
218
219 /*
220 MAN ttv_FinishTimingFigure
221 CATEG tcl+generation
222 DESCRIPTION
223 Returns the finished timing figure currently in creation. No more modification will be
224 permitted on the timing figure after this step.
225 */
226
227 TimingFigure *ttv_FinishTimingFigure();
228
229 /*
230 MAN ttv_DriveTimingFigure
231 CATEG tcl+generation
232 DESCRIPTION
233 Drives a timing figure on disk
234 ARGS
235 tvf % Figure to be driven
236 filename % Full filename
237 format % File format, {dtx} or {ttx}
238 */
239
240 void ttv_DriveTimingFigure(TimingFigure *tvf, char *filename, char *format);
241
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);
247
248
249 /*
250 MAN ttv_BuildTiming
251 CATEG gns
252 DESCRIPTION
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.
254 */
255 void ttv_BuildTiming();
256
257 void ttv_API_Action_Initialize();
258 void ttv_API_Action_Terminate();
259 void ttv_API_TopLevel(long list);
260
261
262 /*
263 MAN ttv_TasBuiltTiming
264 CATEG gns
265 DESCRIPTION
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.
267 */
268 void ttv_TasBuiltTiming(Netlist *lf);
269
270
271 /*
272 MAN ttv_SetFunctionsFile
273 CATEG gns
274 DESCRIPTION
275 Allows the user to specify the file in which the functions are to be found.
276 */
277 void ttv_SetFunctionsFile (char *functions_file);
278
279
280 void ttv_Config(double value, double out_capa);
281
282 /*
283 MAN ttv_Associate_Model
284 CATEG gns
285 DESCRIPTION
286 associate a delay computation method to a timing line. When the {line} delay will need to be recomputed, {function call} will be executed.
287 */
288 void ttv_Associate_Model(TimingLine *tvl, void *func);
289
290 /*
291 MAN ttv_SetOutputSwing
292 CATEG gns
293 DESCRIPTION
294 defines the swing of a signal to use when using the function 'ttv_Associate_Model'.
295 */
296 void ttv_SetOutputSwing(double low, double high);
297
298 /*
299 MAN ttv_Associate_Sim
300 CATEG gns
301 DESCRIPTION
302 associate a simulation method to a timing line. When CALL_SIMULATION() will be called, {function call} will be executed.
303 */
304 void ttv_Associate_Sim(TimingLine *tvl, void *func);
305
306 /*
307 MAN ttv_Associate_Env
308 CATEG gns
309 DESCRIPTION
310 associate a simulation environment positioning method to a timing line. When CALL_SIMULATION_ENV() will be called, {function call} will be executed.
311 */
312 void ttv_Associate_Env(TimingLine *tvl, void *func);
313
314
315
316 void ttv_Associate_Ctk_Env(TimingLine *tvl, void *func);
317
318 /*
319 MAN ttv_MinDelay
320 CATEG gns
321 DESCRIPTION
322 indicates if the delay to be computed is a minimum transition delay.
323 Returns 1 if true, 0 otherwise.
324 */
325 int ttv_MinDelay();
326
327 /*
328 MAN ttv_MaxDelay
329 CATEG gns
330 DESCRIPTION
331 indicates if the delay to be computed is a maximum transition delay.
332 returns 1 if true, 0 otherwise.
333 */
334 int ttv_MaxDelay();
335
336 /*
337 MAN ttv_UseInstanceMode
338 CATEG gns
339 DESCRIPTION
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.
341 */
342 void ttv_UseInstanceMode();
343
344 void ASSOCIATE_TIMING(void *func);
345
346
347
348
349 /*
350 MAN ttv_InitializeNewRun
351 CATEG tcl+pvt
352 DESCRIPTION
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.
354 */
355 void ttv_InitializeNewRun();
356
357 /*
358 MAN ttv_TerminateRun
359 CATEG tcl+pvt
360 DESCRIPTION
361 Cleans up all the timing figures loaded with {ttv_LoadTimingFigure}.
362 */
363 void ttv_TerminateRun();
364
365 /*
366 MAN ttv_LoadTimingFigure
367 CATEG tcl+pvt
368 DESCRIPTION
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.
371 */
372 TimingFigure *ttv_LoadTimingFigure(char *name);
373
374 /*
375 MAN xxxxttv_LoadTimingPathFigure
376 CATEG tcl+pvt
377 DESCRIPTION
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.
380 */
381 TimingFigure *ttv_LoadTimingPathFigure(char *name);
382
383 /*
384 MAN ttv_GetTimingFigure
385 CATEG tcl+dtb
386 SYNOPSIS
387 <TimingPathList *> ttv_GetTimingFigure <name>
388 \$
389 Obsolete but still working:\$
390 <TimingPathList *> ttv_GetTimingFigure <name> <temperature> <supply value>
391 DESCRIPTION
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.
393 ARGS
394 name % Timing figure's name
395 EXAMPLE % {set fig [ttv_GetTimingFigure my_design]}
396 */
397 TimingFigure *ttv_GetTimingFigure(char *name, float temp, float alim);
398
399 /*---------------------------------
400 MAN ttv_ComputeMaxPathDelay
401 CATEG tcl+pvt
402 DESCRIPTION
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.
407 */
408 double ttv_ComputeMaxPathDelay(char *figure, char *start, char *end, char *dir, double input_slope, double output_capa, double VDD, double temperature);
409
410 /*
411 MAN ttv_ComputeMaxPathSlope
412 CATEG tcl+pvt
413 DESCRIPTION
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.
417 */
418 double ttv_ComputeMaxPathSlope(char *figure, char *start, char *end, char *dir, double input_slope, double output_capa, double VDD, double temperature);
419
420 /*
421 MAN ttv_ComputeMinPathDelay
422 CATEG tcl+pvt
423 DESCRIPTION
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.
428 */
429 double ttv_ComputeMinPathDelay(char *figure, char *start, char *end, char *dir, double input_slope, double output_capa, double VDD, double temperature);
430
431 /*
432 MAN ttv_ComputeMinPathSlope
433 CATEG tcl+pvt
434 DESCRIPTION
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.
438 */
439 double ttv_ComputeMinPathSlope(char *figure, char *start, char *end, char *dir, double input_slope, double output_capa, double VDD, double temperature);
440
441 /*
442 MAN ttv_GetPathMaxDelay
443 CATEG tcl+pvt
444 DESCRIPTION
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.
448 */
449 double ttv_GetPathMaxDelay(char *figure, char *start, char *end, char *dir, double VDD, double temperature);
450
451 /*
452 MAN ttv_GetPathMaxSlope
453 CATEG tcl+pvt
454 DESCRIPTION
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.
458 */
459 double ttv_GetPathMaxSlope(char *figure, char *start, char *end, char *dir, double VDD, double temperature);
460
461 /*
462 MAN ttv_GetPathMinDelay
463 CATEG tcl+pvt
464 DESCRIPTION
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.
468 */
469 double ttv_GetPathMinDelay(char *figure, char *start, char *end, char *dir, double VDD, double temperature);
470
471 /*
472 MAN ttv_GetPathMinSlope
473 CATEG tcl+pvt
474 DESCRIPTION
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.
478 */
479 double ttv_GetPathMinSlope(char *figure, char *start, char *end, char *dir, double VDD, double temperature);
480
481 /***********************************************************************************************/
482 /***********************************************************************************************/
483 /* TimingFigure */
484 /***********************************************************************************************/
485 /***********************************************************************************************/
486
487 /*
488 MAN ttv_LoadSpecifiedTimingFigure
489 CATEG tcl+dtb
490 DESCRIPTION
491 Reads a DTX timing figure from disk.
492 ARGS
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"]}
495 */
496 TimingFigure *ttv_LoadSpecifiedTimingFigure(char *name);
497
498
499 /*
500 MAN ttv_LoadSpecifiedTimingPathFigure
501 CATEG tcl+dtb
502 DESCRIPTION
503 Reads a TTX timing path figure from disk.
504 ARGS
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"]}
507 */
508 TimingFigure *ttv_LoadSpecifiedTimingPathFigure(char *name);
509
510 /*
511 MAN ttv_LoadCrosstalkFile
512 CATEG tcl+dtb
513 DESCRIPTION
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.
515 ARGS
516 tvf % Pointer on the timing figure to annotate
517 EXAMPLE % {ttv_LoadCrosstalkFile $fig}
518 */
519 int ttv_LoadCrosstalkFile(TimingFigure *tvf);
520
521 /*
522 MAN ttv_RecomputeDelays
523 CATEG tcl+dtb
524 DESCRIPTION
525 Recomputes delays and slopes in a timing figure according to new input slopes and output capacitances.
526 ARGS
527 tvf % Pointer on the timing figure
528 EXAMPLE % {ttv_RecomputeDelays $fig}
529 */
530 void ttv_RecomputeDelays(TimingFigure *tvf);
531
532 /***********************************************************************************************/
533 /***********************************************************************************************/
534 /* TimingFigure Properties */
535 /***********************************************************************************************/
536 /***********************************************************************************************/
537 Property *ttv_GetTimingFigureProperty (TimingFigure *fig, char *code);
538 /*
539 MAN ttv_GetTimingFigureProperty
540 CATEG tcl+dtb
541 DESCRIPTION
542 Returns a property of a timing figure. A Property is a polymorphic type, the returned type depends on the property code.
543 ARGS
544 fig % Pointer on the timing figure
545 code % Property code; for available property codes, see the {TimingFigure} object section
546 */
547
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);
559
560 /***********************************************************************************************/
561 /***********************************************************************************************/
562 /* List * of TimingPath */
563 /***********************************************************************************************/
564 /***********************************************************************************************/
565
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);
590
591 /*
592 MAN ttv_GetPaths
593 CATEG tcl+path
594 SYNOPSIS
595 <TimingPathList *> ttv_GetPaths [<TimingFigue *tf>] [-from <startnodelist>] [-to <endnodelist>] [-thru <accessnodelist>] [-dir <dir>] [-nb <nb>] [-critic|-all] [-path|-access] [-max|-min]\$
596 \$
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);\$
599 DESCRIPTION
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.\$
603 ARGS
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.
616 Obsolete options: %
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]}
625 */
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);
629
630 /*
631 MAN ttv_CharacPaths
632 CATEG tcl+path
633 DESCRIPTION
634 Search for timing paths. Path delay is computed with regard to input slope and output load.
635 ARGS
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]}
648 */
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);
650
651 /*
652 MAN ttv_GetParallelPaths
653 CATEG tcl+path
654 DESCRIPTION
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.
656 ARGS
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]}
660 */
661 TimingPathList *ttv_GetParallelPaths (TimingPath *ta, long num);
662
663 /*
664 MAN ttv_ProbeDelay
665 CATEG tcl+path
666 SYNOPSIS
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)
670 DESCRIPTION
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.
673 ARGS
674 tf % Timing figure
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.
676 flags: %
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]}.
685 */
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
688
689 /*
690 MAN ttv_FreePathList
691 CATEG tcl+path
692 DESCRIPTION
693 Frees the paths in a list
694 ARGS
695 lst % Pointer on the head of a path list
696 EXAMPLE % {ttv_FreePathList $p_list}
697 */
698 void ttv_FreePathList(TimingPathList *lst);
699
700
701 /*
702 MAN ttv_SearchExcludeNodeType
703 CATEG tcl+path
704 DESCRIPTION
705 Allows the exclusion of nodes of a given type for path searching
706 ARGS
707 conf % List of node types separated by spaces. Valid types are {Command}, {Precharge}, {Latch}, {Connector} and {Breakpoint}.
708 EXAMPLE % {ttv_SearchExcludeNodeType "Command Precharge"}
709 */
710
711 void ttv_SearchExcludeNodeType(char *conf);
712
713 /*
714 MAN ttv_CharacPathTables
715 CATEG tcl+path
716 DESCRIPTION
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.
719 ARGS
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]}
725 */
726 ListOfDoubleTable *ttv_CharacPathTables(TimingPath *pth, DoubleListTimeValue *slopes, DoubleListCapaValue *capas, int propagate);
727
728
729 /*
730 MAN ttv_CreateTimingTableModel
731 CATEG tcl+generation
732 DESCRIPTION
733 Creates a timing table model using the given axis and table values.\$
734 For GNS usage, set {tvf} to NULL
735 ARGS
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"}
743 */
744 void ttv_CreateTimingTableModel(TimingFigure *tvf, char *name, DoubleListTimeValue *axis1, DoubleListCapaValue *axis2, DoubleTable *values, char *type);
745
746 /*
747 MAN ttv_CreateEnergyTableModel
748 CATEG tcl+generation
749 DESCRIPTION
750 Associate an energy table model using the given axis and table values.\$
751 For GNS usage, set {tvf} to NULL
752 ARGS
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"}
760 */
761 void ttv_CreateEnergyTableModel(TimingFigure *tvf, char *name, DoubleListTimeValue *axis1, DoubleListCapaValue *axis2, DoubleTable *values, char *type);
762
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);
781
782 TimingPathList *ttv_SortPathList( TimingPathList *path, char *order );
783 char ttv_GetPathEndDirection(TimingPath *ta);
784
785 /***********************************************************************************************/
786 /***********************************************************************************************/
787 /* TimingSignals */
788 /***********************************************************************************************/
789 /***********************************************************************************************/
790
791 /*
792 MAN ttv_GetTimingSignalListByNet
793 CATEG tcl+sig
794 DESCRIPTION
795 Retreives a timing signal list from a net name
796 ARGS
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]}
800 */
801 TimingSignalList *ttv_GetTimingSignalListByNet(TimingFigure *tvf, char *name);
802
803 /*
804 MAN ttv_GetTimingSignal
805 CATEG tcl+sig
806 DESCRIPTION
807 Retreives a timing signal from the timing figure; returns NULL on failure.
808 ARGS
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]}
812 */
813 TimingSignal *ttv_GetTimingSignal(TimingFigure *tvf, char *name);
814
815
816 /*
817 MAN ttv_GetTimingSignalList
818 CATEG tcl+sig
819 DESCRIPTION
820 Retreives a list of timing signals of a given type and location
821 ARGS
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]}
826 */
827 TimingSignalList *ttv_GetTimingSignalList(TimingFigure *tvf, char *type, char *location);
828
829 /*
830 presque redondant avec le ttv_GetTimingSignalList
831 */
832 TimingSignalList *ttv_GetMatchingSignal(TimingFigure *tf, char *name, char *type);
833
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);
843
844 /*
845 MAN ttv_GetClockList
846 CATEG tcl+sig
847 DESCRIPTION
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.
850 ARGS
851 tvf % Pointer on a timing figure
852 EXAMPLE % {set clock_list [ttv_GetClockList $fig]}
853 */
854 extern TimingSignalList *ttv_GetClockList (TimingFigure *tvf);
855
856 /***********************************************************************************************/
857 /***********************************************************************************************/
858 /* TimingSignals Properties */
859 /***********************************************************************************************/
860 /***********************************************************************************************/
861
862 TimingFigure *ttv_GetSignalTopTimingFigure(TimingSignal *tvs);
863
864 /*
865 MAN ttv_GetTimingSignalProperty
866 CATEG tcl+sig
867 DESCRIPTION
868 Returns a property of a timing signal. A Property is a polymorphic type, the returned type depends on the property code.
869 ARGS
870 fig % Pointer on the timing signal
871 code % Property code; for available property codes, see the {TimingSignal} object section
872 */
873 Property *ttv_GetTimingSignalProperty (TimingSignal *fig, char *code);
874
875 /*
876 MAN ttv_GetLatchAccess
877 CATEG tcl+sig
878 DESCRIPTION
879 Returns a latch's intrinsic access delay, from command to latch output
880 ARGS
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]}
887 */
888 double ttv_GetLatchAccess(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command, char *minmax);
889
890 /*
891 MAN ttv_GetLatchSetup
892 CATEG tcl+sig
893 DESCRIPTION
894 Returns a latch's intrinsic setup constraint, from latch input to command
895 ARGS
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]}
902 */
903 double ttv_GetLatchSetup(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command);
904
905 /*
906 MAN ttv_GetLatchHold
907 CATEG tcl+sig
908 DESCRIPTION
909 Returns a latch's intrinsic hold constraint, from latch input to command
910 ARGS
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]}
917 */
918
919 double ttv_GetLatchHold(TimingFigure *tvf, TimingSignal *latch, char dir, TimingSignal *command);
920 int ttv_GetNameIndex(char *sig);
921
922 char *ttv_GetNameRadical(char *sig);
923
924 /*
925 MAN ttv_GetSignalCapaList
926 CATEG tcl+sig
927 DESCRIPTION
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.
929 ARGS
930 tvs % Pointer on the timing signal to consider
931 EXAMPLE % {set capa_list [ttv_GetSignalCapaList]}
932 */
933 DoubleList *ttv_GetSignalCapaList (TimingSignal *tvs);
934
935 /*
936 MAN ttv_GetFullSignalNetName
937 CATEG tcl+sig
938 DESCRIPTION
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.
940 ARGS
941 tvf % Pointer on a timing figure
942 tvs % Pointer on the timing signal to consider
943 EXAMPLE % {set name [ttv_GetFullSignalNetName $fig $sig]}
944 */
945 char *ttv_GetFullSignalNetName(TimingFigure *tvf, TimingSignal *tvs);
946
947 /*
948 MAN ttv_GetFullSignalName
949 CATEG tcl+sig
950 DESCRIPTION
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.
952 ARGS
953 tvf % Pointer on a timing figure
954 tvs % Pointer on the timing signal to consider
955 EXAMPLE % {set name [ttv_GetFullSignalName $fig $sig]}
956 */
957 char *ttv_GetFullSignalName(TimingFigure *tvf, TimingSignal *tvs);
958 char *ttv_GetSignalType(TimingSignal *tvs);
959
960
961
962 /***********************************************************************************************/
963 /***********************************************************************************************/
964 /* TimingEvent */
965 /***********************************************************************************************/
966 /***********************************************************************************************/
967
968 /*
969 MAN ttv_GetTimingEventProperty
970 CATEG tcl+event
971 DESCRIPTION
972 Returns a property of a timing event. A Property is a polymorphic type, the returned type depends on the property code.
973 ARGS
974 ev % Pointer on the timing event
975 code % Property code; for available property codes, see the {TimingEvent} object section
976 */
977
978 Property *ttv_GetTimingEventProperty (TimingEvent *ev, char *code);
979
980 /*
981 MAN ttv_GetLatchCommands
982 CATEG tcl+event
983 DESCRIPTION
984 Returns the list of commands enabling writing in a given latch
985 ARGS
986 ts % Pointer on the latch to consider
987 EXAMPLE % {set com_list [ttv_GetLatchCommands $lt1]}
988 */
989 TimingEventList *ttv_GetLatchCommands(TimingSignal *tvs);
990
991 /*
992 MAN ttv_GetLatchEventCommands
993 CATEG tcl+event
994 DESCRIPTION
995 Returns the list of commands enabling writing of a specific transition in a given latch
996 ARGS
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]}
1000 */
1001 TimingEventList *ttv_GetLatchEventCommands(TimingSignal *tvs, char dir);
1002
1003 TimingSignal *ttv_GetTimingEventSignal(TimingEvent *tve);
1004 char ttv_GetTimingEventDirection(TimingEvent *tve);
1005
1006 /***********************************************************************************************/
1007 /***********************************************************************************************/
1008 /* Path Detail */
1009 /***********************************************************************************************/
1010 /***********************************************************************************************/
1011
1012 char *ttv_AutomaticDetailBuild(char *mode);
1013
1014 TimingDetailList *ttv_GetParallelPathDetail (TimingPath *ta);
1015
1016 /*
1017 MAN ttv_GetPathDetail
1018 CATEG tcl+detail
1019 DESCRIPTION
1020 Returns the list of elementary timing arcs (lines) making up a critical path
1021 ARGS
1022 ta % Pointer on the timing path to consider
1023 EXAMPLE % {set detail [ttv_GetPathDetail $path]}
1024 */
1025 TimingDetailList *ttv_GetPathDetail (TimingPath *ta);
1026 void ttv_FreePathDetail(TimingDetailList *detail);
1027 void ttv_FreeParallelPathDetail(TimingDetailList *detail);
1028
1029 /***********************************************************************************************/
1030 /***********************************************************************************************/
1031 /* Detail Properties */
1032 /***********************************************************************************************/
1033 /***********************************************************************************************/
1034 /*
1035 MAN ttv_GetTimingDetailProperty
1036 CATEG tcl+detail
1037 DESCRIPTION
1038 Returns a property of a timing detail. A Property is a polymorphic type, the returned type depends on the property code.
1039 ARGS
1040 ev % Pointer on the timing detail
1041 code % Property code; for available property codes, see the {TimingDetail} object section
1042 */
1043 Property *ttv_GetTimingDetailProperty (TimingDetail *det, char *property);
1044
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);
1058
1059 /*
1060 MAN xxxttv_GetCrossedTransistorNames
1061 CATEG tcl+detail
1062 DESCRIPTION
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.
1065 ARGS
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
1072 */
1073
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);
1076
1077
1078 /***********************************************************************************************/
1079 /***********************************************************************************************/
1080 /* STDOUT Reports */
1081 /***********************************************************************************************/
1082 /***********************************************************************************************/
1083
1084 /*
1085 MAN ttv_DisplayPathList
1086 CATEG tcl+report
1087 DESCRIPTION
1088 Prints summary information about paths given in a path list
1089 ARGS
1090 tpl % Pointer on a path list
1091 f % File where to save the report, {stdout} for standard output
1092 */
1093 void ttv_DisplayPathList(FILE *f, TimingPathList *tpl);
1094
1095 /*
1096 MAN ttv_DisplayPathListDetail
1097 CATEG tcl+report
1098 DESCRIPTION
1099 Prints detailed information about paths given in a path list
1100 ARGS
1101 tpl % Pointer on a path list
1102 f % File where to save the report, {stdout} for standard output
1103 */
1104 void ttv_DisplayPathListDetail(FILE *f, TimingPathList *tpl);
1105
1106 //void ttv_DisplayPath(FILE *f, int num, TimingPath *tp);
1107
1108 /*
1109 MAN ttv_DisplayPathDetail
1110 CATEG tcl+report
1111 DESCRIPTION
1112 Prints detailed information about a given path
1113 ARGS
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
1117 */
1118 void ttv_DisplayPathDetail(FILE *f, int num, TimingPath *tp);
1119
1120 void ttv_DisplayCompletePathDetail(FILE *f, int num, TimingPath *tp, TimingDetailList *detail);
1121
1122 /*
1123 MAN ttv_DisplayPathDetailShowColumn
1124 CATEG tcl+report
1125 DESCRIPTION
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.
1128 ARGS
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}.
1130 */
1131 void ttv_DisplayPathDetailShowColumn(char *conf);
1132
1133 /*
1134 MAN ttv_DisplayPathDetailHideColumn
1135 CATEG tcl+report
1136 DESCRIPTION
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.
1139 ARGS
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}.
1141 */
1142 void ttv_DisplayPathDetailHideColumn(char *conf);
1143
1144
1145 /*
1146 MAN ttv_DisplayClockPathReport
1147 CATEG tcl+report
1148 DESCRIPTION
1149 Prints a detailed report of timing paths originating from a clock.
1150 ARGS
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
1156 */
1157 void ttv_DisplayClockPathReport(FILE *f, TimingFigure *tf, char *clock, char *minmax, int number);
1158
1159
1160
1161 /*
1162 MAN ttv_DisplayConnectorToLatchMargin
1163 CATEG tcl+report
1164 DESCRIPTION
1165 Prints a report displaying setup and hold constraints on latch points, originating from input connectors (both from rising and falling transitions).
1166 ARGS
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"}
1172 */
1173 void ttv_DisplayConnectorToLatchMargin (FILE *f, TimingFigure *tf, char *inputconnector, char *mode);
1174
1175 /*
1176 MAN ttv_PlotPathDetail
1177 CATEG tcl+report
1178 DESCRIPTION
1179 Plots the waveforms of nodes on a given path.
1180 ARGS
1181 tp % Pointer on a path
1182 f % File where to save the report, {stdout} for standard output
1183 */
1184 void ttv_PlotPathDetail(FILE *f, TimingPath *tp);
1185
1186 void ttv_PlotCompletePathDetail(FILE *f, TimingPath *tp, TimingDetailList *detailchain);
1187
1188 /*
1189 MAN ttv_SetupReport
1190 CATEG tcl+report
1191 DESCRIPTION
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.
1193 ARGS
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).
1195 */
1196 void ttv_SetupReport(char *conf);
1197
1198 /*
1199 MAN ttv_DumpHeader
1200 CATEG tcl+report
1201 DESCRIPTION
1202 Prints information about the given timing figure and the running script
1203 ARGS
1204 f % File where to save the report, {stdout} for standard output
1205 tvf % Pointer on a timing figure
1206 */
1207 void ttv_DumpHeader(FILE *f, TimingFigure *tvf);
1208
1209 /*
1210 MAN ttv_DumpFigure
1211 CATEG tcl+report
1212 SYNOPSIS
1213 ttv_DumpFigure <FILE *f> <TimingFigure *tvf> [type]
1214 DESCRIPTION
1215 Prints a table with the Timing Lines of a TimingFigure.
1216 ARGS
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}.
1220 */
1221 void ttv_DumpFigure(void); // (void) disables the gns wrappers
1222
1223
1224 /***********************************************************************************************/
1225 /***********************************************************************************************/
1226 /* STDOUT Reports */
1227 /***********************************************************************************************/
1228 /***********************************************************************************************/
1229
1230 /*
1231 MAN ttv_SimulatePath
1232 CATEG tcl+sim
1233 SYNOPSIS
1234 ttv_SimulatePath <TimingFigure *tvf> <TimingPath *ta> [-force] [-mc <number>] [-plot]
1235 DESCRIPTION
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.
1237 ARGS
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.
1243
1244 */
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);
1248
1249 /*
1250 MAN ttv_SimulateCharacPathTables
1251 CATEG tcl+sim
1252 DESCRIPTION
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.
1255 ARGS
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]}
1262 */
1263 TimingPathTable *ttv_SimulateCharacPathTables(TimingFigure *tvf, TimingPath *tp, DoubleListTimeValue *slopes, DoubleListCapaValue *capas, int maxsim);
1264
1265 /*
1266 MAN ttv_DriveSpiceDeck
1267 CATEG tcl+sim
1268 DESCRIPTION
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.
1270 ARGS
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
1274 */
1275
1276 int ttv_DriveSpiceDeck(TimingFigure *tvf, TimingPath *path, char *filename);
1277
1278 /*
1279 MAN ttv_DriveSetupHoldSpiceDeck
1280 CATEG tcl+sim
1281 DESCRIPTION
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.
1283 ARGS
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
1288 */
1289
1290 int ttv_DriveSetupHoldSpiceDeck(TimingFigure *tvf, TimingPathList *datapath, TimingPathList *clockpathlist, char *filename);
1291
1292 /*
1293 MAN ttv_DisplayActivateSimulation
1294 CATEG tcl+sim
1295 DESCRIPTION
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}.
1297 ARGS
1298 mode % {yes} or {no} to activate or deactivate spice deck construction and simulation
1299 */
1300 void ttv_DisplayActivateSimulation(char mode);
1301
1302 /*
1303 MAN ttv_GetTimingPathProperty
1304 CATEG tcl+path
1305 DESCRIPTION
1306 Returns a property of a timing path. A Property is a polymorphic type, the returned type depends on the property code.
1307 ARGS
1308 fig % Pointer on the timing path
1309 code % Property code; for available property codes, see the {TimingPath} object section
1310 */
1311 Property *ttv_GetTimingPathProperty (TimingPath *fig, char *code);
1312
1313 /***********************************************************************************************/
1314 /***********************************************************************************************/
1315 /* TimingLines */
1316 /***********************************************************************************************/
1317 /***********************************************************************************************/
1318
1319 /*
1320 MAN ttv_GetLines
1321 CATEG tcl+line
1322 DESCRIPTION
1323 Gets a selection of lines, depending upon configuration.
1324 ARGS
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"]}
1331 */
1332 TimingLineList *ttv_GetLines(TimingFigure *tvf, char *start, char *end, char *dir, char *linetype);
1333
1334 /*
1335 MAN ttv_ComputeLineDelay
1336 CATEG tcl+line
1337 DESCRIPTION
1338 Recomputes a line delay or slope depending on an input slope and an output capacitance.
1339 ARGS
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]}
1346 */
1347 double ttv_ComputeLineDelay(TimingLine *tl, double slope_in, double output_capa, char *delayslope, char *maxmin);
1348
1349 /*
1350 MAN ttv_SetTimingLineDelay
1351 CATEG tcl+line
1352 DESCRIPTION
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.
1355 ARGS
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}
1359 value % new value
1360 EXAMPLE % {ttv_SetTimingLineDelay $line delay max 1e-9]}
1361 */
1362 void ttv_SetTimingLineDelay(TimingLine *tl, char *delayslope, char *maxmin, double value);
1363
1364 /*
1365 MAN ttv_CharacTimingLineModel
1366 CATEG tcl+line
1367 DESCRIPTION
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.
1370 ARGS
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]}
1377 */
1378 DoubleTable *ttv_CharacTimingLineModel(TimingFigure *tf, char *name, DoubleListTimeValue *input_slope, DoubleListCapaValue *output_capa, char *type);
1379
1380 /***********************************************************************************************/
1381 /***********************************************************************************************/
1382 /* TimingLines Properties */
1383 /***********************************************************************************************/
1384 /***********************************************************************************************/
1385
1386 /*
1387 MAN ttv_GetTimingLineProperty
1388 CATEG tcl+line
1389 DESCRIPTION
1390 Returns a property of a timing line. A Property is a polymorphic type, the returned type depends on the property code.
1391 ARGS
1392 tl % Pointer on the timing line
1393 code % Property code; for available property codes, see the {TimingLine} object section
1394 */
1395 Property *ttv_GetTimingLineProperty (TimingLine *tl, char *code);
1396
1397
1398 /***********************************************************************************************/
1399 /***********************************************************************************************/
1400 /* TimingConstraint */
1401 /***********************************************************************************************/
1402 /***********************************************************************************************/
1403
1404 /*
1405 MAN ttv_GetConstraints
1406 CATEG tcl+greybox
1407 DESCRIPTION
1408 Computes the constraints at the interface of a timing figure.
1409 Returns a list of TimingConstraint.
1410 ARGS
1411 tf % Timing figure
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}
1415 */
1416
1417 TimingConstraintList *ttv_GetConstraints (TimingFigure *tf, char *inputconnector, char *towhat);
1418
1419 /*
1420 MAN ttv_FreeConstraints
1421 CATEG tcl+greybox
1422 SYNOPSIS
1423 ttv_FreeConstraints <allobj>
1424 DESCRIPTION
1425 Frees the constraints.
1426 ARGS
1427 allobj % Constraint objects to free
1428 EXAMPLE % {ttv_FreeConstraints $myconstraints}
1429 */
1430 void ttv_FreeConstraints(void); // (void) disables the gns wrappers
1431 void ttv_FreeConstraints_sub(TimingConstraintList *allobj, TimingFigure *tf, int autoclean);
1432
1433
1434 /***********************************************************************************************/
1435 /***********************************************************************************************/
1436 /* TimingConstraint Properties */
1437 /***********************************************************************************************/
1438 /***********************************************************************************************/
1439
1440 /*
1441 MAN ttv_GetTimingConstraintProperty
1442 CATEG tcl+greybox
1443 DESCRIPTION
1444 Returns a property of a timing constraint. A Property is a polymorphic type, the returned type depends on the property code.
1445 ARGS
1446 co % Pointer on the timing constraint
1447 property % Property code; for available property codes, see the {TimingConstraint} object section
1448 */
1449
1450 Property *ttv_GetTimingConstraintProperty (TimingConstraint *co, char *property);
1451
1452 /***********************************************************************************************/
1453 /***********************************************************************************************/
1454 /* UTILITY FUNCTIONS */
1455 /***********************************************************************************************/
1456 /***********************************************************************************************/
1457 /*
1458 MAN ttv_DetectFalseClockPath
1459 CATEG tcl+path
1460 DESCRIPTION
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.
1462 ARGS
1463 tf % Pointer on a timing figure
1464 */
1465 void ttv_DetectFalseClockPath(TimingFigure *tf);
1466
1467 /*
1468 MAN ttv_DetectFalsePath
1469 CATEG tcl+path
1470 DESCRIPTION
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.
1472 ARGS
1473 tf % Pointer on a timing figure
1474 start % Name of the starting point
1475 end % Name of the ending point
1476 */
1477 void ttv_DetectFalsePath(TimingFigure *tvf, char *start, char *end);
1478
1479 /***********************************************************************************************/
1480 /***********************************************************************************************/
1481 /* DATABASE GENERATION */
1482 /***********************************************************************************************/
1483 /***********************************************************************************************/
1484
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);
1495
1496 /***********************************************************************************************/
1497 /***********************************************************************************************/
1498 /* NOT COMMENTED ON PURPOSE / OBSOLETE */
1499 /***********************************************************************************************/
1500 /***********************************************************************************************/
1501
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 );
1520
1521 // devel
1522
1523 /*
1524 MAN ttv_LoadSDF
1525 CATEG tcl+sdf
1526 DESCRIPTION
1527 Constructs a timing figure from a netlist and an SDF file. The netlist must have been constructed before (related files loaded)
1528 ARGS
1529 fig % Pointer on a netlist
1530 sdf_file % Name of the corresponding SDF file
1531 */
1532 TimingFigure *ttv_LoadSDF (Netlist *fig, char *sdf_file);
1533
1534 TimingPathList *ttv_ProbeDelay_v2(TimingFigure *tvf, double slopein, char *start, char *end, char *dir, int nbpath, char *minmax);
1535
1536
1537 /*
1538 MAN ttv_GetGeneratedClockPaths
1539 CATEG tcl+path
1540 DESCRIPTION
1541 Gets the path list from a top level clock to the specified generated clock timing event.
1542 ARGS
1543 tvf % Timing figure
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]}
1547 */
1548 TimingPathList *ttv_GetGeneratedClockPaths(TimingFigure *tvf, TimingEvent *tve, char *minmax);
1549
1550 char *ttv_GetClockInfos(TimingFigure *tvf, char *name, char *minmax);
1551
1552 /*
1553 MAN ttv_SetTimingFigureName
1554 CATEG tcl+generation
1555 DESCRIPTION
1556 Change the name of a timing figure.
1557 ARGS
1558 tvf % Figure to be changed
1559 name % New figure name
1560 */
1561
1562 void ttv_SetTimingFigureName(TimingFigure *tvf, char *name);
1563 void ttv_SetFigureFlag(TimingFigure *tvf, char *mode);
1564
1565 /*
1566 MAN ttv_Simulate_AddDelayToVT
1567 CATEG tcl+sim
1568 DESCRIPTION
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
1572 is done.
1573 ARGS
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}.
1577 */
1578 void ttv_Simulate_AddDelayToVT(TimingFigure *tvf, TimingPath *pth, TimingEvent *latch);
1579
1580 /*
1581 MAN ttv_Simulate_FoundSolutions
1582 CATEG tcl+sim
1583 DESCRIPTION
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.
1588 */
1589 int ttv_Simulate_FoundSolutions();
1590
1591
1592
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);
1599