1 /* ************************************************************************** */
2 /* ************************************************************************** */
3 /* ATTENTION: THIS IS AN AUTO-GENERATED FILE. DO NOT CHANGE IT!               */
4 /* ************************************************************************** */
5 /* ************************************************************************** */
6 /* Copyright 2012 - 2015, Cadence Design Systems                              */
7 /*                                                                            */
8 /* This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source             */
9 /* Distribution,  Product Version 5.8.                                        */
10 /*                                                                            */
11 /* Licensed under the Apache License, Version 2.0 (the "License");            */
12 /*    you may not use this file except in compliance with the License.        */
13 /*    You may obtain a copy of the License at                                 */
14 /*                                                                            */
15 /*        http://www.apache.org/licenses/LICENSE-2.0                          */
16 /*                                                                            */
17 /*    Unless required by applicable law or agreed to in writing, software     */
18 /*    distributed under the License is distributed on an "AS IS" BASIS,       */
19 /*    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or         */
20 /*    implied. See the License for the specific language governing            */
21 /*    permissions and limitations under the License.                          */
22 /*                                                                            */
23 /* For updates, support, or to become part of the LEF/DEF Community,          */
24 /* check www.openeda.org for details.                                         */
25 /*                                                                            */
26 /*  $Author: dell $                                                       */
27 /*  $Revision: #1 $                                                           */
28 /*  $Date: 2017/06/06 $                                                       */
29 /*  $State:  $                                                                */
30 /* ************************************************************************** */
31 /* ************************************************************************** */
32 
33 
34 #ifndef CLEFILAYER_H
35 #define CLEFILAYER_H
36 
37 #include <stdio.h>
38 #include "lefiTypedefs.h"
39 
40 typedef enum lefiAntennaEnum {
41   lefiAntennaAR = 1,
42   lefiAntennaDAR = 2,
43   lefiAntennaCAR = 3,
44   lefiAntennaCDAR = 4,
45   lefiAntennaAF = 5,
46   lefiAntennaSAR = 6,
47   lefiAntennaDSAR = 7,
48   lefiAntennaCSAR = 8,
49   lefiAntennaCDSAR = 9,
50   lefiAntennaSAF = 10,
51   lefiAntennaO = 11,
52   lefiAntennaADR = 12
53 } lefiAntennaEnum;
54 
55 EXTERN int lefiAntennaPWL_numPWL (const lefiAntennaPWL* obj);
56 
57 EXTERN char* lefiLayerDensity_type (const lefiLayerDensity* obj);
58 EXTERN int lefiLayerDensity_hasOneEntry (const lefiLayerDensity* obj);
59 EXTERN double lefiLayerDensity_oneEntry (const lefiLayerDensity* obj);
60 EXTERN int lefiLayerDensity_numFrequency (const lefiLayerDensity* obj);
61 EXTERN double lefiLayerDensity_frequency (const lefiLayerDensity* obj, int  index);
62 EXTERN int lefiLayerDensity_numWidths (const lefiLayerDensity* obj);
63 EXTERN double lefiLayerDensity_width (const lefiLayerDensity* obj, int  index);
64 EXTERN int lefiLayerDensity_numTableEntries (const lefiLayerDensity* obj);
65 EXTERN double lefiLayerDensity_tableEntry (const lefiLayerDensity* obj, int  index);
66 EXTERN int lefiLayerDensity_numCutareas (const lefiLayerDensity* obj);
67 EXTERN double lefiLayerDensity_cutArea (const lefiLayerDensity* obj, int  index);
68 
69 /* 5.5                                                                        */
70 
71 EXTERN int lefiParallel_numLength (const lefiParallel* obj);
72 EXTERN int lefiParallel_numWidth (const lefiParallel* obj);
73 EXTERN double lefiParallel_length (const lefiParallel* obj, int  iLength);
74 EXTERN double lefiParallel_width (const lefiParallel* obj, int  iWidth);
75 EXTERN double lefiParallel_widthSpacing (const lefiParallel* obj, int  iWidth, int  iWidthSpacing);
76 
77 /* 5.5                                                                        */
78 
79 EXTERN int lefiInfluence_numInfluenceEntry (const lefiInfluence* obj);
80 EXTERN double lefiInfluence_width (const lefiInfluence* obj, int  index);
81 EXTERN double lefiInfluence_distance (const lefiInfluence* obj, int  index);
82 EXTERN double lefiInfluence_spacing (const lefiInfluence* obj, int  index);
83 
84 /* 5.7                                                                        */
85 
86 EXTERN int lefiTwoWidths_numWidth (const lefiTwoWidths* obj);
87 EXTERN double lefiTwoWidths_width (const lefiTwoWidths* obj, int  iWidth);
88 EXTERN int lefiTwoWidths_hasWidthPRL (const lefiTwoWidths* obj, int  iWidth);
89 EXTERN double lefiTwoWidths_widthPRL (const lefiTwoWidths* obj, int  iWidth);
90 EXTERN int lefiTwoWidths_numWidthSpacing (const lefiTwoWidths* obj, int  iWidth);
91 EXTERN double lefiTwoWidths_widthSpacing (const lefiTwoWidths* obj, int  iWidth, int  iWidthSpacing);
92 
93 /* 5.5                                                                        */
94 
95 EXTERN int lefiSpacingTable_isInfluence (const lefiSpacingTable* obj);
96 EXTERN const lefiInfluence* lefiSpacingTable_influence (const lefiSpacingTable* obj);
97 EXTERN int lefiSpacingTable_isParallel (const lefiSpacingTable* obj);
98 EXTERN const lefiParallel* lefiSpacingTable_parallel (const lefiSpacingTable* obj);
99 EXTERN const lefiTwoWidths* lefiSpacingTable_twoWidths (const lefiSpacingTable* obj);
100 
101 /* 5.7                                                                        */
102 
103 EXTERN int lefiOrthogonal_numOrthogonal (const lefiOrthogonal* obj);
104 EXTERN double lefiOrthogonal_cutWithin (const lefiOrthogonal* obj, int  index);
105 EXTERN double lefiOrthogonal_orthoSpacing (const lefiOrthogonal* obj, int  index);
106 
107 /* 5.5                                                                        */
108 
109 EXTERN int lefiAntennaModel_hasAntennaAreaRatio (const lefiAntennaModel* obj);
110 EXTERN int lefiAntennaModel_hasAntennaDiffAreaRatio (const lefiAntennaModel* obj);
111 EXTERN int lefiAntennaModel_hasAntennaDiffAreaRatioPWL (const lefiAntennaModel* obj);
112 EXTERN int lefiAntennaModel_hasAntennaCumAreaRatio (const lefiAntennaModel* obj);
113 EXTERN int lefiAntennaModel_hasAntennaCumDiffAreaRatio (const lefiAntennaModel* obj);
114 EXTERN int lefiAntennaModel_hasAntennaCumDiffAreaRatioPWL (const lefiAntennaModel* obj);
115 EXTERN int lefiAntennaModel_hasAntennaAreaFactor (const lefiAntennaModel* obj);
116 EXTERN int lefiAntennaModel_hasAntennaAreaFactorDUO (const lefiAntennaModel* obj);
117 EXTERN int lefiAntennaModel_hasAntennaSideAreaRatio (const lefiAntennaModel* obj);
118 EXTERN int lefiAntennaModel_hasAntennaDiffSideAreaRatio (const lefiAntennaModel* obj);
119 EXTERN int lefiAntennaModel_hasAntennaDiffSideAreaRatioPWL (const lefiAntennaModel* obj);
120 EXTERN int lefiAntennaModel_hasAntennaCumSideAreaRatio (const lefiAntennaModel* obj);
121 EXTERN int lefiAntennaModel_hasAntennaCumDiffSideAreaRatio (const lefiAntennaModel* obj);
122 EXTERN int lefiAntennaModel_hasAntennaCumDiffSideAreaRatioPWL (const lefiAntennaModel* obj);
123 EXTERN int lefiAntennaModel_hasAntennaSideAreaFactor (const lefiAntennaModel* obj);
124 EXTERN int lefiAntennaModel_hasAntennaSideAreaFactorDUO (const lefiAntennaModel* obj);
125 EXTERN int lefiAntennaModel_hasAntennaCumRoutingPlusCut (const lefiAntennaModel* obj);
126 EXTERN int lefiAntennaModel_hasAntennaGatePlusDiff (const lefiAntennaModel* obj);
127 EXTERN int lefiAntennaModel_hasAntennaAreaMinusDiff (const lefiAntennaModel* obj);
128 EXTERN int lefiAntennaModel_hasAntennaAreaDiffReducePWL (const lefiAntennaModel* obj);
129 
130 EXTERN char* lefiAntennaModel_antennaOxide (const lefiAntennaModel* obj);
131 EXTERN double lefiAntennaModel_antennaAreaRatio (const lefiAntennaModel* obj);
132 EXTERN double lefiAntennaModel_antennaDiffAreaRatio (const lefiAntennaModel* obj);
133 EXTERN const lefiAntennaPWL* lefiAntennaModel_antennaDiffAreaRatioPWL (const lefiAntennaModel* obj);
134 EXTERN double lefiAntennaModel_antennaCumAreaRatio (const lefiAntennaModel* obj);
135 EXTERN double lefiAntennaModel_antennaCumDiffAreaRatio (const lefiAntennaModel* obj);
136 EXTERN const lefiAntennaPWL* lefiAntennaModel_antennaCumDiffAreaRatioPWL (const lefiAntennaModel* obj);
137 EXTERN double lefiAntennaModel_antennaAreaFactor (const lefiAntennaModel* obj);
138 EXTERN double lefiAntennaModel_antennaSideAreaRatio (const lefiAntennaModel* obj);
139 EXTERN double lefiAntennaModel_antennaDiffSideAreaRatio (const lefiAntennaModel* obj);
140 EXTERN const lefiAntennaPWL* lefiAntennaModel_antennaDiffSideAreaRatioPWL (const lefiAntennaModel* obj);
141 EXTERN double lefiAntennaModel_antennaCumSideAreaRatio (const lefiAntennaModel* obj);
142 EXTERN double lefiAntennaModel_antennaCumDiffSideAreaRatio (const lefiAntennaModel* obj);
143 EXTERN const lefiAntennaPWL* lefiAntennaModel_antennaCumDiffSideAreaRatioPWL (const lefiAntennaModel* obj);
144 EXTERN double lefiAntennaModel_antennaSideAreaFactor (const lefiAntennaModel* obj);
145 EXTERN double lefiAntennaModel_antennaGatePlusDiff (const lefiAntennaModel* obj);
146 EXTERN double lefiAntennaModel_antennaAreaMinusDiff (const lefiAntennaModel* obj);
147 EXTERN const lefiAntennaPWL* lefiAntennaModel_antennaAreaDiffReducePWL (const lefiAntennaModel* obj);
148 
149   /* 5.6 - minstep switch to multiple and added more options                  */
150 
151   /* 5.5 SPACINGTABLE                                                         */
152 
153   /* 5.6                                                                      */
154 
155   /* 5.8                                                                      */
156   /* POLYROUTING, MIMCAP, TSV, PASSIVATION, NWELL                             */
157 
158 EXTERN int lefiLayer_hasType (const lefiLayer* obj);
159 EXTERN int lefiLayer_hasLayerType (const lefiLayer* obj);
160                                      /*  ROUTING can be POLYROUTING or MIMCAP */
161                                      /*  CUT can be TSV or PASSIVATION        */
162                                      /*  MASTERSLICE can be NWELL             */
163 EXTERN int lefiLayer_hasMask (const lefiLayer* obj);
164 EXTERN int lefiLayer_hasPitch (const lefiLayer* obj);
165 EXTERN int lefiLayer_hasXYPitch (const lefiLayer* obj);
166 EXTERN int lefiLayer_hasOffset (const lefiLayer* obj);
167 EXTERN int lefiLayer_hasXYOffset (const lefiLayer* obj);
168 EXTERN int lefiLayer_hasWidth (const lefiLayer* obj);
169 EXTERN int lefiLayer_hasArea (const lefiLayer* obj);
170 EXTERN int lefiLayer_hasDiagPitch (const lefiLayer* obj);
171 EXTERN int lefiLayer_hasXYDiagPitch (const lefiLayer* obj);
172 EXTERN int lefiLayer_hasDiagWidth (const lefiLayer* obj);
173 EXTERN int lefiLayer_hasDiagSpacing (const lefiLayer* obj);
174 EXTERN int lefiLayer_hasSpacingNumber (const lefiLayer* obj);
175 EXTERN int lefiLayer_hasSpacingName (const lefiLayer* obj, int  index);
176 EXTERN int lefiLayer_hasSpacingLayerStack (const lefiLayer* obj, int  index);
177 EXTERN int lefiLayer_hasSpacingAdjacent (const lefiLayer* obj, int  index);
178 EXTERN int lefiLayer_hasSpacingCenterToCenter (const lefiLayer* obj, int  index);
179 EXTERN int lefiLayer_hasSpacingRange (const lefiLayer* obj, int  index);
180 EXTERN int lefiLayer_hasSpacingRangeUseLengthThreshold (const lefiLayer* obj, int  index);
181 EXTERN int lefiLayer_hasSpacingRangeInfluence (const lefiLayer* obj, int  index);
182 EXTERN int lefiLayer_hasSpacingRangeInfluenceRange (const lefiLayer* obj, int  index);
183 EXTERN int lefiLayer_hasSpacingRangeRange (const lefiLayer* obj, int  index);
184 EXTERN int lefiLayer_hasSpacingLengthThreshold (const lefiLayer* obj, int  index);
185 EXTERN int lefiLayer_hasSpacingLengthThresholdRange (const lefiLayer* obj, int  index);
186 EXTERN int lefiLayer_hasSpacingParallelOverlap (const lefiLayer* obj, int  index);
187 EXTERN int lefiLayer_hasSpacingArea (const lefiLayer* obj, int  index);
188 EXTERN int lefiLayer_hasSpacingEndOfLine (const lefiLayer* obj, int  index);
189 EXTERN int lefiLayer_hasSpacingParellelEdge (const lefiLayer* obj, int  index);
190 EXTERN int lefiLayer_hasSpacingTwoEdges (const lefiLayer* obj, int  index);
191 EXTERN int lefiLayer_hasSpacingAdjacentExcept (const lefiLayer* obj, int  index);
192 EXTERN int lefiLayer_hasSpacingSamenet (const lefiLayer* obj, int  index);
193 EXTERN int lefiLayer_hasSpacingSamenetPGonly (const lefiLayer* obj, int  index);
194 EXTERN int lefiLayer_hasSpacingNotchLength (const lefiLayer* obj, int  index);
195 EXTERN int lefiLayer_hasSpacingEndOfNotchWidth (const lefiLayer* obj, int  index);
196 EXTERN int lefiLayer_hasDirection (const lefiLayer* obj);
197 EXTERN int lefiLayer_hasResistance (const lefiLayer* obj);
198 EXTERN int lefiLayer_hasResistanceArray (const lefiLayer* obj);
199 EXTERN int lefiLayer_hasCapacitance (const lefiLayer* obj);
200 EXTERN int lefiLayer_hasCapacitanceArray (const lefiLayer* obj);
201 EXTERN int lefiLayer_hasHeight (const lefiLayer* obj);
202 EXTERN int lefiLayer_hasThickness (const lefiLayer* obj);
203 EXTERN int lefiLayer_hasWireExtension (const lefiLayer* obj);
204 EXTERN int lefiLayer_hasShrinkage (const lefiLayer* obj);
205 EXTERN int lefiLayer_hasCapMultiplier (const lefiLayer* obj);
206 EXTERN int lefiLayer_hasEdgeCap (const lefiLayer* obj);
207 EXTERN int lefiLayer_hasAntennaLength (const lefiLayer* obj);
208 EXTERN int lefiLayer_hasAntennaArea (const lefiLayer* obj);
209 EXTERN int lefiLayer_hasCurrentDensityPoint (const lefiLayer* obj);
210 EXTERN int lefiLayer_hasCurrentDensityArray (const lefiLayer* obj);
211 EXTERN int lefiLayer_hasAccurrentDensity (const lefiLayer* obj);
212 EXTERN int lefiLayer_hasDccurrentDensity (const lefiLayer* obj);
213 
214 EXTERN int lefiLayer_numProps (const lefiLayer* obj);
215 EXTERN const char* lefiLayer_propName (const lefiLayer* obj, int  index);
216 EXTERN const char* lefiLayer_propValue (const lefiLayer* obj, int  index);
217 EXTERN double lefiLayer_propNumber (const lefiLayer* obj, int  index);
218 EXTERN const char lefiLayer_propType (const lefiLayer* obj, int  index);
219 EXTERN int lefiLayer_propIsNumber (const lefiLayer* obj, int  index);
220 EXTERN int lefiLayer_propIsString (const lefiLayer* obj, int  index);
221 
222 EXTERN int lefiLayer_numSpacing (const lefiLayer* obj);
223 
224 EXTERN char* lefiLayer_name (const lefiLayer* obj);
225 EXTERN const char* lefiLayer_type (const lefiLayer* obj);
226 EXTERN const char* lefiLayer_layerType (const lefiLayer* obj);
227 EXTERN double lefiLayer_pitch (const lefiLayer* obj);
228 EXTERN int lefiLayer_mask (const lefiLayer* obj);
229 EXTERN double lefiLayer_pitchX (const lefiLayer* obj);
230 EXTERN double lefiLayer_pitchY (const lefiLayer* obj);
231 EXTERN double lefiLayer_offset (const lefiLayer* obj);
232 EXTERN double lefiLayer_offsetX (const lefiLayer* obj);
233 EXTERN double lefiLayer_offsetY (const lefiLayer* obj);
234 EXTERN double lefiLayer_width (const lefiLayer* obj);
235 EXTERN double lefiLayer_area (const lefiLayer* obj);
236 EXTERN double lefiLayer_diagPitch (const lefiLayer* obj);
237 EXTERN double lefiLayer_diagPitchX (const lefiLayer* obj);
238 EXTERN double lefiLayer_diagPitchY (const lefiLayer* obj);
239 EXTERN double lefiLayer_diagWidth (const lefiLayer* obj);
240 EXTERN double lefiLayer_diagSpacing (const lefiLayer* obj);
241 EXTERN double lefiLayer_spacing (const lefiLayer* obj, int  index);
242 EXTERN char* lefiLayer_spacingName (const lefiLayer* obj, int  index);
243 EXTERN int lefiLayer_spacingAdjacentCuts (const lefiLayer* obj, int  index);
244 EXTERN double lefiLayer_spacingAdjacentWithin (const lefiLayer* obj, int  index);
245 EXTERN double lefiLayer_spacingArea (const lefiLayer* obj, int  index);
246 EXTERN double lefiLayer_spacingRangeMin (const lefiLayer* obj, int  index);
247 EXTERN double lefiLayer_spacingRangeMax (const lefiLayer* obj, int  index);
248 EXTERN double lefiLayer_spacingRangeInfluence (const lefiLayer* obj, int  index);
249 EXTERN double lefiLayer_spacingRangeInfluenceMin (const lefiLayer* obj, int  index);
250 EXTERN double lefiLayer_spacingRangeInfluenceMax (const lefiLayer* obj, int  index);
251 EXTERN double lefiLayer_spacingRangeRangeMin (const lefiLayer* obj, int  index);
252 EXTERN double lefiLayer_spacingRangeRangeMax (const lefiLayer* obj, int  index);
253 EXTERN double lefiLayer_spacingLengthThreshold (const lefiLayer* obj, int  index);
254 EXTERN double lefiLayer_spacingLengthThresholdRangeMin (const lefiLayer* obj, int  index);
255 EXTERN double lefiLayer_spacingLengthThresholdRangeMax (const lefiLayer* obj, int  index);
256 
257   /* 5.7 Spacing endofline                                                    */
258 EXTERN double lefiLayer_spacingEolWidth (const lefiLayer* obj, int  index);
259 EXTERN double lefiLayer_spacingEolWithin (const lefiLayer* obj, int  index);
260 EXTERN double lefiLayer_spacingParSpace (const lefiLayer* obj, int  index);
261 EXTERN double lefiLayer_spacingParWithin (const lefiLayer* obj, int  index);
262 
263   /* 5.7 Spacing Notch                                                        */
264 EXTERN double lefiLayer_spacingNotchLength (const lefiLayer* obj, int  index);
265 EXTERN double lefiLayer_spacingEndOfNotchWidth (const lefiLayer* obj, int  index);
266 EXTERN double lefiLayer_spacingEndOfNotchSpacing (const lefiLayer* obj, int  index);
267 EXTERN double lefiLayer_spacingEndOfNotchLength (const lefiLayer* obj, int  index);
268 
269   /* 5.5 Minimum cut rules                                                    */
270 EXTERN int lefiLayer_numMinimumcut (const lefiLayer* obj);
271 EXTERN int lefiLayer_minimumcut (const lefiLayer* obj, int  index);
272 EXTERN double lefiLayer_minimumcutWidth (const lefiLayer* obj, int  index);
273 EXTERN int lefiLayer_hasMinimumcutWithin (const lefiLayer* obj, int  index);
274 EXTERN double lefiLayer_minimumcutWithin (const lefiLayer* obj, int  index);
275 EXTERN int lefiLayer_hasMinimumcutConnection (const lefiLayer* obj, int  index);
276 EXTERN const char* lefiLayer_minimumcutConnection (const lefiLayer* obj, int  index);
277 EXTERN int lefiLayer_hasMinimumcutNumCuts (const lefiLayer* obj, int  index);
278 EXTERN double lefiLayer_minimumcutLength (const lefiLayer* obj, int  index);
279 EXTERN double lefiLayer_minimumcutDistance (const lefiLayer* obj, int  index);
280 
281 EXTERN const char* lefiLayer_direction (const lefiLayer* obj);
282 EXTERN double lefiLayer_resistance (const lefiLayer* obj);
283 EXTERN double lefiLayer_capacitance (const lefiLayer* obj);
284 EXTERN double lefiLayer_height (const lefiLayer* obj);
285 EXTERN double lefiLayer_wireExtension (const lefiLayer* obj);
286 EXTERN double lefiLayer_thickness (const lefiLayer* obj);
287 EXTERN double lefiLayer_shrinkage (const lefiLayer* obj);
288 EXTERN double lefiLayer_capMultiplier (const lefiLayer* obj);
289 EXTERN double lefiLayer_edgeCap (const lefiLayer* obj);
290 EXTERN double lefiLayer_antennaLength (const lefiLayer* obj);
291 EXTERN double lefiLayer_antennaArea (const lefiLayer* obj);
292 EXTERN double lefiLayer_currentDensityPoint (const lefiLayer* obj);
293 EXTERN void lefiLayer_currentDensityArray (const lefiLayer* obj, int*  numPoints, double**  widths, double**  current);
294 EXTERN void lefiLayer_capacitanceArray (const lefiLayer* obj, int*  numPoints, double**  widths, double**  resValues);
295 EXTERN void lefiLayer_resistanceArray (const lefiLayer* obj, int*  numPoints, double**  widths, double**  capValues);
296 
297 EXTERN int lefiLayer_numAccurrentDensity (const lefiLayer* obj);
298 EXTERN const lefiLayerDensity* lefiLayer_accurrent (const lefiLayer* obj, int  index);
299 EXTERN int lefiLayer_numDccurrentDensity (const lefiLayer* obj);
300 EXTERN const lefiLayerDensity* lefiLayer_dccurrent (const lefiLayer* obj, int  index);
301 
302   /* 3/23/2000 - Wanda da Rosa.  The following are for 5.4 Antenna.           */
303   /*             Only 5.4 or 5.3 are allowed in a lef file, but not both      */
304 
305   /* 5.5                                                                      */
306 EXTERN int lefiLayer_numAntennaModel (const lefiLayer* obj);
307 EXTERN const lefiAntennaModel* lefiLayer_antennaModel (const lefiLayer* obj, int  index);
308 
309   /* The following is 8/21/01 5.4 enhancements                                */
310 
311 EXTERN int lefiLayer_hasSlotWireWidth (const lefiLayer* obj);
312 EXTERN int lefiLayer_hasSlotWireLength (const lefiLayer* obj);
313 EXTERN int lefiLayer_hasSlotWidth (const lefiLayer* obj);
314 EXTERN int lefiLayer_hasSlotLength (const lefiLayer* obj);
315 EXTERN int lefiLayer_hasMaxAdjacentSlotSpacing (const lefiLayer* obj);
316 EXTERN int lefiLayer_hasMaxCoaxialSlotSpacing (const lefiLayer* obj);
317 EXTERN int lefiLayer_hasMaxEdgeSlotSpacing (const lefiLayer* obj);
318 EXTERN int lefiLayer_hasSplitWireWidth (const lefiLayer* obj);
319 EXTERN int lefiLayer_hasMinimumDensity (const lefiLayer* obj);
320 EXTERN int lefiLayer_hasMaximumDensity (const lefiLayer* obj);
321 EXTERN int lefiLayer_hasDensityCheckWindow (const lefiLayer* obj);
322 EXTERN int lefiLayer_hasDensityCheckStep (const lefiLayer* obj);
323 EXTERN int lefiLayer_hasFillActiveSpacing (const lefiLayer* obj);
324 EXTERN int lefiLayer_hasMaxwidth (const lefiLayer* obj);
325 EXTERN int lefiLayer_hasMinwidth (const lefiLayer* obj);
326 EXTERN int lefiLayer_hasMinstep (const lefiLayer* obj);
327 EXTERN int lefiLayer_hasProtrusion (const lefiLayer* obj);
328 
329 EXTERN double lefiLayer_slotWireWidth (const lefiLayer* obj);
330 EXTERN double lefiLayer_slotWireLength (const lefiLayer* obj);
331 EXTERN double lefiLayer_slotWidth (const lefiLayer* obj);
332 EXTERN double lefiLayer_slotLength (const lefiLayer* obj);
333 EXTERN double lefiLayer_maxAdjacentSlotSpacing (const lefiLayer* obj);
334 EXTERN double lefiLayer_maxCoaxialSlotSpacing (const lefiLayer* obj);
335 EXTERN double lefiLayer_maxEdgeSlotSpacing (const lefiLayer* obj);
336 EXTERN double lefiLayer_splitWireWidth (const lefiLayer* obj);
337 EXTERN double lefiLayer_minimumDensity (const lefiLayer* obj);
338 EXTERN double lefiLayer_maximumDensity (const lefiLayer* obj);
339 EXTERN double lefiLayer_densityCheckWindowLength (const lefiLayer* obj);
340 EXTERN double lefiLayer_densityCheckWindowWidth (const lefiLayer* obj);
341 EXTERN double lefiLayer_densityCheckStep (const lefiLayer* obj);
342 EXTERN double lefiLayer_fillActiveSpacing (const lefiLayer* obj);
343 EXTERN double lefiLayer_maxwidth (const lefiLayer* obj);
344 EXTERN double lefiLayer_minwidth (const lefiLayer* obj);
345 EXTERN double lefiLayer_protrusionWidth1 (const lefiLayer* obj);
346 EXTERN double lefiLayer_protrusionLength (const lefiLayer* obj);
347 EXTERN double lefiLayer_protrusionWidth2 (const lefiLayer* obj);
348 
349 EXTERN int lefiLayer_numMinstep (const lefiLayer* obj);
350 EXTERN double lefiLayer_minstep (const lefiLayer* obj, int  index);
351 EXTERN int lefiLayer_hasMinstepType (const lefiLayer* obj, int  index);
352 EXTERN char* lefiLayer_minstepType (const lefiLayer* obj, int  index);
353 EXTERN int lefiLayer_hasMinstepLengthsum (const lefiLayer* obj, int  index);
354 EXTERN double lefiLayer_minstepLengthsum (const lefiLayer* obj, int  index);
355 EXTERN int lefiLayer_hasMinstepMaxedges (const lefiLayer* obj, int  index);
356 EXTERN int lefiLayer_minstepMaxedges (const lefiLayer* obj, int  index);
357 EXTERN int lefiLayer_hasMinstepMinAdjLength (const lefiLayer* obj, int  index);
358 EXTERN double lefiLayer_minstepMinAdjLength (const lefiLayer* obj, int  index);
359 EXTERN int lefiLayer_hasMinstepMinBetLength (const lefiLayer* obj, int  index);
360 EXTERN double lefiLayer_minstepMinBetLength (const lefiLayer* obj, int  index);
361 EXTERN int lefiLayer_hasMinstepXSameCorners (const lefiLayer* obj, int  index);
362 
363   /* 5.5 MINENCLOSEDAREA                                                      */
364 EXTERN int lefiLayer_numMinenclosedarea (const lefiLayer* obj);
365 EXTERN double lefiLayer_minenclosedarea (const lefiLayer* obj, int  index);
366 EXTERN int lefiLayer_hasMinenclosedareaWidth (const lefiLayer* obj, int  index);
367 EXTERN double lefiLayer_minenclosedareaWidth (const lefiLayer* obj, int  index);
368 
369   /* 5.5 SPACINGTABLE FOR LAYER ROUTING                                       */
370 
371   /* 5.6 ENCLOSURE, PREFERENCLOSURE, RESISTANCEPERCUT & DIAGMINEDGELENGTH     */
372 EXTERN int lefiLayer_numEnclosure (const lefiLayer* obj);
373 EXTERN int lefiLayer_hasEnclosureRule (const lefiLayer* obj, int  index);
374 EXTERN double lefiLayer_enclosureOverhang1 (const lefiLayer* obj, int  index);
375 EXTERN double lefiLayer_enclosureOverhang2 (const lefiLayer* obj, int  index);
376 EXTERN int lefiLayer_hasEnclosureWidth (const lefiLayer* obj, int  index);
377 EXTERN double lefiLayer_enclosureMinWidth (const lefiLayer* obj, int  index);
378 EXTERN int lefiLayer_hasEnclosureExceptExtraCut (const lefiLayer* obj, int  index);
379 EXTERN double lefiLayer_enclosureExceptExtraCut (const lefiLayer* obj, int  index);
380 EXTERN int lefiLayer_hasEnclosureMinLength (const lefiLayer* obj, int  index);
381 EXTERN double lefiLayer_enclosureMinLength (const lefiLayer* obj, int  index);
382 EXTERN int lefiLayer_numPreferEnclosure (const lefiLayer* obj);
383 EXTERN int lefiLayer_hasPreferEnclosureRule (const lefiLayer* obj, int  index);
384 EXTERN double lefiLayer_preferEnclosureOverhang1 (const lefiLayer* obj, int  index);
385 EXTERN double lefiLayer_preferEnclosureOverhang2 (const lefiLayer* obj, int  index);
386 EXTERN int lefiLayer_hasPreferEnclosureWidth (const lefiLayer* obj, int  index);
387 EXTERN double lefiLayer_preferEnclosureMinWidth (const lefiLayer* obj, int  index);
388 EXTERN int lefiLayer_hasResistancePerCut (const lefiLayer* obj);
389 EXTERN double lefiLayer_resistancePerCut (const lefiLayer* obj);
390 EXTERN int lefiLayer_hasDiagMinEdgeLength (const lefiLayer* obj);
391 EXTERN double lefiLayer_diagMinEdgeLength (const lefiLayer* obj);
392 EXTERN int lefiLayer_numMinSize (const lefiLayer* obj);
393 EXTERN double lefiLayer_minSizeWidth (const lefiLayer* obj, int  index);
394 EXTERN double lefiLayer_minSizeLength (const lefiLayer* obj, int  index);
395 
396   /* 5.7                                                                      */
397 EXTERN int lefiLayer_hasMaxFloatingArea (const lefiLayer* obj);
398 EXTERN double lefiLayer_maxFloatingArea (const lefiLayer* obj);
399 EXTERN int lefiLayer_hasArraySpacing (const lefiLayer* obj);
400 EXTERN int lefiLayer_hasLongArray (const lefiLayer* obj);
401 EXTERN int lefiLayer_hasViaWidth (const lefiLayer* obj);
402 EXTERN double lefiLayer_viaWidth (const lefiLayer* obj);
403 EXTERN double lefiLayer_cutSpacing (const lefiLayer* obj);
404 EXTERN int lefiLayer_numArrayCuts (const lefiLayer* obj);
405 EXTERN int lefiLayer_arrayCuts (const lefiLayer* obj, int  index);
406 EXTERN double lefiLayer_arraySpacing (const lefiLayer* obj, int  index);
407 EXTERN int lefiLayer_hasSpacingTableOrtho (const lefiLayer* obj);
408 EXTERN const lefiOrthogonal* lefiLayer_orthogonal (const lefiLayer* obj);
409 
410 EXTERN double lefiLayer_lef58WidthTableOrtho (const lefiLayer* obj, int  idx);
411 EXTERN int lefiLayer_lef58WidthTableOrthoValues (const lefiLayer* obj);
412 EXTERN double lefiLayer_lef58WidthTableWrongDir (const lefiLayer* obj, int  idx);
413 EXTERN int lefiLayer_lef58WidthTableWrongDirValues (const lefiLayer* obj);
414 
415 EXTERN int lefiLayer_need58PropsProcessing (const lefiLayer* obj);
416 
417   /* Debug print                                                              */
418 EXTERN void lefiLayer_print (const lefiLayer* obj, FILE*  f);
419 
420   /* 5.5                                                                      */
421 
422                                       /* Q: quotedstring                      */
423 
424   /* 3/23/2000 - Wanda da Rosa.  The following is for 5.4 ANTENNA.            */
425   /*             Either 5.4 or 5.3 are allowed, not both                      */
426 
427   /* 5.5 AntennaModel                                                         */
428 
429   /* 8/29/2001 - Wanda da Rosa.  The following is for 5.4 enhancements.       */
430 
431   /* 5.5 SPACINGTABLE                                                         */
432 
433   /* 5.6                                                                      */
434 
435   /* 5.7                                                                      */
436 
437 #endif
438