forked from li3939108/DEF-Parser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefiNet.h
247 lines (196 loc) · 12.3 KB
/
defiNet.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
/* ************************************************************************** */
/* ************************************************************************** */
/* ATTENTION: THIS IS AN AUTO-GENERATED FILE. DO NOT CHANGE IT! */
/* ************************************************************************** */
/* ************************************************************************** */
/* Copyright 2013, Cadence Design Systems */
/* */
/* This file is part of the Cadence LEF/DEF Open Source */
/* Distribution, Product Version 5.8. */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
/* You may obtain a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
/* implied. See the License for the specific language governing */
/* permissions and limitations under the License. */
/* */
/* For updates, support, or to become part of the LEF/DEF Community, */
/* check www.openeda.org for details. */
/* */
/* $Author: dell $ */
/* $Revision: #7 $ */
/* $Date: 2015/01/27 $ */
/* $State: $ */
/* ************************************************************************** */
/* ************************************************************************** */
#ifndef CDEFINET_H
#define CDEFINET_H
#include <stdio.h>
#include "defiTypedefs.h"
/* Return codes for defiNet::viaOrient
DEF_ORIENT_N 0
DEF_ORIENT_W 1
DEF_ORIENT_S 2
DEF_ORIENT_E 3
DEF_ORIENT_FN 4
DEF_ORIENT_FW 5
DEF_ORIENT_FS 6
DEF_ORIENT_FE 7
*/
EXTERN const char* defiWire_wireType (const defiWire* obj);
EXTERN const char* defiWire_wireShieldNetName (const defiWire* obj);
EXTERN int defiWire_numPaths (const defiWire* obj);
EXTERN const defiPath* defiWire_path (const defiWire* obj, int index);
/* WMD -- the following will be removed by the next release */
/* NEW: a net can have more than 1 wire */
/* Debug printing */
EXTERN void defiSubnet_print (const defiSubnet* obj, FILE* f);
EXTERN const char* defiSubnet_name (const defiSubnet* obj);
EXTERN int defiSubnet_numConnections (const defiSubnet* obj);
EXTERN const char* defiSubnet_instance (const defiSubnet* obj, int index);
EXTERN const char* defiSubnet_pin (const defiSubnet* obj, int index);
EXTERN int defiSubnet_pinIsSynthesized (const defiSubnet* obj, int index);
EXTERN int defiSubnet_pinIsMustJoin (const defiSubnet* obj, int index);
/* WMD -- the following will be removed by the next release */
EXTERN int defiSubnet_isFixed (const defiSubnet* obj);
EXTERN int defiSubnet_isRouted (const defiSubnet* obj);
EXTERN int defiSubnet_isCover (const defiSubnet* obj);
EXTERN int defiSubnet_hasNonDefaultRule (const defiSubnet* obj);
/* WMD -- the following will be removed by the next release */
EXTERN int defiSubnet_numPaths (const defiSubnet* obj);
EXTERN const defiPath* defiSubnet_path (const defiSubnet* obj, int index);
EXTERN const char* defiSubnet_nonDefaultRule (const defiSubnet* obj);
EXTERN int defiSubnet_numWires (const defiSubnet* obj);
EXTERN const defiWire* defiSubnet_wire (const defiSubnet* obj, int index);
/* WMD -- the following will be removed by the next release */
EXTERN int defiVpin_xl (const defiVpin* obj);
EXTERN int defiVpin_yl (const defiVpin* obj);
EXTERN int defiVpin_xh (const defiVpin* obj);
EXTERN int defiVpin_yh (const defiVpin* obj);
EXTERN char defiVpin_status (const defiVpin* obj);
EXTERN int defiVpin_orient (const defiVpin* obj);
EXTERN const char* defiVpin_orientStr (const defiVpin* obj);
EXTERN int defiVpin_xLoc (const defiVpin* obj);
EXTERN int defiVpin_yLoc (const defiVpin* obj);
EXTERN const char* defiVpin_name (const defiVpin* obj);
EXTERN const char* defiVpin_layer (const defiVpin* obj);
/* Pre 5.4 */
EXTERN const char* defiShield_shieldName (const defiShield* obj);
EXTERN int defiShield_numPaths (const defiShield* obj);
EXTERN const defiPath* defiShield_path (const defiShield* obj, int index);
/* Struct holds the data for one component. */
/* Routines used by YACC to set the fields in the net. */
/* WMD -- the following will be removed by the next release */
/* NEW: a net can have more than 1 wire */
/* 5.6 */
/* For OA to modify the netName, id & pinName */
/* Routines to return the value of net data. */
EXTERN const char* defiNet_name (const defiNet* obj);
EXTERN int defiNet_weight (const defiNet* obj);
EXTERN int defiNet_numProps (const defiNet* obj);
EXTERN const char* defiNet_propName (const defiNet* obj, int index);
EXTERN const char* defiNet_propValue (const defiNet* obj, int index);
EXTERN double defiNet_propNumber (const defiNet* obj, int index);
EXTERN const char defiNet_propType (const defiNet* obj, int index);
EXTERN int defiNet_propIsNumber (const defiNet* obj, int index);
EXTERN int defiNet_propIsString (const defiNet* obj, int index);
EXTERN int defiNet_numConnections (const defiNet* obj);
EXTERN const char* defiNet_instance (const defiNet* obj, int index);
EXTERN const char* defiNet_pin (const defiNet* obj, int index);
EXTERN int defiNet_pinIsMustJoin (const defiNet* obj, int index);
EXTERN int defiNet_pinIsSynthesized (const defiNet* obj, int index);
EXTERN int defiNet_numSubnets (const defiNet* obj);
EXTERN const defiSubnet* defiNet_subnet (const defiNet* obj, int index);
/* WMD -- the following will be removed by the next release */
EXTERN int defiNet_isFixed (const defiNet* obj);
EXTERN int defiNet_isRouted (const defiNet* obj);
EXTERN int defiNet_isCover (const defiNet* obj);
/* The following routines are for wiring */
EXTERN int defiNet_numWires (const defiNet* obj);
EXTERN const defiWire* defiNet_wire (const defiNet* obj, int index);
/* Routines to get the information about Virtual Pins. */
EXTERN int defiNet_numVpins (const defiNet* obj);
EXTERN const defiVpin* defiNet_vpin (const defiNet* obj, int index);
EXTERN int defiNet_hasProps (const defiNet* obj);
EXTERN int defiNet_hasWeight (const defiNet* obj);
EXTERN int defiNet_hasSubnets (const defiNet* obj);
EXTERN int defiNet_hasSource (const defiNet* obj);
EXTERN int defiNet_hasFixedbump (const defiNet* obj);
EXTERN int defiNet_hasFrequency (const defiNet* obj);
EXTERN int defiNet_hasPattern (const defiNet* obj);
EXTERN int defiNet_hasOriginal (const defiNet* obj);
EXTERN int defiNet_hasCap (const defiNet* obj);
EXTERN int defiNet_hasUse (const defiNet* obj);
EXTERN int defiNet_hasStyle (const defiNet* obj);
EXTERN int defiNet_hasNonDefaultRule (const defiNet* obj);
EXTERN int defiNet_hasVoltage (const defiNet* obj);
EXTERN int defiNet_hasSpacingRules (const defiNet* obj);
EXTERN int defiNet_hasWidthRules (const defiNet* obj);
EXTERN int defiNet_hasXTalk (const defiNet* obj);
EXTERN int defiNet_numSpacingRules (const defiNet* obj);
EXTERN void defiNet_spacingRule (const defiNet* obj, int index, char** layer, double* dist, double* left, double* right);
EXTERN int defiNet_numWidthRules (const defiNet* obj);
EXTERN void defiNet_widthRule (const defiNet* obj, int index, char** layer, double* dist);
EXTERN double defiNet_voltage (const defiNet* obj);
EXTERN int defiNet_XTalk (const defiNet* obj);
EXTERN const char* defiNet_source (const defiNet* obj);
EXTERN double defiNet_frequency (const defiNet* obj);
EXTERN const char* defiNet_original (const defiNet* obj);
EXTERN const char* defiNet_pattern (const defiNet* obj);
EXTERN double defiNet_cap (const defiNet* obj);
EXTERN const char* defiNet_use (const defiNet* obj);
EXTERN int defiNet_style (const defiNet* obj);
EXTERN const char* defiNet_nonDefaultRule (const defiNet* obj);
/* WMD -- the following will be removed by the next release */
EXTERN int defiNet_numPaths (const defiNet* obj);
EXTERN const defiPath* defiNet_path (const defiNet* obj, int index);
EXTERN int defiNet_numShields (const defiNet* obj);
EXTERN const defiShield* defiNet_shield (const defiNet* obj, int index);
EXTERN int defiNet_numShieldNets (const defiNet* obj);
EXTERN const char* defiNet_shieldNet (const defiNet* obj, int index);
EXTERN int defiNet_numNoShields (const defiNet* obj);
EXTERN const defiShield* defiNet_noShield (const defiNet* obj, int index);
/* 5.6 */
EXTERN int defiNet_numPolygons (const defiNet* obj);
EXTERN const char* defiNet_polygonName (const defiNet* obj, int index);
EXTERN struct defiPoints defiNet_getPolygon (const defiNet* obj, int index);
EXTERN int defiNet_polyMask (const defiNet* obj, int index);
EXTERN const char* defiNet_polyRouteStatus (const defiNet* obj, int index);
EXTERN const char* defiNet_polyRouteStatusShieldName (const defiNet* obj, int index);
EXTERN const char* defiNet_polyShapeType (const defiNet* obj, int index);
EXTERN int defiNet_numRectangles (const defiNet* obj);
EXTERN const char* defiNet_rectName (const defiNet* obj, int index);
EXTERN int defiNet_xl (const defiNet* obj, int index);
EXTERN int defiNet_yl (const defiNet* obj, int index);
EXTERN int defiNet_xh (const defiNet* obj, int index);
EXTERN int defiNet_yh (const defiNet* obj, int index);
EXTERN int defiNet_rectMask (const defiNet* obj, int index);
EXTERN const char* defiNet_rectRouteStatus (const defiNet* obj, int index);
EXTERN const char* defiNet_rectRouteStatusShieldName (const defiNet* obj, int index);
EXTERN const char* defiNet_rectShapeType (const defiNet* obj, int index);
/* 5.8 */
EXTERN int defiNet_numViaSpecs (const defiNet* obj);
EXTERN struct defiPoints defiNet_getViaPts (const defiNet* obj, int index);
EXTERN const char* defiNet_viaName (const defiNet* obj, int index);
EXTERN const int defiNet_viaOrient (const defiNet* obj, int index);
EXTERN const char* defiNet_viaOrientStr (const defiNet* obj, int index);
EXTERN const int defiNet_topMaskNum (const defiNet* obj, int index);
EXTERN const int defiNet_cutMaskNum (const defiNet* obj, int index);
EXTERN const int defiNet_bottomMaskNum (const defiNet* obj, int index);
EXTERN const char* defiNet_viaRouteStatus (const defiNet* obj, int index);
EXTERN const char* defiNet_viaRouteStatusShieldName (const defiNet* obj, int index);
EXTERN const char* defiNet_viaShapeType (const defiNet* obj, int index);
/* Debug printing */
EXTERN void defiNet_print (const defiNet* obj, FILE* f);
/* The method freeWire() is added is user select to have a callback */
/* per wire within a net This is an internal method and is not public */
/* Clear the rectangles & polygons data if partial path callback is set */
/* WMD -- the following will be removed by the nex release */
/* WMD -- the following will be removed by the nex release */
#endif