1 /******************************************************************************\
3 * Alliance VLSI CAD system *
5 * / \ / \ Laboratoire LIP6 - Département ASIM *
6 * / / \ Universite Paris 6 - Pierre et Marie Curie *
8 * \ \ +---+ Address : LIP6 *
9 * \ / / 4, place Jussieu *
10 * \ / \ / 75252 Paris Cedex 05 *
12 * Web : www-asim.lip6.fr *
13 * Support : alliance-support@lip6.fr *
15 ********************************************************************************
18 * Author(s) : AVOT Gregoire *
19 * Last update : 20 Mai 1998 *
21 *******************************************************************************/
30 float TLC_COEF_CTC
= 1.0;
31 float TLC_MAXSCALE_CAPAFACTOR
= 1.0;
32 float TLC_MINSCALE_CAPAFACTOR
= 1.0;
33 float TLC_MAXSCALE_RESIFACTOR
= 1.0;
34 float TLC_MINSCALE_RESIFACTOR
= 1.0;
35 float TLC_CAPAFACTOR
= 1.0;
36 float TLC_RESIFACTOR
= 1.0;
38 inline void tlc_setmaxfactor()
40 TLC_RESIFACTOR
= TLC_MAXSCALE_RESIFACTOR
;
41 TLC_CAPAFACTOR
= TLC_MAXSCALE_CAPAFACTOR
;
44 inline void tlc_setminfactor()
46 TLC_RESIFACTOR
= TLC_MINSCALE_RESIFACTOR
;
47 TLC_CAPAFACTOR
= TLC_MINSCALE_CAPAFACTOR
;
50 inline float tlc_getcapafactor()
52 return(TLC_CAPAFACTOR
) ;
55 inline float tlc_getresifactor()
57 return(TLC_RESIFACTOR
) ;
62 TLC_MAXSCALE_CAPAFACTOR
= V_FLOAT_TAB
[__TAS_MAXSCALE_CAPAFACTOR
].VALUE
;
64 TLC_MINSCALE_CAPAFACTOR
= V_FLOAT_TAB
[__TAS_MINSCALE_CAPAFACTOR
].VALUE
;
66 TLC_MAXSCALE_RESIFACTOR
= V_FLOAT_TAB
[__TAS_MAXSCALE_RESIFACTOR
].VALUE
;
68 TLC_MINSCALE_RESIFACTOR
= V_FLOAT_TAB
[__TAS_MINSCALE_RESIFACTOR
].VALUE
;
71 tlc_loconparam
*HEAP_PRM
= NULL
;
74 void tlc_mergecapa( dst
, src
)
78 tlc_loconparam
*tlcdst
;
79 tlc_loconparam
*tlcsrc
;
81 tlcdst
= tlc_getloconparam( dst
);
82 tlcsrc
= tlc_getloconparam( src
);
86 tlc_setloconparam( dst
, 0.0 );
87 tlcdst
= tlc_getloconparam( dst
);
91 tlc_replaceloconparam( dst
, tlcsrc
->CAPA
+ tlcdst
->CAPA
);
94 void tlc_setloconparam( ptlocon
, c
)
98 tlc_loconparam
*newprm
;
102 if( getptype( ptlocon
->USER
, TLC_LOCONPRM
) )
105 fprintf( stderr
, "*** TLC error *** in tlc_setloconparam\n" );
107 "connector %s have already electrical parameters\n",
116 HEAP_PRM
=(tlc_loconparam
*)mbkalloc( sizeof(tlc_loconparam
)*MAX_HEAP_PRM
);
119 for(i
=1;i
<MAX_HEAP_PRM
;i
++)
121 newprm
->NEXT
=newprm
+1;
128 HEAP_PRM
=HEAP_PRM
->NEXT
;
133 ptlocon
->USER
=addptype(ptlocon
->USER
, TLC_LOCONPRM
,newprm
);
136 tlc_loconparam
* tlc_getloconparam( ptlocon
)
141 pt
=getptype(ptlocon
->USER
,TLC_LOCONPRM
);
144 return((tlc_loconparam
*)(pt
->DATA
));
149 void tlc_delloconparam( ptl
)
155 ptype
= getptype( ptl
->USER
, TLC_LOCONPRM
);
159 pt
= (tlc_loconparam
*)ptype
->DATA
;
163 ptl
->USER
= delptype( ptl
->USER
, TLC_LOCONPRM
) ;
166 void tlc_replaceloconparam( ptcon
, c
)
173 pt
= getptype( ptcon
->USER
, TLC_LOCONPRM
);
178 fprintf( stderr
, "*** TLC error *** in tlc_replaceloconparam()\n" );
180 "No electrical parameter on locon %s\n",
186 prm
= (tlc_loconparam
*)(pt
->DATA
);
191 void tlc_setlosigalim( ptsig
)
196 pt
= getptype( ptsig
->USER
, TLC_ALIM
);
200 ptsig
->USER
= addptype( ptsig
->USER
, TLC_ALIM
, NULL
);
203 void tlc_resetsigalim( ptsig
)
209 pt
= getptype( ptsig
->USER
, TLC_ALIM
);
214 fprintf( stderr
, "*** TLC error *** in tlc_resetsigalim()\n" );
215 fprintf( stderr
, "Signal is not typed alim.\n" );
220 ptsig
->USER
= delptype( ptsig
->USER
, TLC_ALIM
);
223 int tlc_islosigalim( ptsig
)
226 if( getptype( ptsig
->USER
, TLC_ALIM
) )