3 elpmodel_list *LIST_ELPMODEL = NULL ;
4 elpmodel_list LIST_ELPMODEL_S ;
5 static char *NNAME = NULL ;
6 static char *PNAME = NULL ;
7 static int newformat = 0 ;
8 static int oldformat = 0 ;
11 int elpEsimLevel = 0 ;
24 %token T_TECNAME T_TECVER T_LMLT T_WMLT T_DL T_DW T_DLC T_DWC T_DWCJ
25 %token T_ESIM T_MODEL T_TECHNO T_ELEVEL T_LEVEL
26 %token T_ACM T_TEMP T_SLOPE T_VDDmax T_VDDBEST T_VDDWORST
27 %token T_DTHR T_SLTHR T_SHTHR T_VTHR
28 %token T_VDDdeg T_VSSdeg T_VDEG T_VTI
30 %token T_LMIN T_LMAX T_WMIN T_WMAX
31 %token T_VT T_VT0 T_KT T_A T_B T_RT T_RS T_KRT T_KRS T_KS T_KR T_M
32 %token T_RACCS T_RACCD
33 %token T_MULU0 T_DELVT0 T_SA T_SB T_SD T_VBULK T_NF T_NRS T_NRD T_SC T_SCA T_SCB T_SCC
34 %token T_CGS T_CGS0 T_CGP T_CGD T_CGD0 T_CGD1 T_CGD2 T_CGDC T_CGDC0 T_CGDC1 T_CGDC2 T_CGSI T_CGSIC T_CGSU T_CGSU0 T_CGSD T_CGSD0
35 %token T_CGSUMIN T_CGSUMAX T_CGSDMIN T_CGSDMAX
36 %token T_CGPUMIN T_CGPUMAX T_CGPDMIN T_CGPDMAX
37 %token T_CDS T_CDSU T_CDSD T_CDP T_CDPU T_CDPD T_CDW T_CDWU T_CDWD
38 %token T_CSS T_CSSU T_CSSD T_CSP T_CSPU T_CSPD T_CSW T_CSWU T_CSWD
40 %token T_MOS T_NMOS T_PMOS
41 %token T_CASE T_WORST T_BEST T_TYPICAL
44 /* token pour ancien format ELP */
45 %token T_DLN T_DLP T_DWN T_DWP T_VTN T_BN T_AN T_RNT
46 %token T_VTP T_BP T_AP T_RPT T_CGSN T_CGSP T_CGPN T_CGPP
47 %token T_CDSN T_CDSP T_CDPN T_CDPP T_CDWN T_CDWP
48 %token T_CSSN T_CSSP T_CSPN T_CSPP T_CSWN T_CSWP
49 %token T_NNAME T_PNAME
51 %token <elpstr> T_STRING
52 %token <elpdbl> T_NUMBER
54 %type <elpstr> trans_name
55 %type <elpint> trans_type
56 %type <elpint> trans_index
57 %type <elpint> trans_techno
64 elp : T_TECNAME ':' T_STRING T_TECVER ':' number
66 strcpy(elpTechnoName,$3) ;
67 elpTechnoVersion = $6 ;
72 LIST_ELPMODEL = NULL ;
89 | param_list sim_param
107 fprintf(stderr, "\nFile %s contains differents elp format!!!\n", elpTechnoName) ;
114 fprintf(stderr, "\nFile %s contains differents elp format!!!\n", elpTechnoName) ;
120 name_sim : T_ESIM '=' T_STRING
122 strcpy(elpEsimName,$3) ;
126 trans_model : T_MODEL '=' T_MOS
131 trans_techno : T_TECHNO '=' number
136 level : T_LEVEL '=' number
139 fprintf(stderr, "\nWarning : File %s is an obsolete format.", elpTechnoName );
143 valim : T_VDDmax '=' number
145 elpGeneral[elpGVDDMAX] = $3 ;
147 | T_VDDBEST '=' number
149 elpGeneral[elpGVDDBEST] = $3 ;
151 | T_VDDWORST '=' number
153 elpGeneral[elpGVDDWORST] = $3 ;
157 vseuil : T_VTHR '=' number
159 elpGeneral[elpGDTHR] = $3 / elpGeneral[elpGVDDMAX] ;
163 dseuil : T_DTHR '=' number
165 elpGeneral[elpGDTHR] = $3 ;
169 shseuil : T_SHTHR '=' number
171 elpGeneral[elpGSHTHR] = $3 ;
175 slseuil : T_SLTHR '=' number
177 elpGeneral[elpGSLTHR] = $3 ;
181 slope : T_SLOPE '=' number
183 elpGeneral[elpSLOPE] = $3 ;
187 acm : T_ACM '=' number
189 elpGeneral[elpACM] = $3 ;
193 temp : T_TEMP '=' number
195 elpGeneral[elpTEMP] = $3 ;
199 setmodels : T_BEGIN trans_name trans_index trans_techno trans_type
201 LIST_ELPMODEL_S.elpModelName = namealloc($2) ;
202 LIST_ELPMODEL_S.elpModelNameAlias = NULL ;
203 LIST_ELPMODEL_S.elpTransIndex = $3 ;
204 LIST_ELPMODEL_S.elpTransTechno = $4 ;
205 LIST_ELPMODEL_S.elpTransType = $5 ;
206 LIST_ELPMODEL_S.elpTransModel = elpMOS ;
207 LIST_ELPMODEL_S.elpTransCase = elpTYPICAL ;
208 LIST_ELPMODEL_S.elpTemp = ELPINITTEMP ;
209 LIST_ELPMODEL_S.elpRange[elpLMIN] = (long)0 ;
210 LIST_ELPMODEL_S.elpRange[elpLMAX] = ELPMAXLONG ;
211 LIST_ELPMODEL_S.elpRange[elpWMIN] = (long)0 ;
212 LIST_ELPMODEL_S.elpRange[elpWMAX] = ELPMAXLONG ;
213 LIST_ELPMODEL_S.elpShrink[elpLMLT] = 1.0 ;
214 LIST_ELPMODEL_S.elpShrink[elpWMLT] = 1.0 ;
215 LIST_ELPMODEL_S.elpShrink[elpDL] = 0.0 ;
216 LIST_ELPMODEL_S.elpShrink[elpDW] = 0.0 ;
217 LIST_ELPMODEL_S.elpShrink[elpDLC] = 0.0 ;
218 LIST_ELPMODEL_S.elpShrink[elpDWC] = 0.0 ;
219 LIST_ELPMODEL_S.elpShrink[elpDWCJ] = 0.0 ;
220 LIST_ELPMODEL_S.elpModel[elpVT] = 0.0 ;
221 LIST_ELPMODEL_S.elpModel[elpVT0] = 0.0 ;
222 LIST_ELPMODEL_S.elpVoltage[elpVBULK] = ELPINITVBULK;
223 LIST_ELPMODEL_S.elpModel[elpMULU0] = 1.0 ;
224 LIST_ELPMODEL_S.elpModel[elpM] = 1.0 ;
225 LIST_ELPMODEL_S.elpModel[elpDELVT0] = 0.0 ;
226 LIST_ELPMODEL_S.elpModel[elpSA] = ELPINITVALUE;
227 LIST_ELPMODEL_S.elpModel[elpSB] = ELPINITVALUE;
228 LIST_ELPMODEL_S.elpModel[elpSD] = ELPINITVALUE;
229 LIST_ELPMODEL_S.elpModel[elpSCA] = ELPINITVALUE;
230 LIST_ELPMODEL_S.elpModel[elpSCB] = ELPINITVALUE;
231 LIST_ELPMODEL_S.elpModel[elpSCC] = ELPINITVALUE;
232 LIST_ELPMODEL_S.elpModel[elpSC] = ELPINITVALUE;
233 LIST_ELPMODEL_S.elpModel[elpNF] = 1.0 ;
234 LIST_ELPMODEL_S.elpModel[elpKT] = 0.0 ;
235 LIST_ELPMODEL_S.elpModel[elpA] = 0.0 ;
236 LIST_ELPMODEL_S.elpModel[elpB] = 0.0 ;
237 LIST_ELPMODEL_S.elpModel[elpRT] = 0.0 ;
238 LIST_ELPMODEL_S.elpModel[elpRS] = 0.0 ;
239 LIST_ELPMODEL_S.elpModel[elpKS] = 1.0 ;
240 LIST_ELPMODEL_S.elpModel[elpKR] = 1.0 ;
241 LIST_ELPMODEL_S.elpVoltage[elpVDEG] = ELPMINVOLTAGE ;
242 LIST_ELPMODEL_S.elpVoltage[elpVTI] = ELPMINVOLTAGE ;
243 LIST_ELPMODEL_S.elpVoltage[elpVDDMAX] = ELPMINVOLTAGE ;
244 LIST_ELPMODEL_S.elpCapa[elpCGS] = 0.0 ;
245 LIST_ELPMODEL_S.elpCapa[elpCGS0] = 0.0 ;
246 LIST_ELPMODEL_S.elpCapa[elpCGSU] = 0.0 ;
247 LIST_ELPMODEL_S.elpCapa[elpCGSU0] = 0.0 ;
248 LIST_ELPMODEL_S.elpCapa[elpCGSUMIN] = 0.0 ;
249 LIST_ELPMODEL_S.elpCapa[elpCGSUMAX] = 0.0 ;
250 LIST_ELPMODEL_S.elpCapa[elpCGSD] = 0.0 ;
251 LIST_ELPMODEL_S.elpCapa[elpCGSD0] = 0.0 ;
252 LIST_ELPMODEL_S.elpCapa[elpCGSDMIN] = 0.0 ;
253 LIST_ELPMODEL_S.elpCapa[elpCGSDMAX] = 0.0 ;
254 LIST_ELPMODEL_S.elpCapa[elpCGP] = 0.0 ;
255 LIST_ELPMODEL_S.elpCapa[elpCGPUMIN] = 0.0 ;
256 LIST_ELPMODEL_S.elpCapa[elpCGPUMAX] = 0.0 ;
257 LIST_ELPMODEL_S.elpCapa[elpCGPDMIN] = 0.0 ;
258 LIST_ELPMODEL_S.elpCapa[elpCGPDMAX] = 0.0 ;
259 LIST_ELPMODEL_S.elpCapa[elpCGD] = 0.0 ;
260 LIST_ELPMODEL_S.elpCapa[elpCGD0] = 0.0 ;
261 LIST_ELPMODEL_S.elpCapa[elpCGD1] = 0.0 ;
262 LIST_ELPMODEL_S.elpCapa[elpCGD2] = 0.0 ;
263 LIST_ELPMODEL_S.elpCapa[elpCGDC] = 0.0 ;
264 LIST_ELPMODEL_S.elpCapa[elpCGDC0] = 0.0 ;
265 LIST_ELPMODEL_S.elpCapa[elpCGDC1] = 0.0 ;
266 LIST_ELPMODEL_S.elpCapa[elpCGDC2] = 0.0 ;
267 LIST_ELPMODEL_S.elpCapa[elpCGSI] = 0.0 ;
268 LIST_ELPMODEL_S.elpCapa[elpCGSIC] = 0.0 ;
269 LIST_ELPMODEL_S.elpCapa[elpCDS] = 0.0 ;
270 LIST_ELPMODEL_S.elpCapa[elpCDSU] = 0.0 ;
271 LIST_ELPMODEL_S.elpCapa[elpCDSD] = 0.0 ;
272 LIST_ELPMODEL_S.elpCapa[elpCDP] = 0.0 ;
273 LIST_ELPMODEL_S.elpCapa[elpCDPU] = 0.0 ;
274 LIST_ELPMODEL_S.elpCapa[elpCDPD] = 0.0 ;
275 LIST_ELPMODEL_S.elpCapa[elpCDW] = 0.0 ;
276 LIST_ELPMODEL_S.elpCapa[elpCDWU] = 0.0 ;
277 LIST_ELPMODEL_S.elpCapa[elpCDWD] = 0.0 ;
278 LIST_ELPMODEL_S.elpCapa[elpCSS] = 0.0 ;
279 LIST_ELPMODEL_S.elpCapa[elpCSSU] = 0.0 ;
280 LIST_ELPMODEL_S.elpCapa[elpCSSD] = 0.0 ;
281 LIST_ELPMODEL_S.elpCapa[elpCSP] = 0.0 ;
282 LIST_ELPMODEL_S.elpCapa[elpCSPU] = 0.0 ;
283 LIST_ELPMODEL_S.elpCapa[elpCSPD] = 0.0 ;
284 LIST_ELPMODEL_S.elpCapa[elpCSW] = 0.0 ;
285 LIST_ELPMODEL_S.elpCapa[elpCSWU] = 0.0 ;
286 LIST_ELPMODEL_S.elpCapa[elpCSWD] = 0.0 ;
287 LIST_ELPMODEL_S.elpCapa[elpCGPO] = 0.0 ;
288 LIST_ELPMODEL_S.elpCapa[elpCGPOC] = 0.0 ;
289 LIST_ELPMODEL_S.elpRacc[elpRACCS] = 0.0 ;
290 LIST_ELPMODEL_S.elpRacc[elpRACCD] = 0.0 ;
292 mccvars T_END trans_name trans_index
294 LIST_ELPMODEL = elpAddModel(LIST_ELPMODEL_S.elpModelName,
295 LIST_ELPMODEL_S.elpModelNameAlias,
296 LIST_ELPMODEL_S.elpTransType ,
297 LIST_ELPMODEL_S.elpTransIndex ,
298 LIST_ELPMODEL_S.elpRange[elpLMIN],
299 LIST_ELPMODEL_S.elpRange[elpLMAX],
300 LIST_ELPMODEL_S.elpRange[elpWMIN],
301 LIST_ELPMODEL_S.elpRange[elpWMAX],
302 LIST_ELPMODEL_S.elpShrink[elpDL],
303 LIST_ELPMODEL_S.elpShrink[elpDW],
304 LIST_ELPMODEL_S.elpShrink[elpLMLT],
305 LIST_ELPMODEL_S.elpShrink[elpWMLT],
306 LIST_ELPMODEL_S.elpVoltage[elpVDDMAX],
307 LIST_ELPMODEL_S.elpTransCase,
308 LIST_ELPMODEL_S.elpTransTechno ,
309 LIST_ELPMODEL_S.elpModel[elpMULU0],
310 LIST_ELPMODEL_S.elpModel[elpDELVT0],
311 LIST_ELPMODEL_S.elpModel[elpSA],
312 LIST_ELPMODEL_S.elpModel[elpSB],
313 LIST_ELPMODEL_S.elpModel[elpSD],
314 LIST_ELPMODEL_S.elpModel[elpNF],
315 LIST_ELPMODEL_S.elpModel[elpM],
316 LIST_ELPMODEL_S.elpModel[elpNRS],
317 LIST_ELPMODEL_S.elpModel[elpNRD],
318 LIST_ELPMODEL_S.elpVoltage[elpVBULK],
319 LIST_ELPMODEL_S.elpModel[elpSC],
320 LIST_ELPMODEL_S.elpModel[elpSCA],
321 LIST_ELPMODEL_S.elpModel[elpSCB],
322 LIST_ELPMODEL_S.elpModel[elpSCC],
325 if( LIST_ELPMODEL_S.elpTemp < ELPMINTEMP)
326 LIST_ELPMODEL->elpTemp = elpGeneral[elpTEMP] ;
328 LIST_ELPMODEL->elpTemp = LIST_ELPMODEL_S.elpTemp ;
330 LIST_ELPMODEL->elpTransModel = LIST_ELPMODEL_S.elpTransModel ;
332 LIST_ELPMODEL->elpShrink[elpDLC] = LIST_ELPMODEL_S.elpShrink[elpDLC] ;
333 LIST_ELPMODEL->elpShrink[elpDWC] = LIST_ELPMODEL_S.elpShrink[elpDWC] ;
334 LIST_ELPMODEL->elpShrink[elpDWCJ] = LIST_ELPMODEL_S.elpShrink[elpDWCJ] ;
335 LIST_ELPMODEL->elpModel[elpVT] = LIST_ELPMODEL_S.elpModel[elpVT] ;
336 LIST_ELPMODEL->elpModel[elpVT0] = LIST_ELPMODEL_S.elpModel[elpVT0] ;
337 LIST_ELPMODEL->elpModel[elpMULU0] = LIST_ELPMODEL_S.elpModel[elpMULU0] ;
338 LIST_ELPMODEL->elpModel[elpDELVT0] = LIST_ELPMODEL_S.elpModel[elpDELVT0] ;
339 LIST_ELPMODEL->elpModel[elpSA] = LIST_ELPMODEL_S.elpModel[elpSA] ;
340 LIST_ELPMODEL->elpModel[elpSB] = LIST_ELPMODEL_S.elpModel[elpSB] ;
341 LIST_ELPMODEL->elpModel[elpSD] = LIST_ELPMODEL_S.elpModel[elpSD] ;
342 LIST_ELPMODEL->elpModel[elpNF] = LIST_ELPMODEL_S.elpModel[elpNF] ;
343 LIST_ELPMODEL->elpModel[elpNRS] = LIST_ELPMODEL_S.elpModel[elpNRS] ;
344 LIST_ELPMODEL->elpModel[elpNRD] = LIST_ELPMODEL_S.elpModel[elpNRD] ;
345 LIST_ELPMODEL->elpModel[elpKT] = LIST_ELPMODEL_S.elpModel[elpKT] ;
346 LIST_ELPMODEL->elpModel[elpA] = LIST_ELPMODEL_S.elpModel[elpA] ;
347 LIST_ELPMODEL->elpModel[elpM] = LIST_ELPMODEL_S.elpModel[elpM] ;
348 LIST_ELPMODEL->elpModel[elpB] = LIST_ELPMODEL_S.elpModel[elpB] ;
349 LIST_ELPMODEL->elpModel[elpRT] = LIST_ELPMODEL_S.elpModel[elpRT] ;
350 LIST_ELPMODEL->elpModel[elpRS] = LIST_ELPMODEL_S.elpModel[elpRS] ;
351 LIST_ELPMODEL->elpModel[elpKS] = LIST_ELPMODEL_S.elpModel[elpKS] ;
352 LIST_ELPMODEL->elpModel[elpKR] = LIST_ELPMODEL_S.elpModel[elpKR] ;
353 LIST_ELPMODEL->elpVoltage[elpVDEG] = LIST_ELPMODEL_S.elpVoltage[elpVDEG] ;
354 LIST_ELPMODEL->elpVoltage[elpVTI] = LIST_ELPMODEL_S.elpVoltage[elpVTI] ;
355 if(LIST_ELPMODEL_S.elpVoltage[elpVDDMAX] < 0.0) {
356 LIST_ELPMODEL->elpVoltage[elpVDDMAX] = elpGeneral[elpGVDDMAX] ;
359 LIST_ELPMODEL->elpVoltage[elpVDDMAX] = LIST_ELPMODEL_S.elpVoltage[elpVDDMAX] ;
360 LIST_ELPMODEL->elpVoltage[elpVBULK] = LIST_ELPMODEL_S.elpVoltage[elpVBULK] ;
361 if (LIST_ELPMODEL_S.elpVoltage[elpVBULK] < ELPMINVBULK) {
362 if ( LIST_ELPMODEL_S.elpTransType == elpNMOS )
363 LIST_ELPMODEL->elpVoltage[elpVBULK] = 0.0;
365 LIST_ELPMODEL->elpVoltage[elpVBULK] = LIST_ELPMODEL_S.elpVoltage[elpVDDMAX];
367 LIST_ELPMODEL->elpCapa[elpCGS] = LIST_ELPMODEL_S.elpCapa[elpCGS] ;
368 LIST_ELPMODEL->elpCapa[elpCGS0] = LIST_ELPMODEL_S.elpCapa[elpCGS0] ;
369 LIST_ELPMODEL->elpCapa[elpCGSU] = LIST_ELPMODEL_S.elpCapa[elpCGSU] ;
370 LIST_ELPMODEL->elpCapa[elpCGSU0] = LIST_ELPMODEL_S.elpCapa[elpCGSU0] ;
371 LIST_ELPMODEL->elpCapa[elpCGSUMIN] = LIST_ELPMODEL_S.elpCapa[elpCGSUMIN] ;
372 LIST_ELPMODEL->elpCapa[elpCGSUMAX] = LIST_ELPMODEL_S.elpCapa[elpCGSUMAX] ;
373 LIST_ELPMODEL->elpCapa[elpCGSD] = LIST_ELPMODEL_S.elpCapa[elpCGSD] ;
374 LIST_ELPMODEL->elpCapa[elpCGSD0] = LIST_ELPMODEL_S.elpCapa[elpCGSD0] ;
375 LIST_ELPMODEL->elpCapa[elpCGSDMIN] = LIST_ELPMODEL_S.elpCapa[elpCGSDMIN] ;
376 LIST_ELPMODEL->elpCapa[elpCGSDMAX] = LIST_ELPMODEL_S.elpCapa[elpCGSDMAX] ;
377 LIST_ELPMODEL->elpCapa[elpCGP] = LIST_ELPMODEL_S.elpCapa[elpCGP] ;
378 LIST_ELPMODEL->elpCapa[elpCGPUMIN] = LIST_ELPMODEL_S.elpCapa[elpCGPUMIN];
379 LIST_ELPMODEL->elpCapa[elpCGPUMAX] = LIST_ELPMODEL_S.elpCapa[elpCGPUMAX];
380 LIST_ELPMODEL->elpCapa[elpCGPDMIN] = LIST_ELPMODEL_S.elpCapa[elpCGPDMIN];
381 LIST_ELPMODEL->elpCapa[elpCGPDMAX] = LIST_ELPMODEL_S.elpCapa[elpCGPDMAX];
382 LIST_ELPMODEL->elpCapa[elpCGD] = LIST_ELPMODEL_S.elpCapa[elpCGD] ;
383 LIST_ELPMODEL->elpCapa[elpCGD0] = LIST_ELPMODEL_S.elpCapa[elpCGD0] ;
384 LIST_ELPMODEL->elpCapa[elpCGD1] = LIST_ELPMODEL_S.elpCapa[elpCGD1] ;
385 LIST_ELPMODEL->elpCapa[elpCGD2] = LIST_ELPMODEL_S.elpCapa[elpCGD2] ;
386 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGDC]) == 0) {
387 LIST_ELPMODEL->elpCapa[elpCGDC] = LIST_ELPMODEL_S.elpCapa[elpCGD] ;
388 LIST_ELPMODEL->elpCapa[elpCGDC0] = LIST_ELPMODEL_S.elpCapa[elpCGD0] ;
389 LIST_ELPMODEL->elpCapa[elpCGDC1] = LIST_ELPMODEL_S.elpCapa[elpCGD1] ;
390 LIST_ELPMODEL->elpCapa[elpCGDC2] = LIST_ELPMODEL_S.elpCapa[elpCGD2] ;
393 LIST_ELPMODEL->elpCapa[elpCGDC] = LIST_ELPMODEL_S.elpCapa[elpCGDC] ;
394 LIST_ELPMODEL->elpCapa[elpCGDC0] = LIST_ELPMODEL_S.elpCapa[elpCGDC0] ;
395 LIST_ELPMODEL->elpCapa[elpCGDC1] = LIST_ELPMODEL_S.elpCapa[elpCGDC1] ;
396 LIST_ELPMODEL->elpCapa[elpCGDC2] = LIST_ELPMODEL_S.elpCapa[elpCGDC2] ;
398 LIST_ELPMODEL->elpCapa[elpCGSI] = LIST_ELPMODEL_S.elpCapa[elpCGSI] ;
399 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSIC]) == 0)
400 LIST_ELPMODEL->elpCapa[elpCGSIC] = LIST_ELPMODEL_S.elpCapa[elpCGSI] ;
402 LIST_ELPMODEL->elpCapa[elpCGSIC] = LIST_ELPMODEL_S.elpCapa[elpCGSIC] ;
405 LIST_ELPMODEL->elpCapa[elpCDS] = LIST_ELPMODEL_S.elpCapa[elpCDS] ;
406 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDSU]) == 0)
407 LIST_ELPMODEL->elpCapa[elpCDSU] = LIST_ELPMODEL_S.elpCapa[elpCDS] ;
409 LIST_ELPMODEL->elpCapa[elpCDSU] = LIST_ELPMODEL_S.elpCapa[elpCDSU] ;
410 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDSD]) == 0)
411 LIST_ELPMODEL->elpCapa[elpCDSD] = LIST_ELPMODEL_S.elpCapa[elpCDS] ;
413 LIST_ELPMODEL->elpCapa[elpCDSD] = LIST_ELPMODEL_S.elpCapa[elpCDSD] ;
416 LIST_ELPMODEL->elpCapa[elpCDP] = LIST_ELPMODEL_S.elpCapa[elpCDP] ;
417 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDPU]) == 0)
418 LIST_ELPMODEL->elpCapa[elpCDPU] = LIST_ELPMODEL_S.elpCapa[elpCDP] ;
420 LIST_ELPMODEL->elpCapa[elpCDPU] = LIST_ELPMODEL_S.elpCapa[elpCDPU] ;
421 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDPD]) == 0)
422 LIST_ELPMODEL->elpCapa[elpCDPD] = LIST_ELPMODEL_S.elpCapa[elpCDP] ;
424 LIST_ELPMODEL->elpCapa[elpCDPD] = LIST_ELPMODEL_S.elpCapa[elpCDPD] ;
427 LIST_ELPMODEL->elpCapa[elpCDW] = LIST_ELPMODEL_S.elpCapa[elpCDW] ;
428 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDWU]) == 0)
429 LIST_ELPMODEL->elpCapa[elpCDWU] = LIST_ELPMODEL_S.elpCapa[elpCDW] ;
431 LIST_ELPMODEL->elpCapa[elpCDWU] = LIST_ELPMODEL_S.elpCapa[elpCDWU] ;
432 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCDWD]) == 0)
433 LIST_ELPMODEL->elpCapa[elpCDWD] = LIST_ELPMODEL_S.elpCapa[elpCDW] ;
435 LIST_ELPMODEL->elpCapa[elpCDWD] = LIST_ELPMODEL_S.elpCapa[elpCDWD] ;
438 LIST_ELPMODEL->elpCapa[elpCSS] = LIST_ELPMODEL_S.elpCapa[elpCSS] ;
439 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSSU]) == 0)
440 LIST_ELPMODEL->elpCapa[elpCSSU] = LIST_ELPMODEL_S.elpCapa[elpCSS] ;
442 LIST_ELPMODEL->elpCapa[elpCSSU] = LIST_ELPMODEL_S.elpCapa[elpCSSU] ;
443 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSSD]) == 0)
444 LIST_ELPMODEL->elpCapa[elpCSSD] = LIST_ELPMODEL_S.elpCapa[elpCSS] ;
446 LIST_ELPMODEL->elpCapa[elpCSSD] = LIST_ELPMODEL_S.elpCapa[elpCSSD] ;
449 LIST_ELPMODEL->elpCapa[elpCSP] = LIST_ELPMODEL_S.elpCapa[elpCSP] ;
450 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSPU]) == 0)
451 LIST_ELPMODEL->elpCapa[elpCSPU] = LIST_ELPMODEL_S.elpCapa[elpCSP] ;
453 LIST_ELPMODEL->elpCapa[elpCSPU] = LIST_ELPMODEL_S.elpCapa[elpCSPU] ;
454 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSPD]) == 0)
455 LIST_ELPMODEL->elpCapa[elpCSPD] = LIST_ELPMODEL_S.elpCapa[elpCSP] ;
457 LIST_ELPMODEL->elpCapa[elpCSPD] = LIST_ELPMODEL_S.elpCapa[elpCSPD] ;
460 LIST_ELPMODEL->elpCapa[elpCSW] = LIST_ELPMODEL_S.elpCapa[elpCSW] ;
461 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSWU]) == 0)
462 LIST_ELPMODEL->elpCapa[elpCSWU] = LIST_ELPMODEL_S.elpCapa[elpCSW] ;
464 LIST_ELPMODEL->elpCapa[elpCSWU] = LIST_ELPMODEL_S.elpCapa[elpCSWU] ;
465 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCSWD]) == 0)
466 LIST_ELPMODEL->elpCapa[elpCSWD] = LIST_ELPMODEL_S.elpCapa[elpCSW] ;
468 LIST_ELPMODEL->elpCapa[elpCSWD] = LIST_ELPMODEL_S.elpCapa[elpCSWD] ;
469 LIST_ELPMODEL->elpRacc[elpRACCS] = LIST_ELPMODEL_S.elpRacc[elpRACCS];
470 LIST_ELPMODEL->elpRacc[elpRACCD] = LIST_ELPMODEL_S.elpRacc[elpRACCD];
474 trans_name : T_STRING
480 trans_index : '[' number ']'
490 trans_type : T_TYPE '=' T_NMOS
500 mccvars : /* empty */
506 /* les dimensions valables du transistor */
507 T_LMIN '=' number {LIST_ELPMODEL_S.elpRange[elpLMIN] = (long)((double)$3 * (double)SCALE_X + (double)0.5) ;}
508 | T_LMAX '=' number {LIST_ELPMODEL_S.elpRange[elpLMAX] = (long)((double)$3 * (double)SCALE_X + (double)0.5) ;}
509 | T_WMIN '=' number {LIST_ELPMODEL_S.elpRange[elpWMIN] = (long)((double)$3 * (double)SCALE_X + (double)0.5) ;}
510 | T_WMAX '=' number {LIST_ELPMODEL_S.elpRange[elpWMAX] = (long)((double)$3 * (double)SCALE_X + (double)0.5) ;}
511 | T_CASE '=' T_BEST {LIST_ELPMODEL_S.elpTransCase = elpBEST ;}
512 | T_CASE '=' T_WORST {LIST_ELPMODEL_S.elpTransCase = elpWORST ;}
513 | T_CASE '=' T_TYPICAL {LIST_ELPMODEL_S.elpTransCase = elpTYPICAL ;}
515 /* les parametres de shrink des transistors */
516 | T_LMLT '=' number {LIST_ELPMODEL_S.elpShrink[elpLMLT] = $3 ;}
517 | T_WMLT '=' number {LIST_ELPMODEL_S.elpShrink[elpWMLT] = $3 ;}
518 | T_DL '=' number {LIST_ELPMODEL_S.elpShrink[elpDL] = $3 ;}
519 | T_DW '=' number {LIST_ELPMODEL_S.elpShrink[elpDW] = $3 ;}
520 | T_DLC '=' number {LIST_ELPMODEL_S.elpShrink[elpDLC] = $3 ;}
521 | T_DWC '=' number {LIST_ELPMODEL_S.elpShrink[elpDWC] = $3 ;}
522 | T_DWCJ '=' number {LIST_ELPMODEL_S.elpShrink[elpDWCJ] = $3 ;}
524 /* les caracteristiques des transistors */
525 | T_VT '=' number {LIST_ELPMODEL_S.elpModel[elpVT] = $3 ;}
526 | T_VT0 '=' number {LIST_ELPMODEL_S.elpModel[elpVT0] = $3 ;}
527 | T_MULU0 '=' number {LIST_ELPMODEL_S.elpModel[elpMULU0] = $3 ;}
528 | T_M '=' number {LIST_ELPMODEL_S.elpModel[elpM] = $3 ;}
529 | T_DELVT0 '=' number {LIST_ELPMODEL_S.elpModel[elpDELVT0] = $3 ;}
530 | T_SA '=' number {LIST_ELPMODEL_S.elpModel[elpSA] = $3 ;}
531 | T_SB '=' number {LIST_ELPMODEL_S.elpModel[elpSB] = $3 ;}
532 | T_SD '=' number {LIST_ELPMODEL_S.elpModel[elpSD] = $3 ;}
533 | T_SC '=' number {LIST_ELPMODEL_S.elpModel[elpSC] = $3 ;}
534 | T_SCA '=' number {LIST_ELPMODEL_S.elpModel[elpSCA] = $3 ;}
535 | T_SCB '=' number {LIST_ELPMODEL_S.elpModel[elpSCB] = $3 ;}
536 | T_SCC '=' number {LIST_ELPMODEL_S.elpModel[elpSCC] = $3 ;}
537 | T_NF '=' number {LIST_ELPMODEL_S.elpModel[elpNF] = $3 ;}
538 | T_NRS '=' number {LIST_ELPMODEL_S.elpModel[elpNRS] = $3 ;}
539 | T_NRD '=' number {LIST_ELPMODEL_S.elpModel[elpNRD] = $3 ;}
540 | T_KT '=' number {LIST_ELPMODEL_S.elpModel[elpKT] = $3 ;}
541 | T_A '=' number {LIST_ELPMODEL_S.elpModel[elpA] = $3 ;}
542 | T_B '=' number {LIST_ELPMODEL_S.elpModel[elpB] = $3 ;}
543 | T_RT '=' number {LIST_ELPMODEL_S.elpModel[elpRT] = $3 ;}
544 | T_KRT '=' number {LIST_ELPMODEL_S.elpModel[elpKRT] = $3 ;}
545 | T_RS '=' number {LIST_ELPMODEL_S.elpModel[elpRS] = $3 ;}
546 | T_KRS '=' number {LIST_ELPMODEL_S.elpModel[elpKRS] = $3 ;}
547 | T_KS '=' number {LIST_ELPMODEL_S.elpModel[elpKS] = $3 ;}
548 | T_KR '=' number {LIST_ELPMODEL_S.elpModel[elpKR] = $3 ;}
550 /* les caracteristiques des tensions */
551 | T_VBULK '=' number {LIST_ELPMODEL_S.elpVoltage[elpVBULK] = $3 ;}
552 | T_VDDmax '=' number {LIST_ELPMODEL_S.elpVoltage[elpVDDMAX] = $3 ;
553 if (LIST_ELPMODEL_S.elpVoltage[elpVBULK] < ELPMINVBULK) {
554 if ( LIST_ELPMODEL_S.elpTransType == elpNMOS )
555 LIST_ELPMODEL_S.elpVoltage[elpVBULK] = 0.0;
557 LIST_ELPMODEL_S.elpVoltage[elpVBULK] = elpGeneral[elpGVDDMAX];
560 | T_VDEG '=' number {LIST_ELPMODEL_S.elpVoltage[elpVDEG] = $3 ;}
561 | T_VTI '=' number {LIST_ELPMODEL_S.elpVoltage[elpVTI] = $3 ;}
562 | T_TEMP '=' number {LIST_ELPMODEL_S.elpTemp = $3 ;}
564 /* les capacites dynamiques */
565 | T_CGS '=' number {LIST_ELPMODEL_S.elpCapa[elpCGS] = $3 ;
566 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGS0]) == 0)
567 LIST_ELPMODEL_S.elpCapa[elpCGS0] = $3;
568 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSU]) == 0)
569 LIST_ELPMODEL_S.elpCapa[elpCGSU] = $3;
570 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSU0]) == 0)
571 LIST_ELPMODEL_S.elpCapa[elpCGSU0] = $3;
572 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSUMIN]) == 0)
573 LIST_ELPMODEL_S.elpCapa[elpCGSUMIN] = $3;
574 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSUMAX]) == 0)
575 LIST_ELPMODEL_S.elpCapa[elpCGSUMAX] = $3;
576 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSD]) == 0)
577 LIST_ELPMODEL_S.elpCapa[elpCGSD] = $3;
578 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSD0]) == 0)
579 LIST_ELPMODEL_S.elpCapa[elpCGSD0] = $3;
580 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSDMIN]) == 0)
581 LIST_ELPMODEL_S.elpCapa[elpCGSDMIN] = $3;
582 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGSDMAX]) == 0)
583 LIST_ELPMODEL_S.elpCapa[elpCGSDMAX] = $3;
585 | T_CGS0 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGS0] = $3 ;}
586 | T_CGSU '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSU] = $3 ;}
587 | T_CGSU0 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSU0] = $3 ;}
588 | T_CGSUMIN '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSUMIN] = $3 ;}
589 | T_CGSUMAX '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSUMAX] = $3 ;}
590 | T_CGSD '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSD] = $3 ;}
591 | T_CGSD0 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSD0] = $3 ;}
592 | T_CGSDMIN '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSDMIN] = $3 ;}
593 | T_CGSDMAX '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSDMAX] = $3 ;}
595 { LIST_ELPMODEL_S.elpCapa[elpCGP] = $3 ;
596 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGPUMIN]) == 0)
597 LIST_ELPMODEL_S.elpCapa[elpCGPUMIN] = $3;
598 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGPUMAX]) == 0)
599 LIST_ELPMODEL_S.elpCapa[elpCGPUMAX] = $3;
600 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGPDMIN]) == 0)
601 LIST_ELPMODEL_S.elpCapa[elpCGPDMIN] = $3;
602 if (elpDouble2Long (ELPPRECISION*LIST_ELPMODEL_S.elpCapa[elpCGPDMAX]) == 0)
603 LIST_ELPMODEL_S.elpCapa[elpCGPDMAX] = $3;
605 | T_CGPUMIN '=' number {LIST_ELPMODEL_S.elpCapa[elpCGPUMIN] = $3 ;}
606 | T_CGPUMAX '=' number {LIST_ELPMODEL_S.elpCapa[elpCGPUMAX] = $3 ;}
607 | T_CGPDMIN '=' number {LIST_ELPMODEL_S.elpCapa[elpCGPDMIN] = $3 ;}
608 | T_CGPDMAX '=' number {LIST_ELPMODEL_S.elpCapa[elpCGPDMAX] = $3 ;}
609 | T_CGD '=' number {LIST_ELPMODEL_S.elpCapa[elpCGD] = $3 ;}
610 | T_CGD0 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGD0] = $3 ;}
611 | T_CGD1 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGD1] = $3 ;}
612 | T_CGD2 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGD2] = $3 ;}
613 | T_CGDC '=' number {LIST_ELPMODEL_S.elpCapa[elpCGDC] = $3 ;}
614 | T_CGDC0 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGDC0] = $3 ;}
615 | T_CGDC1 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGDC1] = $3 ;}
616 | T_CGDC2 '=' number {LIST_ELPMODEL_S.elpCapa[elpCGDC2] = $3 ;}
617 | T_CGSI '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSI] = $3 ;}
618 | T_CGSIC '=' number {LIST_ELPMODEL_S.elpCapa[elpCGSIC] = $3 ;}
619 | T_CDS '=' number {LIST_ELPMODEL_S.elpCapa[elpCDS] = $3 ;}
620 | T_CDSU '=' number {LIST_ELPMODEL_S.elpCapa[elpCDSU] = $3 ;}
621 | T_CDSD '=' number {LIST_ELPMODEL_S.elpCapa[elpCDSD] = $3 ;}
622 | T_CDP '=' number {LIST_ELPMODEL_S.elpCapa[elpCDP] = $3 ;}
623 | T_CDPU '=' number {LIST_ELPMODEL_S.elpCapa[elpCDPU] = $3 ;}
624 | T_CDPD '=' number {LIST_ELPMODEL_S.elpCapa[elpCDPD] = $3 ;}
625 | T_CDW '=' number {LIST_ELPMODEL_S.elpCapa[elpCDW] = $3 ;}
626 | T_CDWU '=' number {LIST_ELPMODEL_S.elpCapa[elpCDWU] = $3 ;}
627 | T_CDWD '=' number {LIST_ELPMODEL_S.elpCapa[elpCDWD] = $3 ;}
628 | T_CSS '=' number {LIST_ELPMODEL_S.elpCapa[elpCSS] = $3 ;}
629 | T_CSSU '=' number {LIST_ELPMODEL_S.elpCapa[elpCSSU] = $3 ;}
630 | T_CSSD '=' number {LIST_ELPMODEL_S.elpCapa[elpCSSD] = $3 ;}
631 | T_CSP '=' number {LIST_ELPMODEL_S.elpCapa[elpCSP] = $3 ;}
632 | T_CSPU '=' number {LIST_ELPMODEL_S.elpCapa[elpCSPU] = $3 ;}
633 | T_CSPD '=' number {LIST_ELPMODEL_S.elpCapa[elpCSPD] = $3 ;}
634 | T_CSW '=' number {LIST_ELPMODEL_S.elpCapa[elpCSW] = $3 ;}
635 | T_CSWU '=' number {LIST_ELPMODEL_S.elpCapa[elpCSWU] = $3 ;}
636 | T_CSWD '=' number {LIST_ELPMODEL_S.elpCapa[elpCSWD] = $3 ;}
637 | T_NAME_ALIAS '=' name_alias
638 | T_RACCS '=' number {LIST_ELPMODEL_S.elpRacc[elpRACCS] = $3 ;}
639 | T_RACCD '=' number {LIST_ELPMODEL_S.elpRacc[elpRACCD] = $3 ;}
642 name_alias : T_STRING
644 LIST_ELPMODEL_S.elpModelNameAlias = addchain (LIST_ELPMODEL_S.elpModelNameAlias,namealloc($1)) ;
646 | T_STRING ':' name_alias
648 LIST_ELPMODEL_S.elpModelNameAlias = addchain (LIST_ELPMODEL_S.elpModelNameAlias,namealloc($1)) ;
652 oldparam : /* shrink parameters */
655 getelptrans(elpNMOS) ;
656 LIST_ELPMODEL->elpShrink[elpDL] = $3 ;
660 getelptrans(elpPMOS) ;
661 LIST_ELPMODEL->elpShrink[elpDL] = $3 ;
665 getelptrans(elpNMOS) ;
666 LIST_ELPMODEL->elpShrink[elpDW] = $3 ;
670 getelptrans(elpPMOS) ;
671 LIST_ELPMODEL->elpShrink[elpDW] = $3 ;
675 getelptrans(elpNMOS) ;
676 LIST_ELPMODEL->elpShrink[elpLMLT] = $3 ;
677 getelptrans(elpPMOS) ;
678 LIST_ELPMODEL->elpShrink[elpLMLT] = $3 ;
682 getelptrans(elpNMOS) ;
683 LIST_ELPMODEL->elpShrink[elpWMLT] = $3 ;
684 getelptrans(elpPMOS) ;
685 LIST_ELPMODEL->elpShrink[elpWMLT] = $3 ;
687 /* nom de model de transistor */
688 | T_NNAME '=' T_STRING
692 NNAME = namealloc($3) ;
693 getelptrans(elpNMOS) ;
695 | T_PNAME '=' T_STRING
699 PNAME = namealloc($3) ;
700 getelptrans(elpPMOS) ;
702 /* Transistors characteristics */
705 getelptrans(elpNMOS) ;
706 LIST_ELPMODEL->elpModel[elpVT] = $3 ;
710 getelptrans(elpPMOS) ;
711 LIST_ELPMODEL->elpModel[elpVT] = $3 ;
715 getelptrans(elpNMOS) ;
716 LIST_ELPMODEL->elpModel[elpB] = $3 ;
720 getelptrans(elpPMOS) ;
721 LIST_ELPMODEL->elpModel[elpB] = $3 ;
725 getelptrans(elpNMOS) ;
726 LIST_ELPMODEL->elpModel[elpA] = $3 ;
730 getelptrans(elpPMOS) ;
731 LIST_ELPMODEL->elpModel[elpA] = $3 ;
735 getelptrans(elpNMOS) ;
736 LIST_ELPMODEL->elpModel[elpRT] = $3 ;
740 getelptrans(elpPMOS) ;
741 LIST_ELPMODEL->elpModel[elpRT] = $3 ;
743 /* Degraded Voltage */
744 | T_VDDdeg '=' number
746 getelptrans(elpNMOS) ;
747 LIST_ELPMODEL->elpVoltage[elpVDEG] = $3 ;
748 LIST_ELPMODEL->elpVoltage[elpVTI] = $3 ;
750 | T_VSSdeg '=' number
752 getelptrans(elpPMOS) ;
753 LIST_ELPMODEL->elpVoltage[elpVDEG] = $3 ;
754 LIST_ELPMODEL->elpVoltage[elpVTI] = $3 ;
756 /* Grid capacitance */
759 getelptrans(elpNMOS) ;
760 LIST_ELPMODEL->elpCapa[elpCGS] = $3 ;
761 LIST_ELPMODEL->elpCapa[elpCGS0] = $3 ;
762 LIST_ELPMODEL->elpCapa[elpCGSU] = $3 ;
763 LIST_ELPMODEL->elpCapa[elpCGSU0] = $3 ;
764 LIST_ELPMODEL->elpCapa[elpCGSD] = $3 ;
765 LIST_ELPMODEL->elpCapa[elpCGSD0] = $3 ;
766 LIST_ELPMODEL->elpCapa[elpCGSUMIN] = $3 ;
767 LIST_ELPMODEL->elpCapa[elpCGSUMAX] = $3 ;
768 LIST_ELPMODEL->elpCapa[elpCGSDMIN] = $3 ;
769 LIST_ELPMODEL->elpCapa[elpCGSDMAX] = $3 ;
773 getelptrans(elpPMOS) ;
774 LIST_ELPMODEL->elpCapa[elpCGS] = $3 ;
775 LIST_ELPMODEL->elpCapa[elpCGS0] = $3 ;
776 LIST_ELPMODEL->elpCapa[elpCGSU] = $3 ;
777 LIST_ELPMODEL->elpCapa[elpCGSU0] = $3 ;
778 LIST_ELPMODEL->elpCapa[elpCGSD] = $3 ;
779 LIST_ELPMODEL->elpCapa[elpCGSD0] = $3 ;
780 LIST_ELPMODEL->elpCapa[elpCGSUMIN] = $3 ;
781 LIST_ELPMODEL->elpCapa[elpCGSUMAX] = $3 ;
782 LIST_ELPMODEL->elpCapa[elpCGSDMIN] = $3 ;
783 LIST_ELPMODEL->elpCapa[elpCGSDMAX] = $3 ;
787 getelptrans(elpNMOS) ;
788 LIST_ELPMODEL->elpCapa[elpCGP] = $3 ;
789 LIST_ELPMODEL->elpCapa[elpCGPUMIN] = $3 ;
790 LIST_ELPMODEL->elpCapa[elpCGPUMAX] = $3 ;
791 LIST_ELPMODEL->elpCapa[elpCGPDMIN] = $3 ;
792 LIST_ELPMODEL->elpCapa[elpCGPDMAX] = $3 ;
796 getelptrans(elpPMOS) ;
797 LIST_ELPMODEL->elpCapa[elpCGP] = $3 ;
798 LIST_ELPMODEL->elpCapa[elpCGPUMIN] = $3 ;
799 LIST_ELPMODEL->elpCapa[elpCGPUMAX] = $3 ;
800 LIST_ELPMODEL->elpCapa[elpCGPDMIN] = $3 ;
801 LIST_ELPMODEL->elpCapa[elpCGPDMAX] = $3 ;
803 /* Drain capacitance */
806 getelptrans(elpNMOS) ;
807 LIST_ELPMODEL->elpCapa[elpCDS] = $3 ;
808 LIST_ELPMODEL->elpCapa[elpCDSU] = $3 ;
809 LIST_ELPMODEL->elpCapa[elpCDSD] = $3 ;
813 getelptrans(elpPMOS) ;
814 LIST_ELPMODEL->elpCapa[elpCDS] = $3 ;
815 LIST_ELPMODEL->elpCapa[elpCDSU] = $3 ;
816 LIST_ELPMODEL->elpCapa[elpCDSD] = $3 ;
820 getelptrans(elpNMOS) ;
821 LIST_ELPMODEL->elpCapa[elpCDP] = $3 ;
822 LIST_ELPMODEL->elpCapa[elpCDPU] = $3 ;
823 LIST_ELPMODEL->elpCapa[elpCDPD] = $3 ;
827 getelptrans(elpPMOS) ;
828 LIST_ELPMODEL->elpCapa[elpCDP] = $3 ;
829 LIST_ELPMODEL->elpCapa[elpCDPU] = $3 ;
830 LIST_ELPMODEL->elpCapa[elpCDPD] = $3 ;
834 getelptrans(elpNMOS) ;
835 LIST_ELPMODEL->elpCapa[elpCDW] = $3 ;
836 LIST_ELPMODEL->elpCapa[elpCDWU] = $3 ;
837 LIST_ELPMODEL->elpCapa[elpCDWD] = $3 ;
841 getelptrans(elpPMOS) ;
842 LIST_ELPMODEL->elpCapa[elpCDW] = $3 ;
843 LIST_ELPMODEL->elpCapa[elpCDWU] = $3 ;
844 LIST_ELPMODEL->elpCapa[elpCDWD] = $3 ;
846 /* Source capacitance */
849 getelptrans(elpNMOS) ;
850 LIST_ELPMODEL->elpCapa[elpCSS] = $3 ;
851 LIST_ELPMODEL->elpCapa[elpCSSU] = $3 ;
852 LIST_ELPMODEL->elpCapa[elpCSSD] = $3 ;
856 getelptrans(elpPMOS) ;
857 LIST_ELPMODEL->elpCapa[elpCSS] = $3 ;
858 LIST_ELPMODEL->elpCapa[elpCSSU] = $3 ;
859 LIST_ELPMODEL->elpCapa[elpCSSD] = $3 ;
863 getelptrans(elpNMOS) ;
864 LIST_ELPMODEL->elpCapa[elpCSP] = $3 ;
865 LIST_ELPMODEL->elpCapa[elpCSPU] = $3 ;
866 LIST_ELPMODEL->elpCapa[elpCSPD] = $3 ;
870 getelptrans(elpPMOS) ;
871 LIST_ELPMODEL->elpCapa[elpCSP] = $3 ;
872 LIST_ELPMODEL->elpCapa[elpCSPU] = $3 ;
873 LIST_ELPMODEL->elpCapa[elpCSPD] = $3 ;
877 getelptrans(elpNMOS) ;
878 LIST_ELPMODEL->elpCapa[elpCSW] = $3 ;
879 LIST_ELPMODEL->elpCapa[elpCSWU] = $3 ;
880 LIST_ELPMODEL->elpCapa[elpCSWD] = $3 ;
884 getelptrans(elpPMOS) ;
885 LIST_ELPMODEL->elpCapa[elpCSW] = $3 ;
886 LIST_ELPMODEL->elpCapa[elpCSWU] = $3 ;
887 LIST_ELPMODEL->elpCapa[elpCSWD] = $3 ;
892 extern char *elptext ;
895 void getelptrans(type)
899 for (LIST_ELPMODEL = ELP_MODEL_LIST ; LIST_ELPMODEL ; LIST_ELPMODEL = LIST_ELPMODEL->NEXT ) {
900 if ((LIST_ELPMODEL->elpTransType) == type)
904 if(LIST_ELPMODEL == NULL)
906 if ((type == elpNMOS) && (NNAME == NULL))
908 NNAME = namealloc("TN") ;
911 if ((type == elpPMOS) && (PNAME == NULL))
913 PNAME = namealloc("TP") ;
916 LIST_ELPMODEL = elpAddModel((type == elpNMOS) ? NNAME : PNAME, NULL,
917 type, elpNOINDEX,(long)0,ELPMAXLONG,(long)0,ELPMAXLONG,
918 0.0,0.0,1.0,1.0,ELPMINVOLTAGE,elpTYPICAL, 0,
919 1.0,0.0,ELPINITVALUE,ELPINITVALUE,ELPINITVALUE,ELPINITVALUE,1.0,0.0,0.0,ELPINITVBULK,ELPINITVALUE,ELPINITVALUE,ELPINITVALUE,ELPINITVALUE,NULL) ;
926 elpError(1001,elptext,ELPLINE) ; /* si erreur de syntaxe => erreur 1001 */