570 lines
18 KiB
C++
570 lines
18 KiB
C++
|
|
// *****************************************************************************
|
||
|
|
// *****************************************************************************
|
||
|
|
// Copyright 2013 - 2017, 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: icftcm $
|
||
|
|
// $Revision: #2 $
|
||
|
|
// $Date: 2017/06/19 $
|
||
|
|
// $State: $
|
||
|
|
// *****************************************************************************
|
||
|
|
// *****************************************************************************
|
||
|
|
|
||
|
|
#ifndef defiNet_h
|
||
|
|
#define defiNet_h
|
||
|
|
|
||
|
|
#include <stdio.h>
|
||
|
|
#include "defiKRDefs.hpp"
|
||
|
|
#include "defiPath.hpp"
|
||
|
|
#include "defiMisc.hpp"
|
||
|
|
|
||
|
|
BEGIN_LEFDEF_PARSER_NAMESPACE
|
||
|
|
|
||
|
|
class defrData;
|
||
|
|
|
||
|
|
/* 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
|
||
|
|
*/
|
||
|
|
|
||
|
|
class defiWire {
|
||
|
|
public:
|
||
|
|
defiWire(defrData *data);
|
||
|
|
~defiWire();
|
||
|
|
|
||
|
|
void Init(const char* type, const char* wireShieldName);
|
||
|
|
void Destroy();
|
||
|
|
void clear();
|
||
|
|
void addPath(defiPath *p, int reset, int netOsnet, int *needCbk);
|
||
|
|
|
||
|
|
const char* wireType() const;
|
||
|
|
const char* wireShieldNetName() const;
|
||
|
|
int numPaths() const;
|
||
|
|
|
||
|
|
defiPath* path(int index);
|
||
|
|
const defiPath* path(int index) const;
|
||
|
|
|
||
|
|
void bumpPaths(long long size);
|
||
|
|
|
||
|
|
protected:
|
||
|
|
char* type_;
|
||
|
|
char* wireShieldName_; // It only set from specialnet SHIELD, 5.4
|
||
|
|
int numPaths_;
|
||
|
|
long long pathsAllocated_;
|
||
|
|
defiPath** paths_;
|
||
|
|
|
||
|
|
defrData *defData;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class defiSubnet {
|
||
|
|
public:
|
||
|
|
defiSubnet(defrData *data);
|
||
|
|
void Init();
|
||
|
|
|
||
|
|
void Destroy();
|
||
|
|
~defiSubnet();
|
||
|
|
|
||
|
|
void setName(const char* name);
|
||
|
|
void setNonDefault(const char* name);
|
||
|
|
void addPin(const char* instance, const char* pin, int syn);
|
||
|
|
void addMustPin(const char* instance, const char* pin, int syn);
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
void setType(const char* typ); // Either FIXED COVER ROUTED
|
||
|
|
void addPath(defiPath* p, int reset, int netOsnet, int *needCbk);
|
||
|
|
|
||
|
|
// NEW: a net can have more than 1 wire
|
||
|
|
void addWire(const char *typ);
|
||
|
|
void addWirePath(defiPath *p, int reset, int netOsnet, int *needCbk);
|
||
|
|
|
||
|
|
// Debug printing
|
||
|
|
void print(FILE* f) const;
|
||
|
|
|
||
|
|
const char* name() const;
|
||
|
|
int numConnections() const;
|
||
|
|
const char* instance(int index) const;
|
||
|
|
const char* pin(int index) const;
|
||
|
|
int pinIsSynthesized(int index) const;
|
||
|
|
int pinIsMustJoin(int index) const;
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
int isFixed() const;
|
||
|
|
int isRouted() const;
|
||
|
|
int isCover() const;
|
||
|
|
|
||
|
|
int hasNonDefaultRule() const;
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
int numPaths() const;
|
||
|
|
defiPath* path(int index);
|
||
|
|
const defiPath* path(int index) const;
|
||
|
|
|
||
|
|
const char* nonDefaultRule() const;
|
||
|
|
|
||
|
|
int numWires() const;
|
||
|
|
defiWire* wire(int index);
|
||
|
|
const defiWire* wire(int index) const;
|
||
|
|
|
||
|
|
void bumpName(long long size);
|
||
|
|
void bumpPins(long long size);
|
||
|
|
void bumpPaths(long long size);
|
||
|
|
void clear();
|
||
|
|
|
||
|
|
protected:
|
||
|
|
char* name_; // name.
|
||
|
|
int nameSize_; // allocated size of name.
|
||
|
|
int numPins_; // number of pins used in array.
|
||
|
|
long long pinsAllocated_; // number of pins allocated in array.
|
||
|
|
char** instances_; // instance names for connections
|
||
|
|
char** pins_; // pin names for connections
|
||
|
|
char* synthesized_; // synthesized flags for pins
|
||
|
|
char* musts_; // must-join flags
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
char isFixed_; // net type
|
||
|
|
char isRouted_;
|
||
|
|
char isCover_;
|
||
|
|
defiPath** paths_; // paths for this subnet
|
||
|
|
int numPaths_; // number of paths used
|
||
|
|
long long pathsAllocated_; // allocated size of paths array
|
||
|
|
|
||
|
|
int numWires_; // number of wires defined in the subnet
|
||
|
|
long long wiresAllocated_; // number of wires allocated in the subnet
|
||
|
|
defiWire** wires_; // this replace the paths
|
||
|
|
char* nonDefaultRule_;
|
||
|
|
|
||
|
|
defrData *defData;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class defiVpin {
|
||
|
|
public:
|
||
|
|
defiVpin(defrData *data);
|
||
|
|
~defiVpin();
|
||
|
|
|
||
|
|
void Init(const char* name);
|
||
|
|
void Destroy();
|
||
|
|
void setLayer(const char* name);
|
||
|
|
void setBounds(int xl, int yl, int xh, int yh);
|
||
|
|
void setOrient(int orient);
|
||
|
|
void setLoc(int x, int y);
|
||
|
|
void setStatus(char st);
|
||
|
|
|
||
|
|
int xl() const ;
|
||
|
|
int yl() const ;
|
||
|
|
int xh() const ;
|
||
|
|
int yh() const ;
|
||
|
|
char status() const; /* P-placed, F-fixed, C-cover, ' ' - not set */
|
||
|
|
int orient() const ;
|
||
|
|
const char* orientStr() const ;
|
||
|
|
int xLoc() const;
|
||
|
|
int yLoc() const;
|
||
|
|
const char* name() const;
|
||
|
|
const char* layer() const;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
int xl_;
|
||
|
|
int yl_;
|
||
|
|
int xh_;
|
||
|
|
int yh_;
|
||
|
|
int orient_; /* 0-7 -1 is no orient */
|
||
|
|
char status_; /* P-placed F-fixed C-cover ' '- none */
|
||
|
|
int xLoc_;
|
||
|
|
int yLoc_;
|
||
|
|
char* name_;
|
||
|
|
char* layer_;
|
||
|
|
|
||
|
|
defrData *defData;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// Pre 5.4
|
||
|
|
class defiShield {
|
||
|
|
public:
|
||
|
|
defiShield(defrData *data);
|
||
|
|
~defiShield();
|
||
|
|
|
||
|
|
void Init(const char* name);
|
||
|
|
void Destroy();
|
||
|
|
void clear();
|
||
|
|
void addPath(defiPath *p, int reset, int netOsnet, int *needCbk);
|
||
|
|
|
||
|
|
const char* shieldName() const;
|
||
|
|
int numPaths() const;
|
||
|
|
|
||
|
|
defiPath* path(int index);
|
||
|
|
const defiPath* path(int index) const;
|
||
|
|
|
||
|
|
void bumpPaths(long long size);
|
||
|
|
|
||
|
|
protected:
|
||
|
|
char* name_;
|
||
|
|
int numPaths_;
|
||
|
|
long long pathsAllocated_;
|
||
|
|
defiPath** paths_;
|
||
|
|
|
||
|
|
defrData *defData;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// Struct holds the data for one component.
|
||
|
|
class defiNet {
|
||
|
|
public:
|
||
|
|
defiNet(defrData *data);
|
||
|
|
void Init();
|
||
|
|
|
||
|
|
void Destroy();
|
||
|
|
~defiNet();
|
||
|
|
|
||
|
|
// Routines used by YACC to set the fields in the net.
|
||
|
|
void setName(const char* name);
|
||
|
|
void addPin(const char* instance, const char* pin, int syn);
|
||
|
|
void addMustPin(const char* instance, const char* pin, int syn);
|
||
|
|
void setWeight(int w);
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
void setType(const char* typ); // Either FIXED COVER ROUTED
|
||
|
|
|
||
|
|
void addProp(const char* name, const char* value, const char type);
|
||
|
|
void addNumProp(const char* name, const double d,
|
||
|
|
const char* value, const char type);
|
||
|
|
void addSubnet(defiSubnet* subnet);
|
||
|
|
// NEW: a net can have more than 1 wire
|
||
|
|
void addWire(const char *typ, const char* wireShieldName);
|
||
|
|
void addWirePath(defiPath* p, int reset, int netOsnet, int *needCbk);
|
||
|
|
void addShape(const char *shapeType); // 5.8
|
||
|
|
void setSource(const char* typ);
|
||
|
|
void setFixedbump(); // 5.4.1
|
||
|
|
void setFrequency(double frequency); // 5.4.1
|
||
|
|
void setOriginal(const char* typ);
|
||
|
|
void setPattern(const char* typ);
|
||
|
|
void setCap(double w);
|
||
|
|
void setUse(const char* typ);
|
||
|
|
void setNonDefaultRule(const char* typ);
|
||
|
|
void setStyle(int style);
|
||
|
|
void addShield(const char* shieldNetName); // pre 5.4
|
||
|
|
void addNoShield(const char* shieldNetName); // pre 5.4
|
||
|
|
void addShieldNet(const char* shieldNetName);
|
||
|
|
|
||
|
|
void addShieldPath(defiPath* p, int reset, int netOsnet, int *needCbk);
|
||
|
|
void clear();
|
||
|
|
void setWidth(const char* layer, double dist);
|
||
|
|
void setSpacing(const char* layer, double dist);
|
||
|
|
void setVoltage(double num);
|
||
|
|
void setRange(double left, double right);
|
||
|
|
void setXTalk(int num);
|
||
|
|
void addVpin(const char* name);
|
||
|
|
void addVpinLayer(const char* name);
|
||
|
|
void addVpinLoc(const char* status, int x, int y, int orient);
|
||
|
|
void addVpinBounds(int xl, int yl, int xh, int yh);
|
||
|
|
// 5.6
|
||
|
|
void addPolygon(const char* layerName, defiGeometries* geom, int *needCbk,
|
||
|
|
int mask, const char* routeStatus,
|
||
|
|
const char* shapeType,
|
||
|
|
const char* shieldNetName);
|
||
|
|
void addRect(const char* layerName, int xl, int yl, int xh, int yh,
|
||
|
|
int *needCbk, int mask, const char* routeStatus,
|
||
|
|
const char* shapeType,
|
||
|
|
const char* shieldNetName); // 5.6
|
||
|
|
void addPts(const char* viaName, int o, defiGeometries* geom,
|
||
|
|
int *needCbk, int mask, const char* routeStatus,
|
||
|
|
const char* shapeType,
|
||
|
|
const char* shieldNetName); //VIA 5.8
|
||
|
|
|
||
|
|
// For OA to modify the netName, id & pinName
|
||
|
|
void changeNetName(const char* name);
|
||
|
|
void changeInstance(const char* name, int index);
|
||
|
|
void changePin(const char* name, int index);
|
||
|
|
|
||
|
|
// Routines to return the value of net data.
|
||
|
|
const char* name() const;
|
||
|
|
int weight() const;
|
||
|
|
int numProps() const;
|
||
|
|
const char* propName(int index) const;
|
||
|
|
const char* propValue(int index) const;
|
||
|
|
double propNumber(int index) const;
|
||
|
|
const char propType(int index) const;
|
||
|
|
int propIsNumber(int index) const;
|
||
|
|
int propIsString(int index) const;
|
||
|
|
int numConnections() const;
|
||
|
|
const char* instance(int index) const;
|
||
|
|
const char* pin(int index) const;
|
||
|
|
int pinIsMustJoin(int index) const;
|
||
|
|
int pinIsSynthesized(int index) const;
|
||
|
|
int numSubnets() const;
|
||
|
|
|
||
|
|
defiSubnet* subnet(int index);
|
||
|
|
const defiSubnet* subnet(int index) const;
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
int isFixed() const;
|
||
|
|
int isRouted() const;
|
||
|
|
int isCover() const;
|
||
|
|
|
||
|
|
/* The following routines are for wiring */
|
||
|
|
int numWires() const;
|
||
|
|
|
||
|
|
defiWire* wire(int index);
|
||
|
|
const defiWire* wire(int index) const;
|
||
|
|
|
||
|
|
/* Routines to get the information about Virtual Pins. */
|
||
|
|
int numVpins() const;
|
||
|
|
|
||
|
|
defiVpin* vpin(int index);
|
||
|
|
const defiVpin* vpin(int index) const;
|
||
|
|
|
||
|
|
int hasProps() const;
|
||
|
|
int hasWeight() const;
|
||
|
|
int hasSubnets() const;
|
||
|
|
int hasSource() const;
|
||
|
|
int hasFixedbump() const; // 5.4.1
|
||
|
|
int hasFrequency() const; // 5.4.1
|
||
|
|
int hasPattern() const;
|
||
|
|
int hasOriginal() const;
|
||
|
|
int hasCap() const;
|
||
|
|
int hasUse() const;
|
||
|
|
int hasStyle() const;
|
||
|
|
int hasNonDefaultRule() const;
|
||
|
|
int hasVoltage() const;
|
||
|
|
int hasSpacingRules() const;
|
||
|
|
int hasWidthRules() const;
|
||
|
|
int hasXTalk() const;
|
||
|
|
|
||
|
|
int numSpacingRules() const;
|
||
|
|
void spacingRule(int index, char** layer, double* dist, double* left,
|
||
|
|
double* right) const;
|
||
|
|
int numWidthRules() const;
|
||
|
|
void widthRule(int index, char** layer, double* dist) const;
|
||
|
|
double voltage() const;
|
||
|
|
|
||
|
|
int XTalk() const;
|
||
|
|
const char* source() const;
|
||
|
|
double frequency() const;
|
||
|
|
const char* original() const;
|
||
|
|
const char* pattern() const;
|
||
|
|
double cap() const;
|
||
|
|
const char* use() const;
|
||
|
|
int style() const;
|
||
|
|
const char* nonDefaultRule() const;
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the next release
|
||
|
|
int numPaths() const;
|
||
|
|
|
||
|
|
defiPath* path(int index);
|
||
|
|
const defiPath* path(int index) const;
|
||
|
|
|
||
|
|
int numShields() const; // pre 5.4
|
||
|
|
|
||
|
|
defiShield* shield(int index); // pre 5.4
|
||
|
|
const defiShield* shield(int index) const ; // pre 5.4
|
||
|
|
|
||
|
|
int numShieldNets() const;
|
||
|
|
const char* shieldNet(int index) const;
|
||
|
|
int numNoShields() const; // pre 5.4
|
||
|
|
|
||
|
|
defiShield* noShield(int index); // pre 5.4
|
||
|
|
const defiShield* noShield(int index) const; // pre 5.4
|
||
|
|
|
||
|
|
// 5.6
|
||
|
|
int numPolygons() const; // 5.6
|
||
|
|
const char* polygonName(int index) const; // 5.6
|
||
|
|
struct defiPoints getPolygon(int index) const; // 5.6
|
||
|
|
int polyMask(int index) const;
|
||
|
|
const char* polyRouteStatus(int index) const;
|
||
|
|
const char* polyRouteStatusShieldName(int index) const;
|
||
|
|
const char* polyShapeType(int index) const;
|
||
|
|
|
||
|
|
|
||
|
|
int numRectangles() const; // 5.6
|
||
|
|
const char* rectName(int index) const; // 5.6
|
||
|
|
int xl(int index)const; // 5.6
|
||
|
|
int yl(int index)const; // 5.6
|
||
|
|
int xh(int index)const; // 5.6
|
||
|
|
int yh(int index)const; // 5.6
|
||
|
|
int rectMask(int index)const;
|
||
|
|
const char* rectRouteStatus(int index) const;
|
||
|
|
const char* rectRouteStatusShieldName(int index) const;
|
||
|
|
const char* rectShapeType(int index) const;
|
||
|
|
|
||
|
|
|
||
|
|
// 5.8
|
||
|
|
int numViaSpecs() const;
|
||
|
|
struct defiPoints getViaPts(int index) const;
|
||
|
|
const char* viaName(int index) const;
|
||
|
|
const int viaOrient(int index) const;
|
||
|
|
const char* viaOrientStr(int index) const;
|
||
|
|
const int topMaskNum(int index) const;
|
||
|
|
const int cutMaskNum(int index) const;
|
||
|
|
const int bottomMaskNum(int index) const;
|
||
|
|
const char* viaRouteStatus(int index) const;
|
||
|
|
const char* viaRouteStatusShieldName(int index) const;
|
||
|
|
const char* viaShapeType(int index) const;
|
||
|
|
|
||
|
|
// Debug printing
|
||
|
|
void print(FILE* f) const;
|
||
|
|
|
||
|
|
|
||
|
|
void bumpName(long long size);
|
||
|
|
void bumpPins(long long size);
|
||
|
|
void bumpProps(long long size);
|
||
|
|
void bumpSubnets(long long size);
|
||
|
|
void bumpPaths(long long size);
|
||
|
|
void bumpShieldNets(long long size);
|
||
|
|
|
||
|
|
// 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
|
||
|
|
void freeWire();
|
||
|
|
void freeShield();
|
||
|
|
|
||
|
|
// Clear the rectangles & polygons data if partial path callback is set
|
||
|
|
void clearRectPolyNPath();
|
||
|
|
void clearRectPoly();
|
||
|
|
void clearVia();
|
||
|
|
|
||
|
|
protected:
|
||
|
|
char* name_; // name.
|
||
|
|
int nameSize_; // allocated size of name.
|
||
|
|
int numPins_; // number of pins used in array.
|
||
|
|
long long pinsAllocated_; // number of pins allocated in array.
|
||
|
|
char** instances_; // instance names for connections
|
||
|
|
char** pins_; // pin names for connections
|
||
|
|
char* musts_; // must-join flags for pins
|
||
|
|
char* synthesized_; // synthesized flags for pins
|
||
|
|
int weight_; // net weight
|
||
|
|
char hasWeight_; // flag for optional weight
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the nex release
|
||
|
|
char isFixed_; // net type
|
||
|
|
char isRouted_;
|
||
|
|
char isCover_;
|
||
|
|
|
||
|
|
char hasCap_; // file supplied a capacitance value
|
||
|
|
char hasFrequency_; // file supplied a frequency value
|
||
|
|
char hasVoltage_;
|
||
|
|
int numProps_; // num of props in array
|
||
|
|
char** propNames_; // Prop names
|
||
|
|
char** propValues_; // Prop values All in strings!
|
||
|
|
double* propDValues_; // Prop values in numbers!
|
||
|
|
char* propTypes_; // Prop types, 'I' - Integer, 'R' - Real, 'S' - String
|
||
|
|
|
||
|
|
long long propsAllocated_; // allocated size of props array
|
||
|
|
int numSubnets_; // num of subnets in array
|
||
|
|
defiSubnet** subnets_; // Prop names
|
||
|
|
long long subnetsAllocated_; // allocated size of props array
|
||
|
|
double cap_; // cap value
|
||
|
|
char* source_;
|
||
|
|
int fixedbump_; // 5.4.1
|
||
|
|
double frequency_; // 5.4.1
|
||
|
|
char* pattern_;
|
||
|
|
char* original_;
|
||
|
|
char* use_;
|
||
|
|
char* nonDefaultRule_;
|
||
|
|
int style_;
|
||
|
|
|
||
|
|
// WMD -- the following will be removed by the nex release
|
||
|
|
defiPath** paths_; // paths for this subnet
|
||
|
|
int numPaths_; // number of paths used
|
||
|
|
long long pathsAllocated_; // allocated size of paths array
|
||
|
|
|
||
|
|
double voltage_;
|
||
|
|
|
||
|
|
int numWires_; // number of wires defined in the net
|
||
|
|
long long wiresAllocated_; // allocated size of wire paths array
|
||
|
|
defiWire** wires_; // this replace the paths
|
||
|
|
|
||
|
|
long long widthsAllocated_;
|
||
|
|
int numWidths_;
|
||
|
|
char** wlayers_;
|
||
|
|
double* wdist_;
|
||
|
|
|
||
|
|
long long spacingAllocated_;
|
||
|
|
int numSpacing_;
|
||
|
|
char** slayers_;
|
||
|
|
double* sdist_;
|
||
|
|
double* sleft_;
|
||
|
|
double* sright_;
|
||
|
|
int xTalk_;
|
||
|
|
|
||
|
|
int numVpins_;
|
||
|
|
long long vpinsAllocated_;
|
||
|
|
defiVpin** vpins_;
|
||
|
|
|
||
|
|
int numShields_; // number of SHIELD paths used
|
||
|
|
long long shieldsAllocated_; // allocated size of SHIELD paths array
|
||
|
|
defiShield** shields_; // SHIELD data
|
||
|
|
int numNoShields_; // number of NOSHIELD paths used
|
||
|
|
|
||
|
|
int numShieldNet_; // number of SHIELDNETS used in array.
|
||
|
|
long long shieldNetsAllocated_; // number of SHIELDNETS allocated in array.
|
||
|
|
char** shieldNet_; // name of the SHIELDNET
|
||
|
|
|
||
|
|
int numPolys_; // 5.6
|
||
|
|
char** polygonNames_; // 5.6 layerName for POLYGON
|
||
|
|
long long polysAllocated_; // 5.6
|
||
|
|
struct defiPoints** polygons_; // 5.6
|
||
|
|
int* polyMasks_;
|
||
|
|
char** polyRouteStatus_;
|
||
|
|
char** polyShapeTypes_;
|
||
|
|
char** polyRouteStatusShieldNames_;
|
||
|
|
|
||
|
|
int numRects_; // 5.6
|
||
|
|
long long rectsAllocated_; // 5.6
|
||
|
|
char** rectNames_; // 5.6
|
||
|
|
int* xl_;
|
||
|
|
int* yl_;
|
||
|
|
int* xh_;
|
||
|
|
int* yh_;
|
||
|
|
int* rectMasks_;
|
||
|
|
char** rectRouteStatus_;
|
||
|
|
char** rectRouteStatusShieldNames_;
|
||
|
|
char** rectShapeTypes_;
|
||
|
|
|
||
|
|
|
||
|
|
struct defiPoints** viaPts_; // 5.8
|
||
|
|
char** viaNames_;
|
||
|
|
int numPts_;
|
||
|
|
long long ptsAllocated_;
|
||
|
|
int* viaOrients_;
|
||
|
|
int* viaMasks_;
|
||
|
|
char** viaRouteStatus_;
|
||
|
|
char** viaRouteStatusShieldNames_;
|
||
|
|
char** viaShapeTypes_;
|
||
|
|
|
||
|
|
defrData *defData;
|
||
|
|
};
|
||
|
|
|
||
|
|
END_LEFDEF_PARSER_NAMESPACE
|
||
|
|
|
||
|
|
USE_LEFDEF_PARSER_NAMESPACE
|
||
|
|
|
||
|
|
#endif
|