extract: convert K&R function definitions to ANSI C
Convert the old-style (K&R) function definitions in extract/ to ANSI C prototypes, formatted in the project's convention: the return type on its own line and each parameter on its own line, indented four spaces, with the original parameter comments retained. Updates the extract headers (extract.h, extractInt.h). Where the generically-typed node-name callback field is assigned the now-prototyped extArrayTileToNode / extSubtreeTileToNode, the assignment is cast to the field's function-pointer type. Builds cleanly under GCC 16 / C23 (with the -std=gnu17 build change). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
97be8b72f0
commit
61a0a0541c
|
|
@ -60,8 +60,8 @@ ExtTree *extArrayPrimary; /* Primary array element */
|
||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
int extArrayFunc();
|
int extArrayFunc();
|
||||||
int extArrayPrimaryFunc(), extArrayInterFunc();
|
int extArrayPrimaryFunc(), extArrayInterFunc();
|
||||||
char *extArrayRange();
|
char *extArrayRange(char *dstp, int lo, int hi, bool prevRange, bool followRange);
|
||||||
char *extArrayTileToNode();
|
char *extArrayTileToNode(Tile *tp, TileType dinfo, int pNum, ExtTree *et, HierExtractArg *ha, bool doHard);
|
||||||
LabRegion *extArrayHardNode();
|
LabRegion *extArrayHardNode();
|
||||||
char *extArrayNodeName();
|
char *extArrayNodeName();
|
||||||
|
|
||||||
|
|
@ -85,9 +85,9 @@ void extArrayHardSearch();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputGeneratedLabels(parentUse, f)
|
extOutputGeneratedLabels(
|
||||||
CellUse *parentUse;
|
CellUse *parentUse,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
CellDef *parentDef;
|
CellDef *parentDef;
|
||||||
Label *lab;
|
Label *lab;
|
||||||
|
|
@ -147,9 +147,9 @@ extOutputGeneratedLabels(parentUse, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extArray(parentUse, f)
|
extArray(
|
||||||
CellUse *parentUse;
|
CellUse *parentUse,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
HierExtractArg ha;
|
HierExtractArg ha;
|
||||||
|
|
@ -161,7 +161,7 @@ extArray(parentUse, f)
|
||||||
*/
|
*/
|
||||||
ha.ha_outf = f;
|
ha.ha_outf = f;
|
||||||
ha.ha_parentUse = parentUse;
|
ha.ha_parentUse = parentUse;
|
||||||
ha.ha_nodename = extArrayTileToNode;
|
ha.ha_nodename = (char *(*)()) extArrayTileToNode;
|
||||||
ha.ha_cumFlat.et_use = extYuseCum;
|
ha.ha_cumFlat.et_use = extYuseCum;
|
||||||
HashInit(&ha.ha_connHash, 32, 0);
|
HashInit(&ha.ha_connHash, 32, 0);
|
||||||
|
|
||||||
|
|
@ -232,9 +232,9 @@ extArray(parentUse, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extArrayFunc(scx, ha)
|
extArrayFunc(
|
||||||
SearchContext *scx; /* Describes first element of array */
|
SearchContext *scx, /* Describes first element of array */
|
||||||
HierExtractArg *ha; /* Extraction context */
|
HierExtractArg *ha) /* Extraction context */
|
||||||
{
|
{
|
||||||
int xsep, ysep; /* X, Y separation in parent coordinates */
|
int xsep, ysep; /* X, Y separation in parent coordinates */
|
||||||
int xsize, ysize; /* X, Y sizes in parent coordinates */
|
int xsize, ysize; /* X, Y sizes in parent coordinates */
|
||||||
|
|
@ -358,9 +358,9 @@ extArrayFunc(scx, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extArrayProcess(ha, primary)
|
extArrayProcess(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
Rect *primary; /* Area guaranteed to contain only the primary
|
Rect *primary) /* Area guaranteed to contain only the primary
|
||||||
* element of the array, against which we will
|
* element of the array, against which we will
|
||||||
* extract all other elements that overlap the
|
* extract all other elements that overlap the
|
||||||
* area 'ha->ha_interArea'.
|
* area 'ha->ha_interArea'.
|
||||||
|
|
@ -421,13 +421,14 @@ done:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extArrayPrimaryFunc(use, trans, x, y, ha)
|
extArrayPrimaryFunc(
|
||||||
CellUse *use; /* Use of which this is an array element */
|
CellUse *use, /* Use of which this is an array element */
|
||||||
Transform *trans; /* Transform from coordinates of use->cu_def to those
|
Transform *trans, /* Transform from coordinates of use->cu_def to those
|
||||||
* in use->cu_parent, for the array element (x, y).
|
* in use->cu_parent, for the array element (x, y).
|
||||||
*/
|
*/
|
||||||
int x, y; /* X, Y indices of this array element */
|
int x,
|
||||||
HierExtractArg *ha;
|
int y,
|
||||||
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
CellDef *primDef;
|
CellDef *primDef;
|
||||||
HierYank hy;
|
HierYank hy;
|
||||||
|
|
@ -493,13 +494,14 @@ extArrayPrimaryFunc(use, trans, x, y, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extArrayInterFunc(use, trans, x, y, ha)
|
extArrayInterFunc(
|
||||||
CellUse *use; /* Use of which this is an array element */
|
CellUse *use, /* Use of which this is an array element */
|
||||||
Transform *trans; /* Transform from use->cu_def to use->cu_parent
|
Transform *trans, /* Transform from use->cu_def to use->cu_parent
|
||||||
* coordinates, for the array element (x, y).
|
* coordinates, for the array element (x, y).
|
||||||
*/
|
*/
|
||||||
int x, y; /* X, Y of this array element in use->cu_def coords */
|
int x,
|
||||||
HierExtractArg *ha;
|
int y,
|
||||||
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
CellUse *cumUse = ha->ha_cumFlat.et_use;
|
CellUse *cumUse = ha->ha_cumFlat.et_use;
|
||||||
CellDef *cumDef = cumUse->cu_def;
|
CellDef *cumDef = cumUse->cu_def;
|
||||||
|
|
@ -654,9 +656,10 @@ extArrayInterFunc(use, trans, x, y, ha)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extArrayAdjust(ha, et1, et2)
|
extArrayAdjust(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
ExtTree *et1, *et2;
|
ExtTree *et1,
|
||||||
|
ExtTree *et2)
|
||||||
{
|
{
|
||||||
CapValue cap; /* value of capacitance WAS: int */
|
CapValue cap; /* value of capacitance WAS: int */
|
||||||
NodeRegion *np;
|
NodeRegion *np;
|
||||||
|
|
@ -707,10 +710,11 @@ extArrayAdjust(ha, et1, et2)
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extArrayNodeName(np, ha, et1, et2)
|
extArrayNodeName(
|
||||||
NodeRegion *np;
|
NodeRegion *np,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
ExtTree *et1, *et2;
|
ExtTree *et1,
|
||||||
|
ExtTree *et2)
|
||||||
{
|
{
|
||||||
Tile *tp;
|
Tile *tp;
|
||||||
TileType dinfo;
|
TileType dinfo;
|
||||||
|
|
@ -769,13 +773,13 @@ extArrayNodeName(np, ha, et1, et2)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extArrayTileToNode(tp, dinfo, pNum, et, ha, doHard)
|
extArrayTileToNode(
|
||||||
Tile *tp;
|
Tile *tp,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
ExtTree *et;
|
ExtTree *et,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
bool doHard; /* If TRUE, we look up this node's name the hard way
|
bool doHard) /* If TRUE, we look up this node's name the hard way
|
||||||
* if we can't find it any other way; otherwise, we
|
* if we can't find it any other way; otherwise, we
|
||||||
* return NULL if we can't find the node's name.
|
* return NULL if we can't find the node's name.
|
||||||
*/
|
*/
|
||||||
|
|
@ -885,11 +889,12 @@ done:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extArrayRange(dstp, lo, hi, prevRange, followRange)
|
extArrayRange(
|
||||||
char *dstp;
|
char *dstp,
|
||||||
int lo, hi;
|
int lo,
|
||||||
bool prevRange; /* TRUE if preceded by a range */
|
int hi,
|
||||||
bool followRange; /* TRUE if followed by a range */
|
bool prevRange, /* TRUE if preceded by a range */
|
||||||
|
bool followRange) /* TRUE if followed by a range */
|
||||||
{
|
{
|
||||||
if (!prevRange) *dstp++ = '[';
|
if (!prevRange) *dstp++ = '[';
|
||||||
if (hi < lo)
|
if (hi < lo)
|
||||||
|
|
@ -936,12 +941,12 @@ extArrayRange(dstp, lo, hi, prevRange, followRange)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LabRegion *
|
LabRegion *
|
||||||
extArrayHardNode(tp, dinfo, pNum, def, ha)
|
extArrayHardNode(
|
||||||
Tile *tp;
|
Tile *tp,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
char labelBuf[4096];
|
char labelBuf[4096];
|
||||||
|
|
@ -1010,11 +1015,11 @@ extArrayHardNode(tp, dinfo, pNum, def, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extArrayHardSearch(def, arg, scx, proc)
|
extArrayHardSearch(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
HardWay *arg;
|
HardWay *arg,
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
int (*proc)();
|
int (*proc)())
|
||||||
{
|
{
|
||||||
Transform tinv;
|
Transform tinv;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@ void extTermAPFunc();
|
||||||
|
|
||||||
int extAnnularTileFunc(Tile *, TileType, int, FindRegion *); /* UNUSED */
|
int extAnnularTileFunc(Tile *, TileType, int, FindRegion *); /* UNUSED */
|
||||||
int extResistorTileFunc(Tile *, TileType, int, FindRegion *); /* UNUSED */
|
int extResistorTileFunc(Tile *, TileType, int, FindRegion *); /* UNUSED */
|
||||||
int extSpecialPerimFunc();
|
int extSpecialPerimFunc(Boundary *bp, bool sense);
|
||||||
|
|
||||||
void extFindDuplicateLabels();
|
void extFindDuplicateLabels();
|
||||||
void extOutputDevices();
|
void extOutputDevices();
|
||||||
|
|
@ -170,10 +170,10 @@ bool extLabType();
|
||||||
/* that is not in the topmost def of the search. */
|
/* that is not in the topmost def of the search. */
|
||||||
|
|
||||||
int
|
int
|
||||||
extFoundFunc(tile, dinfo, cxp)
|
extFoundFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; // Unused
|
TileType dinfo, // Unused
|
||||||
TreeContext *cxp;
|
TreeContext *cxp)
|
||||||
{
|
{
|
||||||
CellDef *def = (CellDef *)cxp->tc_filter->tf_arg;
|
CellDef *def = (CellDef *)cxp->tc_filter->tf_arg;
|
||||||
return (def == cxp->tc_scx->scx_use->cu_def) ? 0 : 1;
|
return (def == cxp->tc_scx->scx_use->cu_def) ? 0 : 1;
|
||||||
|
|
@ -213,11 +213,11 @@ extFoundFunc(tile, dinfo, cxp)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
NodeRegion *
|
NodeRegion *
|
||||||
extBasic(def, outFile)
|
extBasic(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
NodeRegion *nodeList, *extFindNodes();
|
NodeRegion *nodeList, *extFindNodes(CellDef *def, Rect *clipArea, bool subonly);
|
||||||
bool coupleInitialized = FALSE;
|
bool coupleInitialized = FALSE;
|
||||||
TransRegion *transList, *reg;
|
TransRegion *transList, *reg;
|
||||||
HashTable extCoupleHash;
|
HashTable extCoupleHash;
|
||||||
|
|
@ -620,8 +620,8 @@ extBasic(def, outFile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSetResist(reg)
|
extSetResist(
|
||||||
NodeRegion *reg;
|
NodeRegion *reg)
|
||||||
{
|
{
|
||||||
int n, perim;
|
int n, perim;
|
||||||
dlong area;
|
dlong area;
|
||||||
|
|
@ -678,9 +678,9 @@ extSetResist(reg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputNodes(nodeList, outFile)
|
extOutputNodes(
|
||||||
NodeRegion *nodeList; /* Nodes */
|
NodeRegion *nodeList, /* Nodes */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
ResValue rround = ExtCurStyle->exts_resistScale / 2;
|
ResValue rround = ExtCurStyle->exts_resistScale / 2;
|
||||||
CapValue finC;
|
CapValue finC;
|
||||||
|
|
@ -883,8 +883,8 @@ extOutputNodes(nodeList, outFile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extSubsName(node)
|
extSubsName(
|
||||||
LabRegion *node;
|
LabRegion *node)
|
||||||
{
|
{
|
||||||
char *subsName;
|
char *subsName;
|
||||||
|
|
||||||
|
|
@ -939,9 +939,9 @@ extSubsName(node)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extMakeNodeNumPrint(buf, lreg)
|
extMakeNodeNumPrint(
|
||||||
char *buf;
|
char *buf,
|
||||||
LabRegion *lreg;
|
LabRegion *lreg)
|
||||||
{
|
{
|
||||||
int plane = lreg->lreg_pnum;
|
int plane = lreg->lreg_pnum;
|
||||||
Point *p = &lreg->lreg_ll;
|
Point *p = &lreg->lreg_ll;
|
||||||
|
|
@ -990,8 +990,8 @@ extMakeNodeNumPrint(buf, lreg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extNodeName(node)
|
extNodeName(
|
||||||
LabRegion *node;
|
LabRegion *node)
|
||||||
{
|
{
|
||||||
static char namebuf[256]; /* Big enough to hold a generated nodename */
|
static char namebuf[256]; /* Big enough to hold a generated nodename */
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
@ -1026,9 +1026,9 @@ extNodeName(node)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extFindDuplicateLabels(def, nreg)
|
extFindDuplicateLabels(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
NodeRegion *nreg;
|
NodeRegion *nreg)
|
||||||
{
|
{
|
||||||
static char *badmesg =
|
static char *badmesg =
|
||||||
"Label \"%s\" attached to more than one unconnected node: %s";
|
"Label \"%s\" attached to more than one unconnected node: %s";
|
||||||
|
|
@ -1112,9 +1112,9 @@ extFindDuplicateLabels(def, nreg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtSortTerminals(tran, ll)
|
ExtSortTerminals(
|
||||||
struct transRec *tran;
|
struct transRec *tran,
|
||||||
LabelList *ll;
|
LabelList *ll)
|
||||||
{
|
{
|
||||||
int nsd, changed;
|
int nsd, changed;
|
||||||
TermTilePos *p1, *p2;
|
TermTilePos *p1, *p2;
|
||||||
|
|
@ -1204,8 +1204,9 @@ ExtSortTerminals(tran, ll)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extComputeCapLW(rlengthptr, rwidthptr)
|
extComputeCapLW(
|
||||||
int *rlengthptr, *rwidthptr;
|
int *rlengthptr,
|
||||||
|
int *rwidthptr)
|
||||||
{
|
{
|
||||||
LinkedBoundary *lb;
|
LinkedBoundary *lb;
|
||||||
Rect bbox;
|
Rect bbox;
|
||||||
|
|
@ -1256,10 +1257,11 @@ extComputeCapLW(rlengthptr, rwidthptr)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extComputeEffectiveLW(rlengthptr, rwidthptr, numregions, chop)
|
extComputeEffectiveLW(
|
||||||
int *rlengthptr, *rwidthptr;
|
int *rlengthptr,
|
||||||
int numregions;
|
int *rwidthptr,
|
||||||
float chop;
|
int numregions,
|
||||||
|
float chop)
|
||||||
{
|
{
|
||||||
int i, j, p, jmax;
|
int i, j, p, jmax;
|
||||||
LinkedBoundary *lb, *lb2;
|
LinkedBoundary *lb, *lb2;
|
||||||
|
|
@ -1578,8 +1580,8 @@ extComputeEffectiveLW(rlengthptr, rwidthptr, numregions, chop)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSeparateBounds(nterm)
|
extSeparateBounds(
|
||||||
int nterm; /* last terminal (# terminals - 1) */
|
int nterm) /* last terminal (# terminals - 1) */
|
||||||
{
|
{
|
||||||
Rect lbrect;
|
Rect lbrect;
|
||||||
LinkedBoundary *lb, *lbstart, *lbend, *lblast, *lbnext;
|
LinkedBoundary *lb, *lbstart, *lbend, *lblast, *lbnext;
|
||||||
|
|
@ -1694,10 +1696,10 @@ extSeparateBounds(nterm)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputParameters(def, transList, outFile)
|
extOutputParameters(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
TransRegion *transList; /* Transistor regions built up in first pass */
|
TransRegion *transList, /* Transistor regions built up in first pass */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
ParamList *plist;
|
ParamList *plist;
|
||||||
TransRegion *reg;
|
TransRegion *reg;
|
||||||
|
|
@ -1842,14 +1844,14 @@ extOutputParameters(def, transList, outFile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputDevParams(reg, devptr, outFile, length, width, areavec, perimvec)
|
extOutputDevParams(
|
||||||
TransRegion *reg;
|
TransRegion *reg,
|
||||||
ExtDevice *devptr;
|
ExtDevice *devptr,
|
||||||
FILE *outFile;
|
FILE *outFile,
|
||||||
int length;
|
int length,
|
||||||
int width;
|
int width,
|
||||||
int *areavec;
|
int *areavec,
|
||||||
int *perimvec;
|
int *perimvec)
|
||||||
{
|
{
|
||||||
ParamList *chkParam;
|
ParamList *chkParam;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
@ -2057,10 +2059,10 @@ typedef struct _extareaperimdata {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ExtDevice *
|
ExtDevice *
|
||||||
extDevFindParamMatch(devptr, length, width)
|
extDevFindParamMatch(
|
||||||
ExtDevice *devptr;
|
ExtDevice *devptr,
|
||||||
int length; /* Computed effective length of device */
|
int length, /* Computed effective length of device */
|
||||||
int width; /* Computed effective width of device */
|
int width) /* Computed effective width of device */
|
||||||
{
|
{
|
||||||
ExtDevice *newdevptr, *nextdev;
|
ExtDevice *newdevptr, *nextdev;
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -2206,11 +2208,11 @@ extDevFindParamMatch(devptr, length, width)
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extSDTileFunc(tile, dinfo, pNum, arg)
|
extSDTileFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* UNUSED */
|
TileType dinfo, /* UNUSED */
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg; /* UNUSED */
|
FindRegion *arg) /* UNUSED */
|
||||||
{
|
{
|
||||||
LinkedTile *newdevtile;
|
LinkedTile *newdevtile;
|
||||||
|
|
||||||
|
|
@ -2238,10 +2240,10 @@ extSDTileFunc(tile, dinfo, pNum, arg)
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
extTransFindTermArea(tile, dinfo, eapd)
|
extTransFindTermArea(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
ExtAreaPerimData *eapd;
|
ExtAreaPerimData *eapd)
|
||||||
{
|
{
|
||||||
extEnumTerminal(tile, dinfo, DBConnectTbl, extTermAPFunc, (ClientData)eapd);
|
extEnumTerminal(tile, dinfo, DBConnectTbl, extTermAPFunc, (ClientData)eapd);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -2279,10 +2281,10 @@ extTransFindTermArea(tile, dinfo, eapd)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputDevices(def, transList, outFile)
|
extOutputDevices(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
TransRegion *transList; /* Transistor regions built up in first pass */
|
TransRegion *transList, /* Transistor regions built up in first pass */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
NodeRegion *node, *subsNode;
|
NodeRegion *node, *subsNode;
|
||||||
TransRegion *reg;
|
TransRegion *reg;
|
||||||
|
|
@ -3308,13 +3310,13 @@ typedef struct _node_type {
|
||||||
} NodeAndType;
|
} NodeAndType;
|
||||||
|
|
||||||
int
|
int
|
||||||
extTransFindSubs(tile, dinfo, mask, def, sn, layerptr)
|
extTransFindSubs(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
NodeRegion **sn;
|
NodeRegion **sn,
|
||||||
TileType *layerptr;
|
TileType *layerptr)
|
||||||
{
|
{
|
||||||
Rect tileArea, tileAreaPlus;
|
Rect tileArea, tileAreaPlus;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -3357,10 +3359,10 @@ extTransFindSubs(tile, dinfo, mask, def, sn, layerptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extTransFindSubsFunc1(tile, dinfo, noderecptr)
|
extTransFindSubsFunc1(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
NodeAndType *noderecptr;
|
NodeAndType *noderecptr)
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
|
|
||||||
|
|
@ -3392,12 +3394,12 @@ extTransFindSubsFunc1(tile, dinfo, noderecptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extTransFindId(tile, dinfo, mask, def, idtypeptr)
|
extTransFindId(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
TileType *idtypeptr;
|
TileType *idtypeptr)
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
Rect tileArea;
|
Rect tileArea;
|
||||||
|
|
@ -3420,10 +3422,10 @@ extTransFindId(tile, dinfo, mask, def, idtypeptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extTransFindIdFunc1(tile, dinfo, idtypeptr)
|
extTransFindIdFunc1(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
TileType *idtypeptr;
|
TileType *idtypeptr)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* ID Layer found overlapping device area, so return 1 to halt search.
|
* ID Layer found overlapping device area, so return 1 to halt search.
|
||||||
|
|
@ -3454,9 +3456,9 @@ extTransFindIdFunc1(tile, dinfo, idtypeptr)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ExtDevice *
|
ExtDevice *
|
||||||
extDevFindMatch(deventry, t)
|
extDevFindMatch(
|
||||||
ExtDevice *deventry;
|
ExtDevice *deventry,
|
||||||
TileType t;
|
TileType t)
|
||||||
{
|
{
|
||||||
ExtDevice *devptr;
|
ExtDevice *devptr;
|
||||||
int i, j, k, matchflags;
|
int i, j, k, matchflags;
|
||||||
|
|
@ -3539,11 +3541,11 @@ extDevFindMatch(deventry, t)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extTransTileFunc(tile, dinfo, pNum, arg)
|
extTransTileFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TileTypeBitMask mask, cmask, *smask;
|
TileTypeBitMask mask, cmask, *smask;
|
||||||
TileType loctype, idlayer, sublayer;
|
TileType loctype, idlayer, sublayer;
|
||||||
|
|
@ -3755,9 +3757,9 @@ extTransTileFunc(tile, dinfo, pNum, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extAddSharedDevice(eapd, node)
|
extAddSharedDevice(
|
||||||
ExtAreaPerimData *eapd;
|
ExtAreaPerimData *eapd,
|
||||||
NodeRegion *node;
|
NodeRegion *node)
|
||||||
{
|
{
|
||||||
ExtNodeList *nl, *newnl;
|
ExtNodeList *nl, *newnl;
|
||||||
|
|
||||||
|
|
@ -3797,10 +3799,10 @@ extAddSharedDevice(eapd, node)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTermAPFunc(tile, dinfo, eapd)
|
extTermAPFunc(
|
||||||
Tile *tile; /* Tile extending a device terminal */
|
Tile *tile, /* Tile extending a device terminal */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
ExtAreaPerimData *eapd; /* Area and perimeter totals for terminal */
|
ExtAreaPerimData *eapd) /* Area and perimeter totals for terminal */
|
||||||
{
|
{
|
||||||
TileType type, tpdi;
|
TileType type, tpdi;
|
||||||
Tile *tp;
|
Tile *tp;
|
||||||
|
|
@ -3946,9 +3948,9 @@ extTermAPFunc(tile, dinfo, eapd)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extTransPerimFunc(bp, cdata)
|
extTransPerimFunc(
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
ClientData cdata; /* UNUSED */
|
ClientData cdata) /* UNUSED */
|
||||||
{
|
{
|
||||||
TileType tinside, toutside, dinfo;
|
TileType tinside, toutside, dinfo;
|
||||||
Tile *tile;
|
Tile *tile;
|
||||||
|
|
@ -4226,11 +4228,11 @@ extTransPerimFunc(bp, cdata)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extAnnularTileFunc(tile, dinfo, pNum, arg)
|
extAnnularTileFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg; /* UNUSED */
|
FindRegion *arg) /* UNUSED */
|
||||||
{
|
{
|
||||||
TileTypeBitMask mask;
|
TileTypeBitMask mask;
|
||||||
TileType loctype;
|
TileType loctype;
|
||||||
|
|
@ -4248,7 +4250,7 @@ extAnnularTileFunc(tile, dinfo, pNum, arg)
|
||||||
|
|
||||||
mask = ExtCurStyle->exts_deviceConn[loctype];
|
mask = ExtCurStyle->exts_deviceConn[loctype];
|
||||||
TTMaskCom(&mask);
|
TTMaskCom(&mask);
|
||||||
extEnumTilePerim(tile, dinfo, &mask, pNum, extSpecialPerimFunc, (ClientData) TRUE);
|
extEnumTilePerim(tile, dinfo, &mask, pNum, (int (*)())extSpecialPerimFunc, (ClientData) TRUE);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4278,11 +4280,11 @@ extAnnularTileFunc(tile, dinfo, pNum, arg)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extResistorTileFunc(tile, dinfo, pNum, arg)
|
extResistorTileFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg; /* UNUSED */
|
FindRegion *arg) /* UNUSED */
|
||||||
{
|
{
|
||||||
TileTypeBitMask mask;
|
TileTypeBitMask mask;
|
||||||
TileType loctype;
|
TileType loctype;
|
||||||
|
|
@ -4309,7 +4311,7 @@ extResistorTileFunc(tile, dinfo, pNum, arg)
|
||||||
TTMaskSetMask(&mask, &devptr->exts_deviceSDTypes[0]);
|
TTMaskSetMask(&mask, &devptr->exts_deviceSDTypes[0]);
|
||||||
TTMaskCom(&mask);
|
TTMaskCom(&mask);
|
||||||
|
|
||||||
extEnumTilePerim(tile, dinfo, &mask, pNum, extSpecialPerimFunc, (ClientData)FALSE);
|
extEnumTilePerim(tile, dinfo, &mask, pNum, (int (*)())extSpecialPerimFunc, (ClientData)FALSE);
|
||||||
|
|
||||||
if (extSpecialBounds[0] != NULL) break;
|
if (extSpecialBounds[0] != NULL) break;
|
||||||
devptr = devptr->exts_next;
|
devptr = devptr->exts_next;
|
||||||
|
|
@ -4326,9 +4328,9 @@ extResistorTileFunc(tile, dinfo, pNum, arg)
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSpecialPerimFunc(bp, sense)
|
extSpecialPerimFunc(
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
bool sense;
|
bool sense)
|
||||||
{
|
{
|
||||||
TileType tinside, toutside, termdinfo;
|
TileType tinside, toutside, termdinfo;
|
||||||
NodeRegion *termNode;
|
NodeRegion *termNode;
|
||||||
|
|
@ -4586,17 +4588,17 @@ extSpecialPerimFunc(bp, sense)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTransOutTerminal(lreg, ll, whichTerm, len, area, perim, shared, outFile)
|
extTransOutTerminal(
|
||||||
LabRegion *lreg; /* Node connected to terminal */
|
LabRegion *lreg, /* Node connected to terminal */
|
||||||
LabelList *ll; /* Gate's label list */
|
LabelList *ll, /* Gate's label list */
|
||||||
int whichTerm; /* Which terminal we are processing. The gate
|
int whichTerm, /* Which terminal we are processing. The gate
|
||||||
* is indicated by LL_GATEATTR.
|
* is indicated by LL_GATEATTR.
|
||||||
*/
|
*/
|
||||||
int len; /* Length of perimeter along terminal */
|
int len, /* Length of perimeter along terminal */
|
||||||
int area; /* Total area of terminal */
|
int area, /* Total area of terminal */
|
||||||
int perim; /* Total perimeter of terminal (includes len) */
|
int perim, /* Total perimeter of terminal (includes len) */
|
||||||
int shared; /* Number of devices sharing the terminal */
|
int shared, /* Number of devices sharing the terminal */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
int n;
|
int n;
|
||||||
|
|
@ -4652,10 +4654,10 @@ extTransOutTerminal(lreg, ll, whichTerm, len, area, perim, shared, outFile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTransBad(def, tp, mesg)
|
extTransBad(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
Tile *tp;
|
Tile *tp,
|
||||||
char *mesg;
|
char *mesg)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
||||||
|
|
@ -4686,9 +4688,9 @@ extTransBad(def, tp, mesg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extLabType(text, typeMask)
|
extLabType(
|
||||||
char *text;
|
char *text,
|
||||||
int typeMask;
|
int typeMask)
|
||||||
{
|
{
|
||||||
if (*text == '\0')
|
if (*text == '\0')
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
|
|
@ -4905,11 +4907,11 @@ Tile *extNodeToTile(np, et, dinfo)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSetNodeNum(reg, plane, tile, dinfo)
|
extSetNodeNum(
|
||||||
LabRegion *reg;
|
LabRegion *reg,
|
||||||
int plane;
|
int plane,
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo)
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
|
|
||||||
|
|
@ -4973,10 +4975,10 @@ extSetNodeNum(reg, plane, tile, dinfo)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ExtRegion *
|
ExtRegion *
|
||||||
extTransFirst(tile, dinfo, arg)
|
extTransFirst(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TransRegion *reg;
|
TransRegion *reg;
|
||||||
|
|
||||||
|
|
@ -5006,11 +5008,11 @@ extTransFirst(tile, dinfo, arg)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extTransEach(tile, dinfo, pNum, arg)
|
extTransEach(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* unused, should be handled */
|
TileType dinfo, /* unused, should be handled */
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TransRegion *reg = (TransRegion *) arg->fra_region;
|
TransRegion *reg = (TransRegion *) arg->fra_region;
|
||||||
int area = TILEAREA(tile);
|
int area = TILEAREA(tile);
|
||||||
|
|
@ -5054,12 +5056,12 @@ Stack *extNodeStack = NULL;
|
||||||
Rect *extNodeClipArea = NULL;
|
Rect *extNodeClipArea = NULL;
|
||||||
|
|
||||||
NodeRegion *
|
NodeRegion *
|
||||||
extFindNodes(def, clipArea, subonly)
|
extFindNodes(
|
||||||
CellDef *def; /* Def whose nodes are being found */
|
CellDef *def, /* Def whose nodes are being found */
|
||||||
Rect *clipArea; /* If non-NULL, ignore perimeter and area that extend
|
Rect *clipArea, /* If non-NULL, ignore perimeter and area that extend
|
||||||
* outside this rectangle.
|
* outside this rectangle.
|
||||||
*/
|
*/
|
||||||
bool subonly; /* If true, only find the substrate node, and return */
|
bool subonly) /* If true, only find the substrate node, and return */
|
||||||
{
|
{
|
||||||
int extNodeAreaFunc();
|
int extNodeAreaFunc();
|
||||||
int extSubsFunc();
|
int extSubsFunc();
|
||||||
|
|
@ -5208,10 +5210,10 @@ extFindNodes(def, clipArea, subonly)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubsFunc(tile, dinfo, arg)
|
extSubsFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
Rect tileArea;
|
Rect tileArea;
|
||||||
|
|
@ -5245,10 +5247,10 @@ extSubsFunc(tile, dinfo, arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubsFunc2(tile, dinfo, arg)
|
extSubsFunc2(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; // Unused
|
TileType dinfo, // Unused
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
Rect tileArea;
|
Rect tileArea;
|
||||||
|
|
@ -5285,20 +5287,20 @@ extSubsFunc2(tile, dinfo, arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubsFunc3(tile, dinfo, clientdata)
|
extSubsFunc3(
|
||||||
Tile *tile; /* (unused) */
|
Tile *tile, /* (unused) */
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
ClientData clientdata; /* (unused) */
|
ClientData clientdata) /* (unused) */
|
||||||
{
|
{
|
||||||
/* Stops the search because something that was not space was found */
|
/* Stops the search because something that was not space was found */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extNodeAreaFunc(tile, dinfo, arg)
|
extNodeAreaFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
int tilePlaneNum, pNum, len, resistClass, n, nclasses;
|
int tilePlaneNum, pNum, len, resistClass, n, nclasses;
|
||||||
dlong area;
|
dlong area;
|
||||||
|
|
@ -5761,9 +5763,9 @@ donesides:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSetCapValue(he, value)
|
extSetCapValue(
|
||||||
HashEntry *he;
|
HashEntry *he,
|
||||||
CapValue value;
|
CapValue value)
|
||||||
{
|
{
|
||||||
if (HashGetValue(he) == NULL)
|
if (HashGetValue(he) == NULL)
|
||||||
HashSetValue(he, (CapValue *) mallocMagic(sizeof(CapValue)));
|
HashSetValue(he, (CapValue *) mallocMagic(sizeof(CapValue)));
|
||||||
|
|
@ -5771,8 +5773,8 @@ extSetCapValue(he, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
CapValue
|
CapValue
|
||||||
extGetCapValue(he)
|
extGetCapValue(
|
||||||
HashEntry *he;
|
HashEntry *he)
|
||||||
{
|
{
|
||||||
if (HashGetValue(he) == NULL)
|
if (HashGetValue(he) == NULL)
|
||||||
extSetCapValue(he, (CapValue) 0);
|
extSetCapValue(he, (CapValue) 0);
|
||||||
|
|
@ -5795,8 +5797,8 @@ extGetCapValue(he)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extCapHashKill(ht)
|
extCapHashKill(
|
||||||
HashTable *ht;
|
HashTable *ht)
|
||||||
{
|
{
|
||||||
HashSearch hs;
|
HashSearch hs;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
int extOutputUsesFunc();
|
int extOutputUsesFunc();
|
||||||
|
|
||||||
Plane* extCellFile();
|
Plane* extCellFile(CellDef *def, FILE *f, bool isTop);
|
||||||
void extHeader();
|
void extHeader();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -76,10 +76,10 @@ void extHeader();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Plane *
|
Plane *
|
||||||
ExtCell(def, outName, isTop)
|
ExtCell(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
char *outName; /* Name of output file; if NULL, derive from def name */
|
char *outName, /* Name of output file; if NULL, derive from def name */
|
||||||
bool isTop; /* If TRUE, cell is the top level cell */
|
bool isTop) /* If TRUE, cell is the top level cell */
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
FILE *f = NULL;
|
FILE *f = NULL;
|
||||||
|
|
@ -150,16 +150,16 @@ ExtCell(def, outName, isTop)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
ExtFileOpen(def, file, mode, prealfile)
|
ExtFileOpen(
|
||||||
CellDef *def; /* Cell whose .ext file is to be written */
|
CellDef *def, /* Cell whose .ext file is to be written */
|
||||||
char *file; /* If non-NULL, open 'name'.ext; otherwise,
|
char *file, /* If non-NULL, open 'name'.ext; otherwise,
|
||||||
* derive filename from 'def' as described
|
* derive filename from 'def' as described
|
||||||
* above.
|
* above.
|
||||||
*/
|
*/
|
||||||
char *mode; /* Either "r" or "w", the mode in which the .ext
|
char *mode, /* Either "r" or "w", the mode in which the .ext
|
||||||
* file is to be opened.
|
* file is to be opened.
|
||||||
*/
|
*/
|
||||||
char **prealfile; /* If this is non-NULL, it gets set to point to
|
char **prealfile) /* If this is non-NULL, it gets set to point to
|
||||||
* a string holding the name of the .ext file.
|
* a string holding the name of the .ext file.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -287,8 +287,8 @@ ExtFileOpen(def, file, mode, prealfile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Plane *
|
Plane *
|
||||||
extPrepSubstrate(def)
|
extPrepSubstrate(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
CellUse dummy;
|
CellUse dummy;
|
||||||
|
|
@ -363,8 +363,8 @@ extPrepSubstrate(def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Plane *
|
Plane *
|
||||||
extResPrepSubstrate(def)
|
extResPrepSubstrate(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
CellUse dummy;
|
CellUse dummy;
|
||||||
|
|
@ -436,9 +436,9 @@ extResPrepSubstrate(def)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtRevertSubstrate(def, savePlane)
|
ExtRevertSubstrate(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
Plane *savePlane;
|
Plane *savePlane)
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
Plane *subPlane;
|
Plane *subPlane;
|
||||||
|
|
@ -472,10 +472,10 @@ ExtRevertSubstrate(def, savePlane)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Plane *
|
Plane *
|
||||||
extCellFile(def, f, isTop)
|
extCellFile(
|
||||||
CellDef *def; /* Def to be extracted */
|
CellDef *def, /* Def to be extracted */
|
||||||
FILE *f; /* Output to this file */
|
FILE *f, /* Output to this file */
|
||||||
bool isTop; /* TRUE if the cell is the top level cell */
|
bool isTop) /* TRUE if the cell is the top level cell */
|
||||||
{
|
{
|
||||||
NodeRegion *reg;
|
NodeRegion *reg;
|
||||||
Plane *saveSub;
|
Plane *saveSub;
|
||||||
|
|
@ -559,9 +559,9 @@ extCellFile(def, f, isTop)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHeader(def, f)
|
extHeader(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
FILE *f; /* Write to this file */
|
FILE *f) /* Write to this file */
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
bool propfound;
|
bool propfound;
|
||||||
|
|
@ -650,9 +650,9 @@ extHeader(def, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extOutputUsesFunc(cu, outf)
|
extOutputUsesFunc(
|
||||||
CellUse *cu;
|
CellUse *cu,
|
||||||
FILE *outf;
|
FILE *outf)
|
||||||
{
|
{
|
||||||
Transform *t = &cu->cu_transform;
|
Transform *t = &cu->cu_transform;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -166,10 +166,10 @@ void extAdjustCouple(he, c, str)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extFindCoupling(def, table, clipArea)
|
extFindCoupling(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
HashTable *table;
|
HashTable *table,
|
||||||
Rect *clipArea;
|
Rect *clipArea)
|
||||||
{
|
{
|
||||||
const Rect *searchArea;
|
const Rect *searchArea;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -208,9 +208,9 @@ extFindCoupling(def, table, clipArea)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extRelocateSubstrateCoupling(table, subsnode)
|
extRelocateSubstrateCoupling(
|
||||||
HashTable *table; /* Coupling capacitance hash table */
|
HashTable *table, /* Coupling capacitance hash table */
|
||||||
NodeRegion *subsnode; /* Node record for substrate */
|
NodeRegion *subsnode) /* Node record for substrate */
|
||||||
{
|
{
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
CoupleKey *ck;
|
CoupleKey *ck;
|
||||||
|
|
@ -265,9 +265,9 @@ extRelocateSubstrateCoupling(table, subsnode)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputCoupling(table, outFile)
|
extOutputCoupling(
|
||||||
HashTable *table; /* Coupling capacitance hash table */
|
HashTable *table, /* Coupling capacitance hash table */
|
||||||
FILE *outFile; /* Output file */
|
FILE *outFile) /* Output file */
|
||||||
{
|
{
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
CoupleKey *ck;
|
CoupleKey *ck;
|
||||||
|
|
@ -312,10 +312,10 @@ extOutputCoupling(table, outFile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extBasicOverlap(tile, dinfo, ecs)
|
extBasicOverlap(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
extCapStruct *ecs;
|
extCapStruct *ecs)
|
||||||
{
|
{
|
||||||
int thisType;
|
int thisType;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -413,10 +413,10 @@ struct sideoverlap
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
extAddOverlap(tbelow, dinfo, ecpls)
|
extAddOverlap(
|
||||||
Tile *tbelow;
|
Tile *tbelow,
|
||||||
TileType dinfo; /* unused, but needs to be handled */
|
TileType dinfo, /* unused, but needs to be handled */
|
||||||
extCoupleStruct *ecpls;
|
extCoupleStruct *ecpls)
|
||||||
{
|
{
|
||||||
int extSubtractOverlap(), extSubtractOverlap2();
|
int extSubtractOverlap(), extSubtractOverlap2();
|
||||||
NodeRegion *rabove, *rbelow;
|
NodeRegion *rabove, *rbelow;
|
||||||
|
|
@ -551,10 +551,10 @@ extAddOverlap(tbelow, dinfo, ecpls)
|
||||||
/* Simple overlap. The area of overlap is subtracted from ov->o_area */
|
/* Simple overlap. The area of overlap is subtracted from ov->o_area */
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtractOverlap(tile, dinfo, ov)
|
extSubtractOverlap(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
struct overlap *ov;
|
struct overlap *ov)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
int area;
|
int area;
|
||||||
|
|
@ -575,10 +575,10 @@ extSubtractOverlap(tile, dinfo, ov)
|
||||||
/* shielding plane. */
|
/* shielding plane. */
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtractOverlap2(tile, dinfo, ov)
|
extSubtractOverlap2(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
struct overlap *ov;
|
struct overlap *ov)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
struct overlap ovnew;
|
struct overlap ovnew;
|
||||||
|
|
@ -637,10 +637,10 @@ extSubtractOverlap2(tile, dinfo, ov)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtractSideOverlap(tile, dinfo, sov)
|
extSubtractSideOverlap(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
struct sideoverlap *sov;
|
struct sideoverlap *sov)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
int area, dnear, dfar, length;
|
int area, dnear, dfar, length;
|
||||||
|
|
@ -715,10 +715,10 @@ extSubtractSideOverlap(tile, dinfo, sov)
|
||||||
/* shielding plane. */
|
/* shielding plane. */
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtractSideOverlap2(tile, dinfo, sov)
|
extSubtractSideOverlap2(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
struct sideoverlap *sov;
|
struct sideoverlap *sov)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
struct sideoverlap sovnew;
|
struct sideoverlap sovnew;
|
||||||
|
|
@ -795,10 +795,10 @@ extSubtractSideOverlap2(tile, dinfo, sov)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extBasicCouple(tile, dinfo, ecs)
|
extBasicCouple(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
extCapStruct *ecs;
|
extCapStruct *ecs)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
||||||
|
|
@ -1070,9 +1070,9 @@ extGetBoundaryRegions(int bdir,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extAddCouple(bp, ecs)
|
extAddCouple(
|
||||||
Boundary *bp; /* Boundary being considered */
|
Boundary *bp, /* Boundary being considered */
|
||||||
extCapStruct *ecs;
|
extCapStruct *ecs)
|
||||||
{
|
{
|
||||||
TileType tin, tout;
|
TileType tin, tout;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -1203,10 +1203,10 @@ extAddCouple(bp, ecs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extRemoveSubcap(bp, clip, esws)
|
extRemoveSubcap(
|
||||||
Boundary *bp; /* Boundary with fringe capacitance */
|
Boundary *bp, /* Boundary with fringe capacitance */
|
||||||
Rect *clip; /* Area not being blocked */
|
Rect *clip, /* Area not being blocked */
|
||||||
extSidewallStruct *esws; /* Overlapping edge and plane information */
|
extSidewallStruct *esws) /* Overlapping edge and plane information */
|
||||||
{
|
{
|
||||||
int dnear, length;
|
int dnear, length;
|
||||||
double snear, cfrac;
|
double snear, cfrac;
|
||||||
|
|
@ -1277,10 +1277,10 @@ extRemoveSubcap(bp, clip, esws)
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
extFindOverlap(tp, area, esws)
|
extFindOverlap(
|
||||||
Tile *tp; /* Overlapped tile */
|
Tile *tp, /* Overlapped tile */
|
||||||
Rect *area; /* Area to check for coupling */
|
Rect *area, /* Area to check for coupling */
|
||||||
extSidewallStruct *esws; /* Overlapping edge and plane information */
|
extSidewallStruct *esws) /* Overlapping edge and plane information */
|
||||||
{
|
{
|
||||||
PlaneMask pMask;
|
PlaneMask pMask;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -1345,10 +1345,10 @@ extFindOverlap(tp, area, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideOverlapHalo(tp, dinfo, esws)
|
extSideOverlapHalo(
|
||||||
Tile *tp; /* Overlapped tile */
|
Tile *tp, /* Overlapped tile */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
extSidewallStruct *esws; /* Overlapping edge and plane information */
|
extSidewallStruct *esws) /* Overlapping edge and plane information */
|
||||||
{
|
{
|
||||||
Boundary *bp = esws->bp; /* Overlapping edge */
|
Boundary *bp = esws->bp; /* Overlapping edge */
|
||||||
NodeRegion *rtp = (NodeRegion *) ExtGetRegion(tp, dinfo);
|
NodeRegion *rtp = (NodeRegion *) ExtGetRegion(tp, dinfo);
|
||||||
|
|
@ -1576,10 +1576,10 @@ extSideOverlapHalo(tp, dinfo, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideOverlap(tp, dinfo, esws)
|
extSideOverlap(
|
||||||
Tile *tp; /* Overlapped tile */
|
Tile *tp, /* Overlapped tile */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
extSidewallStruct *esws; /* Overlapping edge and plane information */
|
extSidewallStruct *esws) /* Overlapping edge and plane information */
|
||||||
{
|
{
|
||||||
Boundary *bp = esws->bp; /* Overlapping edge */
|
Boundary *bp = esws->bp; /* Overlapping edge */
|
||||||
NodeRegion *rtp = (NodeRegion *) ExtGetRegion(tp, dinfo);
|
NodeRegion *rtp = (NodeRegion *) ExtGetRegion(tp, dinfo);
|
||||||
|
|
@ -1757,12 +1757,12 @@ extSideOverlap(tp, dinfo, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extWalkTop(area, mask, func, bp, esws)
|
extWalkTop(
|
||||||
Rect *area;
|
Rect *area,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
int (*func)();
|
int (*func)(),
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
Tile *tile, *tp;
|
Tile *tile, *tp;
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
@ -1865,12 +1865,12 @@ extWalkTop(area, mask, func, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extWalkBottom(area, mask, func, bp, esws)
|
extWalkBottom(
|
||||||
Rect *area;
|
Rect *area,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
int (*func)();
|
int (*func)(),
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
Tile *tile, *tp;
|
Tile *tile, *tp;
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
@ -1973,12 +1973,12 @@ extWalkBottom(area, mask, func, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extWalkRight(area, mask, func, bp, esws)
|
extWalkRight(
|
||||||
Rect *area;
|
Rect *area,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
int (*func)();
|
int (*func)(),
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
Tile *tile, *tp;
|
Tile *tile, *tp;
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
@ -2081,12 +2081,12 @@ extWalkRight(area, mask, func, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extWalkLeft(area, mask, func, bp, esws)
|
extWalkLeft(
|
||||||
Rect *area;
|
Rect *area,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
int (*func)();
|
int (*func)(),
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
Tile *tile, *tp;
|
Tile *tile, *tp;
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
@ -2194,10 +2194,10 @@ extWalkLeft(area, mask, func, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideLeft(tpfar, bp, esws)
|
extSideLeft(
|
||||||
Tile *tpfar;
|
Tile *tpfar,
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
NodeRegion *rinside, *rfar;
|
NodeRegion *rinside, *rfar;
|
||||||
Tile *tpnear;
|
Tile *tpnear;
|
||||||
|
|
@ -2246,10 +2246,10 @@ extSideLeft(tpfar, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideRight(tpfar, bp, esws)
|
extSideRight(
|
||||||
Tile *tpfar;
|
Tile *tpfar,
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
NodeRegion *rinside, *rfar;
|
NodeRegion *rinside, *rfar;
|
||||||
Tile *tpnear;
|
Tile *tpnear;
|
||||||
|
|
@ -2298,10 +2298,10 @@ extSideRight(tpfar, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideTop(tpfar, bp, esws)
|
extSideTop(
|
||||||
Tile *tpfar;
|
Tile *tpfar,
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
NodeRegion *rinside, *rfar;
|
NodeRegion *rinside, *rfar;
|
||||||
Tile *tpnear;
|
Tile *tpnear;
|
||||||
|
|
@ -2350,10 +2350,10 @@ extSideTop(tpfar, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSideBottom(tpfar, bp, esws)
|
extSideBottom(
|
||||||
Tile *tpfar;
|
Tile *tpfar,
|
||||||
Boundary *bp;
|
Boundary *bp,
|
||||||
extSidewallStruct *esws;
|
extSidewallStruct *esws)
|
||||||
{
|
{
|
||||||
NodeRegion *rinside, *rfar;
|
NodeRegion *rinside, *rfar;
|
||||||
Tile *tpnear;
|
Tile *tpnear;
|
||||||
|
|
@ -2403,14 +2403,15 @@ extSideBottom(tpfar, bp, esws)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSideCommon(rinside, rfar, tpnear, tpfar, bdir, overlap, sep, extCoupleList)
|
extSideCommon(
|
||||||
NodeRegion *rinside, *rfar; /* Both must be valid */
|
NodeRegion *rinside,
|
||||||
Tile *tpnear, *tpfar; /* Tiles on near and far side of edge */
|
NodeRegion *rfar,
|
||||||
int bdir; /* Boundary direction */
|
Tile *tpnear,
|
||||||
int overlap, sep; /* Overlap of this edge with original one,
|
Tile *tpfar,
|
||||||
* and distance between the two.
|
int bdir, /* Boundary direction */
|
||||||
*/
|
int overlap,
|
||||||
EdgeCap *extCoupleList; /* List of sidewall capacitance rules */
|
int sep,
|
||||||
|
EdgeCap *extCoupleList) /* List of sidewall capacitance rules */
|
||||||
{
|
{
|
||||||
TileType near, far;
|
TileType near, far;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,10 @@ bool extHardSetLabel();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ExtRegion *
|
ExtRegion *
|
||||||
extLabFirst(tile, dinfo, arg)
|
extLabFirst(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TransRegion *reg;
|
TransRegion *reg;
|
||||||
reg = (TransRegion *) mallocMagic((unsigned) (sizeof (TransRegion)));
|
reg = (TransRegion *) mallocMagic((unsigned) (sizeof (TransRegion)));
|
||||||
|
|
@ -97,11 +97,11 @@ extLabFirst(tile, dinfo, arg)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extLabEach(tile, dinfo, pNum, arg)
|
extLabEach(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TransRegion *reg = (TransRegion *) arg->fra_region;
|
TransRegion *reg = (TransRegion *) arg->fra_region;
|
||||||
|
|
||||||
|
|
@ -157,9 +157,9 @@ extLabEach(tile, dinfo, pNum, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHardProc(scx, arg)
|
extHardProc(
|
||||||
SearchContext *scx; /* Context of the search to this cell */
|
SearchContext *scx, /* Context of the search to this cell */
|
||||||
HardWay *arg; /* See above; this structure provides both
|
HardWay *arg) /* See above; this structure provides both
|
||||||
* options to govern how we generate labels
|
* options to govern how we generate labels
|
||||||
* and a place to store the label we return.
|
* and a place to store the label we return.
|
||||||
*/
|
*/
|
||||||
|
|
@ -294,13 +294,13 @@ done:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extHardSetLabel(scx, reg, arg)
|
extHardSetLabel(
|
||||||
SearchContext *scx; /* We use scx->scx_trans to transform label
|
SearchContext *scx, /* We use scx->scx_trans to transform label
|
||||||
* coordinates in the def scx->scx_use->cu_def
|
* coordinates in the def scx->scx_use->cu_def
|
||||||
* up to root coordinates.
|
* up to root coordinates.
|
||||||
*/
|
*/
|
||||||
TransRegion *reg; /* ExtRegion with a label list */
|
TransRegion *reg, /* ExtRegion with a label list */
|
||||||
HardWay *arg; /* We will set arg->hw_label if a node
|
HardWay *arg) /* We will set arg->hw_label if a node
|
||||||
* label is found on the label list of 'reg'.
|
* label is found on the label list of 'reg'.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -408,15 +408,15 @@ extHardSetLabel(scx, reg, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extHardGenerateLabel(scx, reg, arg)
|
extHardGenerateLabel(
|
||||||
SearchContext *scx; /* We use scx->scx_trans to transform the
|
SearchContext *scx, /* We use scx->scx_trans to transform the
|
||||||
* generated label's coordinates up to
|
* generated label's coordinates up to
|
||||||
* root coordinates.
|
* root coordinates.
|
||||||
*/
|
*/
|
||||||
TransRegion *reg; /* ExtRegion whose treg_ll and treg_pnum we use
|
TransRegion *reg, /* ExtRegion whose treg_ll and treg_pnum we use
|
||||||
* to generate a new label name.
|
* to generate a new label name.
|
||||||
*/
|
*/
|
||||||
HardWay *arg; /* We set arg->hw_label to the new label */
|
HardWay *arg) /* We set arg->hw_label to the new label */
|
||||||
{
|
{
|
||||||
TerminalPath *tpath = &arg->hw_tpath;
|
TerminalPath *tpath = &arg->hw_tpath;
|
||||||
char *srcp, *dstp;
|
char *srcp, *dstp;
|
||||||
|
|
@ -480,9 +480,9 @@ extHardGenerateLabel(scx, reg, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHardFreeAll(def, tReg)
|
extHardFreeAll(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
TransRegion *tReg;
|
TransRegion *tReg)
|
||||||
{
|
{
|
||||||
TransRegion *reg;
|
TransRegion *reg;
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
|
||||||
|
|
@ -124,10 +124,10 @@ bool extTestNMInteract(Tile *t1, TileType di1, Tile *t2, TileType di2)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierSubShieldFunc(tile, dinfo, clientdata)
|
extHierSubShieldFunc(
|
||||||
Tile *tile; /* (unused) */
|
Tile *tile, /* (unused) */
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
ClientData clientdata; /* (unused) */
|
ClientData clientdata) /* (unused) */
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -149,10 +149,11 @@ extHierSubShieldFunc(tile, dinfo, clientdata)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierSubstrate(ha, use, x, y)
|
extHierSubstrate(
|
||||||
HierExtractArg *ha; // Contains parent def and hash table
|
HierExtractArg *ha, // Contains parent def and hash table
|
||||||
CellUse *use; // Child use
|
CellUse *use, // Child use
|
||||||
int x, y; // Array subscripts, or -1 if not an array
|
int x,
|
||||||
|
int y)
|
||||||
{
|
{
|
||||||
NodeRegion *nodeList;
|
NodeRegion *nodeList;
|
||||||
HashTable *table = &ha->ha_connHash;
|
HashTable *table = &ha->ha_connHash;
|
||||||
|
|
@ -164,7 +165,7 @@ extHierSubstrate(ha, use, x, y)
|
||||||
Rect subArea;
|
Rect subArea;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
||||||
NodeRegion *extFindNodes();
|
NodeRegion *extFindNodes(CellDef *def, Rect *clipArea, bool subonly);
|
||||||
|
|
||||||
/* Backwards compatibility with tech files that don't */
|
/* Backwards compatibility with tech files that don't */
|
||||||
/* define a substrate plane or substrate connections. */
|
/* define a substrate plane or substrate connections. */
|
||||||
|
|
@ -336,9 +337,10 @@ extHierSubstrate(ha, use, x, y)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierConnections(ha, cumFlat, oneFlat)
|
extHierConnections(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
ExtTree *cumFlat, *oneFlat;
|
ExtTree *cumFlat,
|
||||||
|
ExtTree *oneFlat)
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
CellDef *sourceDef = oneFlat->et_use->cu_def;
|
CellDef *sourceDef = oneFlat->et_use->cu_def;
|
||||||
|
|
@ -399,10 +401,10 @@ extHierConnections(ha, cumFlat, oneFlat)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierConnectFunc1(oneTile, dinfo, ha)
|
extHierConnectFunc1(
|
||||||
Tile *oneTile; /* Comes from 'oneFlat' in extHierConnections */
|
Tile *oneTile, /* Comes from 'oneFlat' in extHierConnections */
|
||||||
TileType dinfo; /* Split tile information (unused) */
|
TileType dinfo, /* Split tile information (unused) */
|
||||||
HierExtractArg *ha; /* Extraction context */
|
HierExtractArg *ha) /* Extraction context */
|
||||||
{
|
{
|
||||||
CellDef *cumDef = extHierCumFlat->et_use->cu_def;
|
CellDef *cumDef = extHierCumFlat->et_use->cu_def;
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
@ -613,10 +615,10 @@ extHierFindTopNode(Tile *tile,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierConnectFunc2(cum, dinfo, ha)
|
extHierConnectFunc2(
|
||||||
Tile *cum; /* Comes from extHierCumFlat->et_use->cu_def */
|
Tile *cum, /* Comes from extHierCumFlat->et_use->cu_def */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
HierExtractArg *ha; /* Extraction context */
|
HierExtractArg *ha) /* Extraction context */
|
||||||
{
|
{
|
||||||
HashTable *table = &ha->ha_connHash;
|
HashTable *table = &ha->ha_connHash;
|
||||||
Node *node1, *node2;
|
Node *node1, *node2;
|
||||||
|
|
@ -799,10 +801,10 @@ extHierConnectFunc2(cum, dinfo, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierConnectFunc3(cum, dinfo, ha)
|
extHierConnectFunc3(
|
||||||
Tile *cum; /* Comes from extHierCumFlat->et_use->cu_def */
|
Tile *cum, /* Comes from extHierCumFlat->et_use->cu_def */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
HierExtractArg *ha; /* Extraction context */
|
HierExtractArg *ha) /* Extraction context */
|
||||||
{
|
{
|
||||||
HashTable *table = &ha->ha_connHash;
|
HashTable *table = &ha->ha_connHash;
|
||||||
Node *node1, *node2;
|
Node *node1, *node2;
|
||||||
|
|
@ -953,9 +955,11 @@ extHierConnectFunc3(cum, dinfo, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierAdjustments(ha, cumFlat, oneFlat, lookFlat)
|
extHierAdjustments(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha,
|
||||||
ExtTree *cumFlat, *oneFlat, *lookFlat;
|
ExtTree *cumFlat,
|
||||||
|
ExtTree *oneFlat,
|
||||||
|
ExtTree *lookFlat)
|
||||||
{
|
{
|
||||||
HashEntry *he, *heCum;
|
HashEntry *he, *heCum;
|
||||||
int n;
|
int n;
|
||||||
|
|
@ -1050,9 +1054,9 @@ extHierAdjustments(ha, cumFlat, oneFlat, lookFlat)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extOutputConns(table, outf)
|
extOutputConns(
|
||||||
HashTable *table;
|
HashTable *table,
|
||||||
FILE *outf;
|
FILE *outf)
|
||||||
{
|
{
|
||||||
CapValue c; /* cap value */
|
CapValue c; /* cap value */
|
||||||
NodeName *nn, *nnext;
|
NodeName *nn, *nnext;
|
||||||
|
|
@ -1149,8 +1153,8 @@ extOutputConns(table, outf)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Node *
|
Node *
|
||||||
extHierNewNode(he)
|
extHierNewNode(
|
||||||
HashEntry *he;
|
HashEntry *he)
|
||||||
{
|
{
|
||||||
int n, nclasses;
|
int n, nclasses;
|
||||||
NodeName *nn;
|
NodeName *nn;
|
||||||
|
|
@ -1199,10 +1203,10 @@ extHierNewNode(he)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
ExtRegion *
|
ExtRegion *
|
||||||
extHierLabFirst(tile, dinfo, arg)
|
extHierLabFirst(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
LabRegion *new;
|
LabRegion *new;
|
||||||
|
|
||||||
|
|
@ -1220,11 +1224,11 @@ extHierLabFirst(tile, dinfo, arg)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extHierLabEach(tile, dinfo, pNum, arg)
|
extHierLabEach(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
LabRegion *reg;
|
LabRegion *reg;
|
||||||
|
|
||||||
|
|
@ -1307,8 +1311,8 @@ extHierNewOne()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierFreeOne(et)
|
extHierFreeOne(
|
||||||
ExtTree *et;
|
ExtTree *et)
|
||||||
{
|
{
|
||||||
if (ExtOptions & EXT_DOCOUPLING)
|
if (ExtOptions & EXT_DOCOUPLING)
|
||||||
extCapHashKill(&et->et_coupleHash);
|
extCapHashKill(&et->et_coupleHash);
|
||||||
|
|
|
||||||
|
|
@ -87,13 +87,13 @@ int extInterSubtreePaint();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtFindInteractions(def, halo, bloatby, resultPlane)
|
ExtFindInteractions(
|
||||||
CellDef *def; /* Find interactions among children of def */
|
CellDef *def, /* Find interactions among children of def */
|
||||||
int halo; /* Interaction is elements closer than halo */
|
int halo, /* Interaction is elements closer than halo */
|
||||||
int bloatby; /* Bloat each interaction area by this amount when
|
int bloatby, /* Bloat each interaction area by this amount when
|
||||||
* painting into resultPlane.
|
* painting into resultPlane.
|
||||||
*/
|
*/
|
||||||
Plane *resultPlane; /* Paint interaction areas into this plane */
|
Plane *resultPlane) /* Paint interaction areas into this plane */
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
|
|
||||||
|
|
@ -129,9 +129,9 @@ ExtFindInteractions(def, halo, bloatby, resultPlane)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterSubtreePaint(scx, def)
|
extInterSubtreePaint(
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -165,8 +165,8 @@ extInterSubtreePaint(scx, def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterSubtree(scx)
|
extInterSubtree(
|
||||||
SearchContext *scx;
|
SearchContext *scx)
|
||||||
{
|
{
|
||||||
CellUse *oldUse = extInterUse;
|
CellUse *oldUse = extInterUse;
|
||||||
SearchContext parentScx;
|
SearchContext parentScx;
|
||||||
|
|
@ -185,8 +185,9 @@ extInterSubtree(scx)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterSubtreeClip(overlapScx, scx)
|
extInterSubtreeClip(
|
||||||
SearchContext *overlapScx, *scx;
|
SearchContext *overlapScx,
|
||||||
|
SearchContext *scx)
|
||||||
{
|
{
|
||||||
Rect r, r2;
|
Rect r, r2;
|
||||||
|
|
||||||
|
|
@ -227,11 +228,12 @@ extInterSubtreeClip(overlapScx, scx)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterSubtreeElement(use, trans, x, y, r)
|
extInterSubtreeElement(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
Transform *trans;
|
Transform *trans,
|
||||||
int x, y;
|
int x,
|
||||||
Rect *r;
|
int y,
|
||||||
|
Rect *r)
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
Transform tinv;
|
Transform tinv;
|
||||||
|
|
@ -270,10 +272,10 @@ extInterSubtreeElement(use, trans, x, y, r)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterSubtreeTile(tile, dinfo, cxp)
|
extInterSubtreeTile(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
TreeContext *cxp;
|
TreeContext *cxp)
|
||||||
{
|
{
|
||||||
SearchContext newscx;
|
SearchContext newscx;
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
@ -312,8 +314,8 @@ extInterSubtreeTile(tile, dinfo, cxp)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterOverlapSubtree(scx)
|
extInterOverlapSubtree(
|
||||||
SearchContext *scx;
|
SearchContext *scx)
|
||||||
{
|
{
|
||||||
if (extInterUse == scx->scx_use)
|
if (extInterUse == scx->scx_use)
|
||||||
return (2);
|
return (2);
|
||||||
|
|
@ -343,10 +345,10 @@ extInterOverlapSubtree(scx)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterOverlapTile(tile, dinfo, cxp)
|
extInterOverlapTile(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
TreeContext *cxp;
|
TreeContext *cxp)
|
||||||
{
|
{
|
||||||
SearchContext *scx = cxp->tc_scx;
|
SearchContext *scx = cxp->tc_scx;
|
||||||
Rect r, rootr;
|
Rect r, rootr;
|
||||||
|
|
@ -410,14 +412,14 @@ extInterOverlapTile(tile, dinfo, cxp)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extTreeSrPaintArea(scx, func, cdarg)
|
extTreeSrPaintArea(
|
||||||
SearchContext *scx; /* Pointer to search context specifying
|
SearchContext *scx, /* Pointer to search context specifying
|
||||||
* a cell use to search, an area in the
|
* a cell use to search, an area in the
|
||||||
* coordinates of the cell's def, and a
|
* coordinates of the cell's def, and a
|
||||||
* transform back to "root" coordinates.
|
* transform back to "root" coordinates.
|
||||||
*/
|
*/
|
||||||
int (*func)(); /* Function to apply at each qualifying tile */
|
int (*func)(), /* Function to apply at each qualifying tile */
|
||||||
ClientData cdarg; /* Client data for above function */
|
ClientData cdarg) /* Client data for above function */
|
||||||
{
|
{
|
||||||
int extTreeSrFunc();
|
int extTreeSrFunc();
|
||||||
CellDef *def = scx->scx_use->cu_def;
|
CellDef *def = scx->scx_use->cu_def;
|
||||||
|
|
@ -455,9 +457,9 @@ extTreeSrPaintArea(scx, func, cdarg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extTreeSrFunc(scx, fp)
|
extTreeSrFunc(
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
TreeFilter *fp;
|
TreeFilter *fp)
|
||||||
{
|
{
|
||||||
CellDef *def = scx->scx_use->cu_def;
|
CellDef *def = scx->scx_use->cu_def;
|
||||||
TreeContext context;
|
TreeContext context;
|
||||||
|
|
|
||||||
|
|
@ -144,8 +144,8 @@ void extPathFloodTile();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtSetDriver(name)
|
ExtSetDriver(
|
||||||
char *name;
|
char *name)
|
||||||
{
|
{
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
|
|
@ -154,8 +154,8 @@ ExtSetDriver(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtSetReceiver(name)
|
ExtSetReceiver(
|
||||||
char *name;
|
char *name)
|
||||||
{
|
{
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
|
|
@ -238,12 +238,12 @@ extLengthInit()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extLength(rootUse, f)
|
extLength(
|
||||||
CellUse *rootUse; /* The names stored in the driver and receiver tables
|
CellUse *rootUse, /* The names stored in the driver and receiver tables
|
||||||
* should all be relative to this root cell. It is
|
* should all be relative to this root cell. It is
|
||||||
* the responsibility of the caller to ensure this.
|
* the responsibility of the caller to ensure this.
|
||||||
*/
|
*/
|
||||||
FILE *f; /* Open output file */
|
FILE *f) /* Open output file */
|
||||||
{
|
{
|
||||||
Label *dList, *rList, *dLab, *rLab;
|
Label *dList, *rList, *dLab, *rLab;
|
||||||
int min, max;
|
int min, max;
|
||||||
|
|
@ -346,9 +346,9 @@ extLength(rootUse, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Label *
|
Label *
|
||||||
extLengthYank(use, labList)
|
extLengthYank(
|
||||||
CellUse *use; /* Cell whose material is to be traced */
|
CellUse *use, /* Cell whose material is to be traced */
|
||||||
Label *labList; /* List of labels whose attached net is to be traced */
|
Label *labList) /* List of labels whose attached net is to be traced */
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
char mesg[512];
|
char mesg[512];
|
||||||
|
|
@ -434,10 +434,10 @@ extLengthYank(use, labList)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extLengthLabels(tile, dinfo, rootUse)
|
extLengthLabels(
|
||||||
Tile *tile; /* Some tile in extPathDef */
|
Tile *tile, /* Some tile in extPathDef */
|
||||||
TileType dinfo; /* Split tile information (unused) */
|
TileType dinfo, /* Split tile information (unused) */
|
||||||
CellUse *rootUse; /* The original root cell */
|
CellUse *rootUse) /* The original root cell */
|
||||||
{
|
{
|
||||||
char name[MAXNAMESIZE];
|
char name[MAXNAMESIZE];
|
||||||
TileTypeBitMask mask;
|
TileTypeBitMask mask;
|
||||||
|
|
@ -486,10 +486,10 @@ extLengthLabels(tile, dinfo, rootUse)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extLengthLabelsFunc(scx, label, tpath)
|
extLengthLabelsFunc(
|
||||||
SearchContext *scx; /* Where in the search tree we are */
|
SearchContext *scx, /* Where in the search tree we are */
|
||||||
Label *label; /* The label itself */
|
Label *label, /* The label itself */
|
||||||
TerminalPath *tpath; /* Identifies hierarchical prefix for label.
|
TerminalPath *tpath) /* Identifies hierarchical prefix for label.
|
||||||
* The full hierarchical pathname will be the
|
* The full hierarchical pathname will be the
|
||||||
* concatenation of the string tpath->tp_first
|
* concatenation of the string tpath->tp_first
|
||||||
* and the string label->lab_text.
|
* and the string label->lab_text.
|
||||||
|
|
@ -544,9 +544,9 @@ extLengthLabelsFunc(scx, label, tpath)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Label *
|
Label *
|
||||||
extPathLabel(use, text)
|
extPathLabel(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
char *text;
|
char *text)
|
||||||
{
|
{
|
||||||
int extPathLabelFunc();
|
int extPathLabelFunc();
|
||||||
Label *lab;
|
Label *lab;
|
||||||
|
|
@ -578,11 +578,11 @@ extPathLabel(use, text)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extPathLabelFunc(rect, text, childLab, pLabList)
|
extPathLabelFunc(
|
||||||
Rect *rect; /* Transformed location of the label */
|
Rect *rect, /* Transformed location of the label */
|
||||||
char *text; /* Full hierarchical name of the label */
|
char *text, /* Full hierarchical name of the label */
|
||||||
Label *childLab; /* The label itself */
|
Label *childLab, /* The label itself */
|
||||||
Label **pLabList; /* Cons the newly allocated label onto the front of
|
Label **pLabList) /* Cons the newly allocated label onto the front of
|
||||||
* this list.
|
* this list.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -630,9 +630,11 @@ extPathLabelFunc(rect, text, childLab, pLabList)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extPathPairDistance(lab1, lab2, pMin, pMax)
|
extPathPairDistance(
|
||||||
Label *lab1, *lab2;
|
Label *lab1,
|
||||||
int *pMin, *pMax;
|
Label *lab2,
|
||||||
|
int *pMin,
|
||||||
|
int *pMax)
|
||||||
{
|
{
|
||||||
struct extPathArg epa;
|
struct extPathArg epa;
|
||||||
TileTypeBitMask mask;
|
TileTypeBitMask mask;
|
||||||
|
|
@ -694,8 +696,8 @@ extPathPairDistance(lab1, lab2, pMin, pMax)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extPathResetClient(tile)
|
extPathResetClient(
|
||||||
Tile *tile;
|
Tile *tile)
|
||||||
{
|
{
|
||||||
TiSetClient(tile, CLIENTDEFAULT);
|
TiSetClient(tile, CLIENTDEFAULT);
|
||||||
return (0);
|
return (0);
|
||||||
|
|
@ -728,10 +730,10 @@ extPathResetClient(tile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extPathPairFunc(tile, dinfo, epa)
|
extPathPairFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; // Unused
|
TileType dinfo, // Unused
|
||||||
struct extPathArg *epa;
|
struct extPathArg *epa)
|
||||||
{
|
{
|
||||||
Point startPoint;
|
Point startPoint;
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
@ -772,11 +774,11 @@ extPathPairFunc(tile, dinfo, epa)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extPathFlood(tile, p, distance, epa)
|
extPathFlood(
|
||||||
Tile *tile; /* Tile whose neighbors we are to visit */
|
Tile *tile, /* Tile whose neighbors we are to visit */
|
||||||
Point *p; /* Usually at center of 'tile' */
|
Point *p, /* Usually at center of 'tile' */
|
||||||
int distance; /* Distance to 'p' */
|
int distance, /* Distance to 'p' */
|
||||||
struct extPathArg *epa; /* Update epa_min and epa_max when we reach
|
struct extPathArg *epa) /* Update epa_min and epa_max when we reach
|
||||||
* the destination epa_lab2.
|
* the destination epa_lab2.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -911,10 +913,10 @@ extPathFlood(tile, p, distance, epa)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extPathFloodFunc(dstTile, dinfo, epfa)
|
extPathFloodFunc(
|
||||||
Tile *dstTile;
|
Tile *dstTile,
|
||||||
TileType dinfo; // Unused
|
TileType dinfo, // Unused
|
||||||
struct extPathFloodArg *epfa;
|
struct extPathFloodArg *epfa)
|
||||||
{
|
{
|
||||||
Rect srcRect, dstRect;
|
Rect srcRect, dstRect;
|
||||||
Point dstPoint, *p;
|
Point dstPoint, *p;
|
||||||
|
|
@ -970,12 +972,12 @@ extPathFloodFunc(dstTile, dinfo, epfa)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extPathFloodTile(srcTile, srcPoint, srcDist, dstTile, epa)
|
extPathFloodTile(
|
||||||
Tile *srcTile; /* Tile through which we're propagating */
|
Tile *srcTile, /* Tile through which we're propagating */
|
||||||
Point *srcPoint; /* Point inside or on srcTile */
|
Point *srcPoint, /* Point inside or on srcTile */
|
||||||
int srcDist; /* Distance to srcPoint so far */
|
int srcDist, /* Distance to srcPoint so far */
|
||||||
Tile *dstTile; /* Tile on border of srcTile */
|
Tile *dstTile, /* Tile on border of srcTile */
|
||||||
struct extPathArg *epa;
|
struct extPathArg *epa)
|
||||||
{
|
{
|
||||||
Rect srcRect, dstRect;
|
Rect srcRect, dstRect;
|
||||||
Point dstPoint;
|
Point dstPoint;
|
||||||
|
|
@ -1017,10 +1019,11 @@ extPathFloodTile(srcTile, srcPoint, srcDist, dstTile, epa)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extPathTileDist(p1, p2, tile, oldDist)
|
extPathTileDist(
|
||||||
Point *p1, *p2;
|
Point *p1,
|
||||||
Tile *tile;
|
Point *p2,
|
||||||
int oldDist;
|
Tile *tile,
|
||||||
|
int oldDist)
|
||||||
{
|
{
|
||||||
int newDist;
|
int newDist;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,10 +88,10 @@ Stack *extDefStack;
|
||||||
int extDefInitFunc(CellDef *, ClientData); /* UNUSED */
|
int extDefInitFunc(CellDef *, ClientData); /* UNUSED */
|
||||||
void extDefPush();
|
void extDefPush();
|
||||||
void extDefIncremental();
|
void extDefIncremental();
|
||||||
void extParents();
|
void extParents(CellUse *use, bool doExtract);
|
||||||
void extDefParentFunc();
|
void extDefParentFunc();
|
||||||
void extDefParentAreaFunc();
|
void extDefParentAreaFunc();
|
||||||
void extExtractStack();
|
void extExtractStack(Stack *stack, bool doExtract, CellDef *rootDef);
|
||||||
|
|
||||||
bool extContainsGeometry();
|
bool extContainsGeometry();
|
||||||
int extContainsCellFunc(CellUse *use, ClientData cdata); /* cb_database_srcellplanearea_t (const CellUse *allButUse) */
|
int extContainsCellFunc(CellUse *use, ClientData cdata); /* cb_database_srcellplanearea_t (const CellUse *allButUse) */
|
||||||
|
|
@ -173,9 +173,9 @@ ExtInit()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extIsUsedFunc(use, clientData)
|
extIsUsedFunc(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
ClientData clientData; /* unused */
|
ClientData clientData) /* unused */
|
||||||
{
|
{
|
||||||
CellDef *def = use->cu_def;
|
CellDef *def = use->cu_def;
|
||||||
|
|
||||||
|
|
@ -197,10 +197,10 @@ extIsUsedFunc(use, clientData)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extEnumFunc(tile, dinfo, clientdata)
|
extEnumFunc(
|
||||||
Tile *tile; /* (unused) */
|
Tile *tile, /* (unused) */
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
ClientData clientdata; /* (unused) */
|
ClientData clientdata) /* (unused) */
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -212,9 +212,9 @@ extEnumFunc(tile, dinfo, clientdata)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extDefListFunc(use, defList)
|
extDefListFunc(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
LinkedDef **defList;
|
LinkedDef **defList)
|
||||||
{
|
{
|
||||||
CellDef *def = use->cu_def;
|
CellDef *def = use->cu_def;
|
||||||
LinkedDef *newLD;
|
LinkedDef *newLD;
|
||||||
|
|
@ -270,9 +270,9 @@ extDefListFunc(use, defList)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extDefListFuncIncremental(use, defList)
|
extDefListFuncIncremental(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
LinkedDef **defList;
|
LinkedDef **defList)
|
||||||
{
|
{
|
||||||
CellDef *def = use->cu_def;
|
CellDef *def = use->cu_def;
|
||||||
LinkedDef *newLD;
|
LinkedDef *newLD;
|
||||||
|
|
@ -346,8 +346,8 @@ extDefListFuncIncremental(use, defList)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtAll(rootUse)
|
ExtAll(
|
||||||
CellUse *rootUse;
|
CellUse *rootUse)
|
||||||
{
|
{
|
||||||
LinkedDef *defList = NULL;
|
LinkedDef *defList = NULL;
|
||||||
CellDef *err_def;
|
CellDef *err_def;
|
||||||
|
|
@ -397,9 +397,9 @@ ExtAll(rootUse)
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extDefInitFunc(def, cdata)
|
extDefInitFunc(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
ClientData cdata; /* UNUSED */
|
ClientData cdata) /* UNUSED */
|
||||||
{
|
{
|
||||||
def->cd_client = (ClientData) 0;
|
def->cd_client = (ClientData) 0;
|
||||||
return (0);
|
return (0);
|
||||||
|
|
@ -411,8 +411,8 @@ extDefInitFunc(def, cdata)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extDefPush(defList)
|
extDefPush(
|
||||||
LinkedDef *defList;
|
LinkedDef *defList)
|
||||||
{
|
{
|
||||||
while (defList != NULL)
|
while (defList != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -452,9 +452,9 @@ extDefPush(defList)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtUnique(rootUse, option)
|
ExtUnique(
|
||||||
CellUse *rootUse;
|
CellUse *rootUse,
|
||||||
int option;
|
int option)
|
||||||
{
|
{
|
||||||
CellDef *def, *err_def;
|
CellDef *def, *err_def;
|
||||||
LinkedDef *defList = NULL;
|
LinkedDef *defList = NULL;
|
||||||
|
|
@ -545,23 +545,23 @@ ExtUnique(rootUse, option)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtParents(use)
|
ExtParents(
|
||||||
CellUse *use;
|
CellUse *use)
|
||||||
{
|
{
|
||||||
extParents(use, TRUE);
|
extParents(use, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtShowParents(use)
|
ExtShowParents(
|
||||||
CellUse *use;
|
CellUse *use)
|
||||||
{
|
{
|
||||||
extParents(use, FALSE);
|
extParents(use, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extParents(use, doExtract)
|
extParents(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
bool doExtract; /* If TRUE, we extract; if FALSE, we print */
|
bool doExtract) /* If TRUE, we extract; if FALSE, we print */
|
||||||
{
|
{
|
||||||
LinkedDef *defList = NULL;
|
LinkedDef *defList = NULL;
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
|
|
@ -632,8 +632,8 @@ extParents(use, doExtract)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extDefParentFunc(def)
|
extDefParentFunc(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
CellUse *parent;
|
CellUse *parent;
|
||||||
|
|
||||||
|
|
@ -667,10 +667,10 @@ extDefParentFunc(def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtParentArea(use, changedArea, doExtract)
|
ExtParentArea(
|
||||||
CellUse *use; /* Use->cu_def changed; extract its affected parents */
|
CellUse *use, /* Use->cu_def changed; extract its affected parents */
|
||||||
Rect *changedArea; /* Area changed in use->cu_def coordinates */
|
Rect *changedArea, /* Area changed in use->cu_def coordinates */
|
||||||
bool doExtract; /* If TRUE, we extract; if FALSE, we just print names
|
bool doExtract) /* If TRUE, we extract; if FALSE, we just print names
|
||||||
* of the cells we would extract.
|
* of the cells we would extract.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -704,11 +704,11 @@ ExtParentArea(use, changedArea, doExtract)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extDefParentAreaFunc(def, baseDef, allButUse, area)
|
extDefParentAreaFunc(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
CellDef *baseDef;
|
CellDef *baseDef,
|
||||||
CellUse *allButUse;
|
CellUse *allButUse,
|
||||||
Rect *area;
|
Rect *area)
|
||||||
{
|
{
|
||||||
int x, y, xoff, yoff;
|
int x, y, xoff, yoff;
|
||||||
CellUse *parent;
|
CellUse *parent;
|
||||||
|
|
@ -758,10 +758,10 @@ extDefParentAreaFunc(def, baseDef, allButUse, area)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtractOneCell(def, outName, doLength)
|
ExtractOneCell(
|
||||||
CellDef *def; /* Cell being extracted */
|
CellDef *def, /* Cell being extracted */
|
||||||
char *outName; /* Name of output file; if NULL, derive from def name */
|
char *outName, /* Name of output file; if NULL, derive from def name */
|
||||||
bool doLength; /* If TRUE, extract pathlengths from drivers to
|
bool doLength) /* If TRUE, extract pathlengths from drivers to
|
||||||
* receivers (the names are stored in ExtLength.c).
|
* receivers (the names are stored in ExtLength.c).
|
||||||
* Should only be TRUE for the root cell in a
|
* Should only be TRUE for the root cell in a
|
||||||
* hierarchy.
|
* hierarchy.
|
||||||
|
|
@ -842,10 +842,10 @@ ExtractOneCell(def, outName, doLength)
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extContainsGeometry(def, allButUse, area)
|
extContainsGeometry(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
CellUse *allButUse;
|
CellUse *allButUse,
|
||||||
Rect *area;
|
Rect *area)
|
||||||
{
|
{
|
||||||
int extContainsPaintFunc();
|
int extContainsPaintFunc();
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
@ -904,8 +904,8 @@ extContainsPaintFunc(
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtIncremental(rootUse)
|
ExtIncremental(
|
||||||
CellUse *rootUse;
|
CellUse *rootUse)
|
||||||
{
|
{
|
||||||
LinkedDef *defList = NULL;
|
LinkedDef *defList = NULL;
|
||||||
CellDef *err_def;
|
CellDef *err_def;
|
||||||
|
|
@ -954,8 +954,8 @@ ExtIncremental(rootUse)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extTimestampMisMatch(def)
|
extTimestampMisMatch(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
char line[256];
|
char line[256];
|
||||||
FILE *extFile;
|
FILE *extFile;
|
||||||
|
|
@ -1002,10 +1002,10 @@ closeit:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extExtractStack(stack, doExtract, rootDef)
|
extExtractStack(
|
||||||
Stack *stack;
|
Stack *stack,
|
||||||
bool doExtract;
|
bool doExtract,
|
||||||
CellDef *rootDef;
|
CellDef *rootDef)
|
||||||
{
|
{
|
||||||
int errorcnt = 0, warnings = 0;
|
int errorcnt = 0, warnings = 0;
|
||||||
bool first = TRUE;
|
bool first = TRUE;
|
||||||
|
|
|
||||||
|
|
@ -71,11 +71,11 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
ExtFindNeighbors(tile, dinfo, tilePlaneNum, arg)
|
ExtFindNeighbors(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int tilePlaneNum;
|
int tilePlaneNum,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
TileTypeBitMask *connTo = arg->fra_connectsTo;
|
TileTypeBitMask *connTo = arg->fra_connectsTo;
|
||||||
Tile *tp;
|
Tile *tp;
|
||||||
|
|
@ -376,10 +376,10 @@ fail:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extNbrPushFunc(tile, dinfo, pla)
|
extNbrPushFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
PlaneAndArea *pla;
|
PlaneAndArea *pla)
|
||||||
{
|
{
|
||||||
Rect *tileArea;
|
Rect *tileArea;
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
|
||||||
|
|
@ -139,13 +139,13 @@ ExtGetRegion(Tile *tp, /* Tile to get region record from */
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ExtRegion *
|
ExtRegion *
|
||||||
ExtFindRegions(def, area, mask, connectsTo, first, each)
|
ExtFindRegions(
|
||||||
CellDef *def; /* Cell definition being searched */
|
CellDef *def, /* Cell definition being searched */
|
||||||
Rect *area; /* Area to search initially for tiles */
|
Rect *area, /* Area to search initially for tiles */
|
||||||
TileTypeBitMask *mask; /* In the initial area search, only visit
|
TileTypeBitMask *mask, /* In the initial area search, only visit
|
||||||
* tiles whose types are in this mask.
|
* tiles whose types are in this mask.
|
||||||
*/
|
*/
|
||||||
TileTypeBitMask *connectsTo;/* Connectivity table for determining regions.
|
TileTypeBitMask *connectsTo,/* Connectivity table for determining regions.
|
||||||
* If t1 and t2 are the types of adjacent
|
* If t1 and t2 are the types of adjacent
|
||||||
* tiles, then t1 and t2 belong to the same
|
* tiles, then t1 and t2 belong to the same
|
||||||
* region iff:
|
* region iff:
|
||||||
|
|
@ -155,8 +155,8 @@ ExtFindRegions(def, area, mask, connectsTo, first, each)
|
||||||
* so this is the same as:
|
* so this is the same as:
|
||||||
* TTMaskHasType(&connectsTo[t2], t1)
|
* TTMaskHasType(&connectsTo[t2], t1)
|
||||||
*/
|
*/
|
||||||
ExtRegion * (*first)(); /* Applied to first tile in region */
|
ExtRegion * (*first)(), /* Applied to first tile in region */
|
||||||
int (*each)(); /* Applied to each tile in region */
|
int (*each)()) /* Applied to each tile in region */
|
||||||
{
|
{
|
||||||
FindRegion arg;
|
FindRegion arg;
|
||||||
int extRegionAreaFunc();
|
int extRegionAreaFunc();
|
||||||
|
|
@ -206,10 +206,10 @@ ExtFindRegions(def, area, mask, connectsTo, first, each)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extRegionAreaFunc(tile, dinfo, arg)
|
extRegionAreaFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
FindRegion *arg;
|
FindRegion *arg)
|
||||||
{
|
{
|
||||||
/* Allocate a new region */
|
/* Allocate a new region */
|
||||||
if (arg->fra_first)
|
if (arg->fra_first)
|
||||||
|
|
@ -251,11 +251,11 @@ extRegionAreaFunc(tile, dinfo, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LabelList *
|
LabelList *
|
||||||
ExtLabelRegions(def, connTo, nodeList, clipArea)
|
ExtLabelRegions(
|
||||||
CellDef *def; /* Cell definition being labelled */
|
CellDef *def, /* Cell definition being labelled */
|
||||||
TileTypeBitMask *connTo; /* Connectivity table (see above) */
|
TileTypeBitMask *connTo, /* Connectivity table (see above) */
|
||||||
NodeRegion **nodeList; /* Node list to add to (or NULL) */
|
NodeRegion **nodeList, /* Node list to add to (or NULL) */
|
||||||
Rect *clipArea; /* Area to search for sticky labels */
|
Rect *clipArea) /* Area to search for sticky labels */
|
||||||
{
|
{
|
||||||
static Point offsets[] = { { 0, 0 }, { 0, -1 }, { -1, -1 }, { -1, 0 } };
|
static Point offsets[] = { { 0, 0 }, { 0, -1 }, { -1, -1 }, { -1, 0 } };
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
@ -431,10 +431,10 @@ ExtLabelRegions(def, connTo, nodeList, clipArea)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtLabelOneRegion(def, connTo, reg)
|
ExtLabelOneRegion(
|
||||||
CellDef *def; /* Cell definition being labelled */
|
CellDef *def, /* Cell definition being labelled */
|
||||||
TileTypeBitMask *connTo; /* Connectivity table (see above) */
|
TileTypeBitMask *connTo, /* Connectivity table (see above) */
|
||||||
NodeRegion *reg; /* The region whose labels we want */
|
NodeRegion *reg) /* The region whose labels we want */
|
||||||
{
|
{
|
||||||
static Point offsets[] = { { 0, 0 }, { 0, -1 }, { -1, -1 }, { -1, 0 } };
|
static Point offsets[] = { { 0, 0 }, { 0, -1 }, { -1, -1 }, { -1, 0 } };
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
@ -519,9 +519,9 @@ ExtLabelOneRegion(def, connTo, reg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtResetTiles(def, resetTo)
|
ExtResetTiles(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
ClientData resetTo; /* New value for ti_client */
|
ClientData resetTo) /* New value for ti_client */
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
|
|
||||||
|
|
@ -553,8 +553,8 @@ ExtResetTiles(def, resetTo)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtFreeRegions(regList)
|
ExtFreeRegions(
|
||||||
ExtRegion *regList; /* List of regions to be freed */
|
ExtRegion *regList) /* List of regions to be freed */
|
||||||
{
|
{
|
||||||
ExtRegion *reg;
|
ExtRegion *reg;
|
||||||
|
|
||||||
|
|
@ -565,8 +565,8 @@ ExtFreeRegions(regList)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtFreeLabRegions(regList)
|
ExtFreeLabRegions(
|
||||||
LabRegion *regList; /* List of regions to be freed */
|
LabRegion *regList) /* List of regions to be freed */
|
||||||
{
|
{
|
||||||
LabRegion *lreg;
|
LabRegion *lreg;
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
@ -584,8 +584,8 @@ ExtFreeLabRegions(regList)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtFreeHierLabRegions(regList)
|
ExtFreeHierLabRegions(
|
||||||
ExtRegion *regList; /* List of regions to be freed */
|
ExtRegion *regList) /* List of regions to be freed */
|
||||||
{
|
{
|
||||||
ExtRegion *reg;
|
ExtRegion *reg;
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ bool extFirstPass;
|
||||||
ExtTree *extSubList = (ExtTree *) NULL;
|
ExtTree *extSubList = (ExtTree *) NULL;
|
||||||
|
|
||||||
/* Forward declarations of filter functions */
|
/* Forward declarations of filter functions */
|
||||||
char *extSubtreeTileToNode();
|
char *extSubtreeTileToNode(Tile *tp, TileType dinfo, int pNum, ExtTree *et, HierExtractArg *ha, bool doHard);
|
||||||
int extSubtreeFunc();
|
int extSubtreeFunc();
|
||||||
int extSubstrateFunc();
|
int extSubstrateFunc();
|
||||||
int extConnFindFunc();
|
int extConnFindFunc();
|
||||||
|
|
@ -115,9 +115,9 @@ void extSubtreeHardSearch();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extClearUseFlags(use, clientData)
|
extClearUseFlags(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
ClientData clientData;
|
ClientData clientData)
|
||||||
{
|
{
|
||||||
use->cu_flags &= ~CU_SUB_EXTRACTED;
|
use->cu_flags &= ~CU_SUB_EXTRACTED;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -161,10 +161,10 @@ extClearUseFlags(use, clientData)
|
||||||
#define RECTAREA(r) (((r)->r_xtop-(r)->r_xbot) * ((r)->r_ytop-(r)->r_ybot))
|
#define RECTAREA(r) (((r)->r_xtop-(r)->r_xbot) * ((r)->r_ytop-(r)->r_ybot))
|
||||||
|
|
||||||
void
|
void
|
||||||
extSubtree(parentUse, reg, f)
|
extSubtree(
|
||||||
CellUse *parentUse;
|
CellUse *parentUse,
|
||||||
NodeRegion *reg; /* Node regions of the parent cell */
|
NodeRegion *reg, /* Node regions of the parent cell */
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
int extSubtreeInterFunc();
|
int extSubtreeInterFunc();
|
||||||
CellDef *def = parentUse->cu_def;
|
CellDef *def = parentUse->cu_def;
|
||||||
|
|
@ -200,7 +200,7 @@ extSubtree(parentUse, reg, f)
|
||||||
ha.ha_outf = f;
|
ha.ha_outf = f;
|
||||||
ha.ha_parentUse = parentUse;
|
ha.ha_parentUse = parentUse;
|
||||||
ha.ha_parentReg = reg;
|
ha.ha_parentReg = reg;
|
||||||
ha.ha_nodename = extSubtreeTileToNode;
|
ha.ha_nodename = (char *(*)()) extSubtreeTileToNode;
|
||||||
ha.ha_interArea = GeoNullRect;
|
ha.ha_interArea = GeoNullRect;
|
||||||
ha.ha_cumFlat.et_use = extYuseCum;
|
ha.ha_cumFlat.et_use = extYuseCum;
|
||||||
HashInit(&ha.ha_connHash, 32, 0);
|
HashInit(&ha.ha_connHash, 32, 0);
|
||||||
|
|
@ -361,10 +361,10 @@ done:
|
||||||
|
|
||||||
#ifdef exactinteractions
|
#ifdef exactinteractions
|
||||||
int
|
int
|
||||||
extSubtreeCopyPlane(tile, dinfo, plane)
|
extSubtreeCopyPlane(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
Plane *plane;
|
Plane *plane)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
||||||
|
|
@ -375,10 +375,10 @@ extSubtreeCopyPlane(tile, dinfo, plane)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtreeShrinkPlane(tile, dinfo, plane)
|
extSubtreeShrinkPlane(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
Plane *plane;
|
Plane *plane)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
||||||
|
|
@ -392,10 +392,10 @@ extSubtreeShrinkPlane(tile, dinfo, plane)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtreeInterFunc(tile, dinfo, ha)
|
extSubtreeInterFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
TITORECT(tile, &ha->ha_interArea);
|
TITORECT(tile, &ha->ha_interArea);
|
||||||
ha->ha_clipArea = ha->ha_interArea;
|
ha->ha_clipArea = ha->ha_interArea;
|
||||||
|
|
@ -450,8 +450,8 @@ extSubtreeInterFunc(tile, dinfo, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSubtreeInteraction(ha)
|
extSubtreeInteraction(
|
||||||
HierExtractArg *ha; /* Context for hierarchical extraction */
|
HierExtractArg *ha) /* Context for hierarchical extraction */
|
||||||
{
|
{
|
||||||
CellDef *oneDef, *cumDef = ha->ha_cumFlat.et_use->cu_def;
|
CellDef *oneDef, *cumDef = ha->ha_cumFlat.et_use->cu_def;
|
||||||
ExtTree *oneFlat, *nextFlat;
|
ExtTree *oneFlat, *nextFlat;
|
||||||
|
|
@ -638,8 +638,8 @@ extSubtreeInteraction(ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSubtreeAdjustInit(ha)
|
extSubtreeAdjustInit(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
NodeRegion *np;
|
NodeRegion *np;
|
||||||
NodeName *nn;
|
NodeName *nn;
|
||||||
|
|
@ -690,8 +690,8 @@ extSubtreeAdjustInit(ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSubtreeOutputCoupling(ha)
|
extSubtreeOutputCoupling(
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
CapValue cap;
|
CapValue cap;
|
||||||
CoupleKey *ck;
|
CoupleKey *ck;
|
||||||
|
|
@ -736,10 +736,10 @@ extSubtreeOutputCoupling(ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extFoundProc(tile, dinfo, clientData)
|
extFoundProc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
ClientData clientData;
|
ClientData clientData)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -767,9 +767,9 @@ extFoundProc(tile, dinfo, clientData)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtreeFunc(scx, ha)
|
extSubtreeFunc(
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
CellUse *cumUse = ha->ha_cumFlat.et_use;
|
CellUse *cumUse = ha->ha_cumFlat.et_use;
|
||||||
CellUse *use = scx->scx_use;
|
CellUse *use = scx->scx_use;
|
||||||
|
|
@ -985,9 +985,9 @@ extSubtreeFunc(scx, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubstrateFunc(scx, ha)
|
extSubstrateFunc(
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
CellUse *use = scx->scx_use;
|
CellUse *use = scx->scx_use;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
@ -1065,13 +1065,13 @@ extSubstrateFunc(scx, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
extSubtreeTileToNode(tp, dinfo, pNum, et, ha, doHard)
|
extSubtreeTileToNode(
|
||||||
Tile *tp; /* Tile whose node name is to be found */
|
Tile *tp, /* Tile whose node name is to be found */
|
||||||
TileType dinfo; /* Split tile information */
|
TileType dinfo, /* Split tile information */
|
||||||
int pNum; /* Plane of the tile */
|
int pNum, /* Plane of the tile */
|
||||||
ExtTree *et; /* Yank buffer to search */
|
ExtTree *et, /* Yank buffer to search */
|
||||||
HierExtractArg *ha; /* Extraction context */
|
HierExtractArg *ha, /* Extraction context */
|
||||||
bool doHard; /* If TRUE, we look up this node's name the hard way
|
bool doHard) /* If TRUE, we look up this node's name the hard way
|
||||||
* if we can't find it any other way; otherwise, we
|
* if we can't find it any other way; otherwise, we
|
||||||
* return NULL if we can't find the node's name.
|
* return NULL if we can't find the node's name.
|
||||||
*/
|
*/
|
||||||
|
|
@ -1175,10 +1175,10 @@ extSubtreeTileToNode(tp, dinfo, pNum, et, ha, doHard)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extConnFindFunc(tp, dinfo, preg)
|
extConnFindFunc(
|
||||||
Tile *tp;
|
Tile *tp,
|
||||||
TileType dinfo; // Unused, but needs to be handled
|
TileType dinfo, // Unused, but needs to be handled
|
||||||
LabRegion **preg;
|
LabRegion **preg)
|
||||||
{
|
{
|
||||||
if (extHasRegion(tp, CLIENTDEFAULT))
|
if (extHasRegion(tp, CLIENTDEFAULT))
|
||||||
{
|
{
|
||||||
|
|
@ -1220,12 +1220,12 @@ extConnFindFunc(tp, dinfo, preg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LabRegion *
|
LabRegion *
|
||||||
extSubtreeHardNode(tp, dinfo, pNum, et, ha)
|
extSubtreeHardNode(
|
||||||
Tile *tp;
|
Tile *tp,
|
||||||
TileType dinfo;
|
TileType dinfo,
|
||||||
int pNum;
|
int pNum,
|
||||||
ExtTree *et;
|
ExtTree *et,
|
||||||
HierExtractArg *ha;
|
HierExtractArg *ha)
|
||||||
{
|
{
|
||||||
LabRegion *lreg = (LabRegion *) ExtGetRegion(tp, dinfo);
|
LabRegion *lreg = (LabRegion *) ExtGetRegion(tp, dinfo);
|
||||||
CellDef *def = et->et_use->cu_def;
|
CellDef *def = et->et_use->cu_def;
|
||||||
|
|
@ -1301,9 +1301,9 @@ extSubtreeHardNode(tp, dinfo, pNum, et, ha)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extSubtreeHardSearch(et, arg)
|
extSubtreeHardSearch(
|
||||||
ExtTree *et;
|
ExtTree *et,
|
||||||
HardWay *arg;
|
HardWay *arg)
|
||||||
{
|
{
|
||||||
HierExtractArg *ha = arg->hw_ha;
|
HierExtractArg *ha = arg->hw_ha;
|
||||||
ExtTree *oneFlat;
|
ExtTree *oneFlat;
|
||||||
|
|
@ -1352,13 +1352,14 @@ extSubtreeHardSearch(et, arg)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extSubtreeHardUseFunc(use, trans, x, y, arg)
|
extSubtreeHardUseFunc(
|
||||||
CellUse *use; /* Use that is the root of the subtree being searched */
|
CellUse *use, /* Use that is the root of the subtree being searched */
|
||||||
Transform *trans; /* Transform from coordinates of use->cu_def to those
|
Transform *trans, /* Transform from coordinates of use->cu_def to those
|
||||||
* in use->cu_parent, for the array element (x, y).
|
* in use->cu_parent, for the array element (x, y).
|
||||||
*/
|
*/
|
||||||
int x, y; /* Indices of this array element */
|
int x,
|
||||||
HardWay *arg; /* Context passed down to filter functions */
|
int y,
|
||||||
|
HardWay *arg) /* Context passed down to filter functions */
|
||||||
{
|
{
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
Transform tinv;
|
Transform tinv;
|
||||||
|
|
|
||||||
|
|
@ -275,8 +275,8 @@ static const keydesc devTable[] = {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ExtCompareStyle(stylename)
|
ExtCompareStyle(
|
||||||
char *stylename;
|
char *stylename)
|
||||||
{
|
{
|
||||||
ExtKeep *style;
|
ExtKeep *style;
|
||||||
|
|
||||||
|
|
@ -335,15 +335,14 @@ ExtCompareStyle(stylename)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ExtGetDevInfo(idx, devnameptr, devtypeptr, s_rclassptr, d_rclassptr,
|
ExtGetDevInfo(
|
||||||
sub_rclassptr, subnameptr)
|
int idx,
|
||||||
int idx;
|
char **devnameptr, /* Name of extracted device model */
|
||||||
char **devnameptr; /* Name of extracted device model */
|
TileType *devtypeptr, /* Magic tile type of device */
|
||||||
TileType *devtypeptr; /* Magic tile type of device */
|
short *s_rclassptr, /* Source (1st terminal) type only */
|
||||||
short *s_rclassptr; /* Source (1st terminal) type only */
|
short *d_rclassptr, /* Drain (2nd terminal) type only */
|
||||||
short *d_rclassptr; /* Drain (2nd terminal) type only */
|
short *sub_rclassptr,
|
||||||
short *sub_rclassptr;
|
char **subnameptr)
|
||||||
char **subnameptr;
|
|
||||||
{
|
{
|
||||||
TileType t;
|
TileType t;
|
||||||
TileTypeBitMask *rmask, *tmask;
|
TileTypeBitMask *rmask, *tmask;
|
||||||
|
|
@ -477,8 +476,8 @@ ExtGetDevInfo(idx, devnameptr, devtypeptr, s_rclassptr, d_rclassptr,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
TileType
|
TileType
|
||||||
extGetDevType(devname)
|
extGetDevType(
|
||||||
char *devname;
|
char *devname)
|
||||||
{
|
{
|
||||||
TileType t;
|
TileType t;
|
||||||
ExtDevice *devptr;
|
ExtDevice *devptr;
|
||||||
|
|
@ -503,8 +502,8 @@ extGetDevType(devname)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
ExtGetGateTypesMask(mask)
|
ExtGetGateTypesMask(
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
||||||
|
|
@ -540,8 +539,8 @@ ExtGetGateTypesMask(mask)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
ExtGetDiffTypesMask(mask)
|
ExtGetDiffTypesMask(
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
||||||
|
|
@ -573,9 +572,10 @@ ExtGetDiffTypesMask(mask)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtGetZAxis(tile, height, thick)
|
ExtGetZAxis(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
float *height, *thick;
|
float *height,
|
||||||
|
float *thick)
|
||||||
{
|
{
|
||||||
TileType ttype;
|
TileType ttype;
|
||||||
|
|
||||||
|
|
@ -610,8 +610,8 @@ ExtGetZAxis(tile, height, thick)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtPrintPath(dolist)
|
ExtPrintPath(
|
||||||
bool dolist;
|
bool dolist)
|
||||||
{
|
{
|
||||||
if (ExtLocalPath == NULL)
|
if (ExtLocalPath == NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -659,8 +659,8 @@ ExtPrintPath(dolist)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtSetPath(path)
|
ExtSetPath(
|
||||||
char *path;
|
char *path)
|
||||||
{
|
{
|
||||||
if (path != NULL)
|
if (path != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -692,10 +692,10 @@ ExtSetPath(path)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtPrintStyle(dolist, doforall, docurrent)
|
ExtPrintStyle(
|
||||||
bool dolist;
|
bool dolist,
|
||||||
bool doforall;
|
bool doforall,
|
||||||
bool docurrent;
|
bool docurrent)
|
||||||
{
|
{
|
||||||
ExtKeep *style;
|
ExtKeep *style;
|
||||||
|
|
||||||
|
|
@ -759,8 +759,8 @@ ExtPrintStyle(dolist, doforall, docurrent)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtSetStyle(name)
|
ExtSetStyle(
|
||||||
char *name;
|
char *name)
|
||||||
{
|
{
|
||||||
ExtKeep *style, *match;
|
ExtKeep *style, *match;
|
||||||
int length;
|
int length;
|
||||||
|
|
@ -826,8 +826,8 @@ extTechStyleAlloc()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTechStyleInit(style)
|
extTechStyleInit(
|
||||||
ExtStyle *style;
|
ExtStyle *style)
|
||||||
{
|
{
|
||||||
TileType r, s;
|
TileType r, s;
|
||||||
|
|
||||||
|
|
@ -1017,8 +1017,8 @@ extTechStyleNew()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CapValue
|
CapValue
|
||||||
aToCap(str)
|
aToCap(
|
||||||
char *str;
|
char *str)
|
||||||
{
|
{
|
||||||
CapValue capVal;
|
CapValue capVal;
|
||||||
if (sscanf(str, "%lf", &capVal) != 1) {
|
if (sscanf(str, "%lf", &capVal) != 1) {
|
||||||
|
|
@ -1044,8 +1044,8 @@ aToCap(str)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ResValue
|
ResValue
|
||||||
aToRes(str)
|
aToRes(
|
||||||
char *str;
|
char *str)
|
||||||
{
|
{
|
||||||
ResValue resVal;
|
ResValue resVal;
|
||||||
if (sscanf(str, "%d", &resVal) != 1) {
|
if (sscanf(str, "%d", &resVal) != 1) {
|
||||||
|
|
@ -1072,8 +1072,8 @@ aToRes(str)
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ExtLoadStyle(stylename)
|
ExtLoadStyle(
|
||||||
char *stylename;
|
char *stylename)
|
||||||
{
|
{
|
||||||
SectionID invext;
|
SectionID invext;
|
||||||
|
|
||||||
|
|
@ -1177,9 +1177,9 @@ ExtTechInit()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechSimpleAreaCap(argc, argv)
|
ExtTechSimpleAreaCap(
|
||||||
int argc;
|
int argc,
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
TileType s, t;
|
TileType s, t;
|
||||||
TileTypeBitMask types, subtypes, shields;
|
TileTypeBitMask types, subtypes, shields;
|
||||||
|
|
@ -1355,9 +1355,9 @@ ExtTechSimpleAreaCap(argc, argv)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechSimplePerimCap(argc, argv)
|
ExtTechSimplePerimCap(
|
||||||
int argc;
|
int argc,
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
TileType r, s, t;
|
TileType r, s, t;
|
||||||
TileTypeBitMask types, nottypes, subtypes, shields;
|
TileTypeBitMask types, nottypes, subtypes, shields;
|
||||||
|
|
@ -1541,9 +1541,9 @@ ExtTechSimplePerimCap(argc, argv)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechSimpleSidewallCap(argc, argv)
|
ExtTechSimpleSidewallCap(
|
||||||
int argc;
|
int argc,
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
/* Like ExtTechLine, but with near = types2 and far = types1 */
|
/* Like ExtTechLine, but with near = types2 and far = types1 */
|
||||||
|
|
||||||
|
|
@ -1626,8 +1626,8 @@ ExtTechSimpleSidewallCap(argc, argv)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechSimpleOverlapCap(argv)
|
ExtTechSimpleOverlapCap(
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
TileType s, t;
|
TileType s, t;
|
||||||
TileTypeBitMask types1, types2, shields;
|
TileTypeBitMask types1, types2, shields;
|
||||||
|
|
@ -1724,8 +1724,8 @@ ExtTechSimpleOverlapCap(argv)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechSimpleSideOverlapCap(argv)
|
ExtTechSimpleSideOverlapCap(
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
TileType r, s, t;
|
TileType r, s, t;
|
||||||
TileTypeBitMask types, nottypes, ov, notov, shields;
|
TileTypeBitMask types, nottypes, ov, notov, shields;
|
||||||
|
|
@ -1981,10 +1981,10 @@ ExtTechSimpleSideOverlapCap(argv)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
bool
|
bool
|
||||||
ExtTechLine(sectionName, argc, argv)
|
ExtTechLine(
|
||||||
char *sectionName;
|
char *sectionName,
|
||||||
int argc;
|
int argc,
|
||||||
char *argv[];
|
char *argv[])
|
||||||
{
|
{
|
||||||
int n, l, i, j, size, val, p1, p2, p3, nterm, iterm, class;
|
int n, l, i, j, size, val, p1, p2, p3, nterm, iterm, class;
|
||||||
PlaneMask pshield, pov;
|
PlaneMask pshield, pov;
|
||||||
|
|
@ -3575,8 +3575,8 @@ ExtTechFinal()
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
extTechFinalStyle(style)
|
extTechFinalStyle(
|
||||||
ExtStyle *style;
|
ExtStyle *style)
|
||||||
{
|
{
|
||||||
TileTypeBitMask maskBits;
|
TileTypeBitMask maskBits;
|
||||||
TileType r, s, t;
|
TileType r, s, t;
|
||||||
|
|
@ -3944,9 +3944,9 @@ zinit:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTechScale(scalen, scaled)
|
ExtTechScale(
|
||||||
int scalen; /* Scale numerator */
|
int scalen, /* Scale numerator */
|
||||||
int scaled; /* Scale denominator */
|
int scaled) /* Scale denominator */
|
||||||
{
|
{
|
||||||
ExtStyle *style = ExtCurStyle;
|
ExtStyle *style = ExtCurStyle;
|
||||||
EdgeCap *ec;
|
EdgeCap *ec;
|
||||||
|
|
|
||||||
|
|
@ -105,9 +105,9 @@ void extShowConnect(char *, TileTypeBitMask *, FILE *);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtractTest(w, cmd)
|
ExtractTest(
|
||||||
MagWindow *w;
|
MagWindow *w,
|
||||||
TxCommand *cmd;
|
TxCommand *cmd)
|
||||||
{
|
{
|
||||||
extern long extSubtreeTotalArea;
|
extern long extSubtreeTotalArea;
|
||||||
extern long extSubtreeInteractionArea;
|
extern long extSubtreeInteractionArea;
|
||||||
|
|
@ -316,10 +316,10 @@ ExtractTest(w, cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extShowInter(tile, dinfo, clientdata)
|
extShowInter(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
ClientData clientdata; /* (unused) */
|
ClientData clientdata) /* (unused) */
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
||||||
|
|
@ -351,8 +351,8 @@ extShowInter(tile, dinfo, clientdata)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowTech(name)
|
extShowTech(
|
||||||
char *name;
|
char *name)
|
||||||
{
|
{
|
||||||
FILE *out;
|
FILE *out;
|
||||||
TileType t, s;
|
TileType t, s;
|
||||||
|
|
@ -489,10 +489,10 @@ extShowTech(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowTrans(name, mask, out)
|
extShowTrans(
|
||||||
char *name;
|
char *name,
|
||||||
TileTypeBitMask *mask;
|
TileTypeBitMask *mask,
|
||||||
FILE *out;
|
FILE *out)
|
||||||
{
|
{
|
||||||
TileType t;
|
TileType t;
|
||||||
|
|
||||||
|
|
@ -518,10 +518,10 @@ extShowTrans(name, mask, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowConnect(hdr, connectsTo, out)
|
extShowConnect(
|
||||||
char *hdr;
|
char *hdr,
|
||||||
TileTypeBitMask *connectsTo;
|
TileTypeBitMask *connectsTo,
|
||||||
FILE *out;
|
FILE *out)
|
||||||
{
|
{
|
||||||
TileType t;
|
TileType t;
|
||||||
|
|
||||||
|
|
@ -536,9 +536,9 @@ extShowConnect(hdr, connectsTo, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowMask(m, out)
|
extShowMask(
|
||||||
TileTypeBitMask *m;
|
TileTypeBitMask *m,
|
||||||
FILE *out;
|
FILE *out)
|
||||||
{
|
{
|
||||||
TileType t;
|
TileType t;
|
||||||
bool first = TRUE;
|
bool first = TRUE;
|
||||||
|
|
@ -554,9 +554,9 @@ extShowMask(m, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowPlanes(m, out)
|
extShowPlanes(
|
||||||
PlaneMask m;
|
PlaneMask m,
|
||||||
FILE *out;
|
FILE *out)
|
||||||
{
|
{
|
||||||
int pNum;
|
int pNum;
|
||||||
bool first = TRUE;
|
bool first = TRUE;
|
||||||
|
|
@ -589,9 +589,9 @@ extShowPlanes(m, out)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extDispInit(def, w)
|
extDispInit(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
MagWindow *w;
|
MagWindow *w)
|
||||||
{
|
{
|
||||||
extDebugWindow = w;
|
extDebugWindow = w;
|
||||||
extCellDef = def;
|
extCellDef = def;
|
||||||
|
|
@ -618,9 +618,9 @@ extDispInit(def, w)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowEdge(s, bp)
|
extShowEdge(
|
||||||
char *s;
|
char *s,
|
||||||
Boundary *bp;
|
Boundary *bp)
|
||||||
{
|
{
|
||||||
Rect extScreenRect, edgeRect;
|
Rect extScreenRect, edgeRect;
|
||||||
int style = STYLE_PURPLE1;
|
int style = STYLE_PURPLE1;
|
||||||
|
|
@ -679,10 +679,10 @@ extShowEdge(s, bp)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extShowTile(tile, s, style_index)
|
extShowTile(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
char *s;
|
char *s,
|
||||||
int style_index;
|
int style_index)
|
||||||
{
|
{
|
||||||
Rect tileRect;
|
Rect tileRect;
|
||||||
static int styles[] = { STYLE_PALEHIGHLIGHTS, STYLE_DOTTEDHIGHLIGHTS };
|
static int styles[] = { STYLE_PALEHIGHLIGHTS, STYLE_DOTTEDHIGHLIGHTS };
|
||||||
|
|
@ -697,9 +697,9 @@ extShowTile(tile, s, style_index)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
extShowRect(r, style)
|
extShowRect(
|
||||||
Rect *r;
|
Rect *r,
|
||||||
int style;
|
int style)
|
||||||
{
|
{
|
||||||
Rect extScreenRect;
|
Rect extScreenRect;
|
||||||
|
|
||||||
|
|
@ -731,10 +731,10 @@ extMore()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
extNewYank(name, puse, pdef)
|
extNewYank(
|
||||||
char *name;
|
char *name,
|
||||||
CellUse **puse;
|
CellUse **puse,
|
||||||
CellDef **pdef;
|
CellDef **pdef)
|
||||||
{
|
{
|
||||||
DBNewYank(name, puse, pdef);
|
DBNewYank(name, puse, pdef);
|
||||||
}
|
}
|
||||||
|
|
@ -746,8 +746,8 @@ extNewYank(name, puse, pdef)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtDumpCapsToFile(f)
|
ExtDumpCapsToFile(
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
TileType t, s, r;
|
TileType t, s, r;
|
||||||
EdgeCap *e;
|
EdgeCap *e;
|
||||||
|
|
@ -1093,8 +1093,8 @@ ExtDumpCapsToFile(f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtDumpCaps(filename)
|
ExtDumpCaps(
|
||||||
char *filename;
|
char *filename)
|
||||||
{
|
{
|
||||||
TileType t, s, r;
|
TileType t, s, r;
|
||||||
EdgeCap *e;
|
EdgeCap *e;
|
||||||
|
|
|
||||||
|
|
@ -162,9 +162,9 @@ extern int extDefInitFunc();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtTimes(rootUse, f)
|
ExtTimes(
|
||||||
CellUse *rootUse;
|
CellUse *rootUse,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
double clip, inter;
|
double clip, inter;
|
||||||
HashSearch hs;
|
HashSearch hs;
|
||||||
|
|
@ -290,9 +290,9 @@ ExtTimes(rootUse, f)
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
extTimesInitFunc(use, cdata)
|
extTimesInitFunc(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
ClientData cdata; /* UNUSED */
|
ClientData cdata) /* UNUSED */
|
||||||
{
|
{
|
||||||
CellDef *def = use->cu_def;
|
CellDef *def = use->cu_def;
|
||||||
struct cellStats *cs;
|
struct cellStats *cs;
|
||||||
|
|
@ -345,8 +345,8 @@ extTimesInitFunc(use, cdata)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTimesCellFunc(cs)
|
extTimesCellFunc(
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
extern long extSubtreeTotalArea;
|
extern long extSubtreeTotalArea;
|
||||||
extern long extSubtreeInteractionArea;
|
extern long extSubtreeInteractionArea;
|
||||||
|
|
@ -398,10 +398,10 @@ extTimesCellFunc(cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extCountTiles(tile, dinfo, cs)
|
extCountTiles(
|
||||||
Tile *tile; /* (unused) */
|
Tile *tile, /* (unused) */
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
cs->cs_rects++;
|
cs->cs_rects++;
|
||||||
return (0);
|
return (0);
|
||||||
|
|
@ -432,8 +432,8 @@ extCountTiles(tile, dinfo, cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTimesIncrFunc(cs)
|
extTimesIncrFunc(
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Visit all of our parents recursively.
|
* Visit all of our parents recursively.
|
||||||
|
|
@ -481,9 +481,9 @@ extTimesIncrFunc(cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTimesSummaryFunc(cs, f)
|
extTimesSummaryFunc(
|
||||||
struct cellStats *cs;
|
struct cellStats *cs,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
double tpaint, tcell, thier, tincr;
|
double tpaint, tcell, thier, tincr;
|
||||||
double fetspaint, rectspaint;
|
double fetspaint, rectspaint;
|
||||||
|
|
@ -590,9 +590,9 @@ extTimesSummaryFunc(cs, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTimesParentFunc(def, cs)
|
extTimesParentFunc(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
struct cellStats *csForDef;
|
struct cellStats *csForDef;
|
||||||
CellUse *parent;
|
CellUse *parent;
|
||||||
|
|
@ -643,9 +643,9 @@ extTimesParentFunc(def, cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extTimesHierFunc(def, cs)
|
extTimesHierFunc(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
int extTimesHierUse();
|
int extTimesHierUse();
|
||||||
struct cellStats *csForDef;
|
struct cellStats *csForDef;
|
||||||
|
|
@ -679,9 +679,9 @@ extTimesHierFunc(def, cs)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extTimesHierUse(use, cs)
|
extTimesHierUse(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
return (extTimesHierFunc(use->cu_def, cs));
|
return (extTimesHierFunc(use->cu_def, cs));
|
||||||
}
|
}
|
||||||
|
|
@ -707,9 +707,9 @@ extTimesHierUse(use, cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extTimesFlatFunc(def, cs)
|
extTimesFlatFunc(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
struct cellStats *csForDef;
|
struct cellStats *csForDef;
|
||||||
int extTimesFlatUse();
|
int extTimesFlatUse();
|
||||||
|
|
@ -728,9 +728,9 @@ extTimesFlatFunc(def, cs)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extTimesFlatUse(use, cs)
|
extTimesFlatUse(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
struct cellStats *cs;
|
struct cellStats *cs)
|
||||||
{
|
{
|
||||||
struct cellStats dummyCS;
|
struct cellStats dummyCS;
|
||||||
int nx, ny, nel;
|
int nx, ny, nel;
|
||||||
|
|
@ -781,10 +781,10 @@ extTimesFlatUse(use, cs)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extTimeProc(proc, def, tv)
|
extTimeProc(
|
||||||
int (*proc)();
|
int (*proc)(),
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
struct timeval *tv;
|
struct timeval *tv)
|
||||||
{
|
{
|
||||||
int secs, usecs, i;
|
int secs, usecs, i;
|
||||||
|
|
||||||
|
|
@ -839,8 +839,8 @@ extTimeProc(proc, def, tv)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extPaintOnly(def)
|
extPaintOnly(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
NodeRegion *reg;
|
NodeRegion *reg;
|
||||||
|
|
||||||
|
|
@ -867,8 +867,8 @@ extPaintOnly(def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierCell(def)
|
extHierCell(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
extCellFile(def, extDevNull, FALSE);
|
extCellFile(def, extDevNull, FALSE);
|
||||||
}
|
}
|
||||||
|
|
@ -890,8 +890,8 @@ extHierCell(def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extCumInit(cum)
|
extCumInit(
|
||||||
struct cumStats *cum;
|
struct cumStats *cum)
|
||||||
{
|
{
|
||||||
cum->cums_min = (double) INFINITY;
|
cum->cums_min = (double) INFINITY;
|
||||||
cum->cums_max = (double) MINFINITY;
|
cum->cums_max = (double) MINFINITY;
|
||||||
|
|
@ -917,10 +917,10 @@ extCumInit(cum)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extCumOutput(str, cum, f)
|
extCumOutput(
|
||||||
char *str; /* Prefix string */
|
char *str, /* Prefix string */
|
||||||
struct cumStats *cum;
|
struct cumStats *cum,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
double mean, var;
|
double mean, var;
|
||||||
|
|
||||||
|
|
@ -961,9 +961,9 @@ extCumOutput(str, cum, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extCumAdd(cum, v)
|
extCumAdd(
|
||||||
struct cumStats *cum;
|
struct cumStats *cum,
|
||||||
double v;
|
double v)
|
||||||
{
|
{
|
||||||
if (v < cum->cums_min) cum->cums_min = v;
|
if (v < cum->cums_min) cum->cums_min = v;
|
||||||
if (v > cum->cums_max) cum->cums_max = v;
|
if (v > cum->cums_max) cum->cums_max = v;
|
||||||
|
|
@ -989,8 +989,8 @@ extCumAdd(cum, v)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct cellStats *
|
struct cellStats *
|
||||||
extGetStats(def)
|
extGetStats(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
|
|
@ -1024,10 +1024,10 @@ int extInterCountHalo;
|
||||||
CellDef *extInterCountDef;
|
CellDef *extInterCountDef;
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtInterCount(rootUse, halo, f)
|
ExtInterCount(
|
||||||
CellUse *rootUse;
|
CellUse *rootUse,
|
||||||
int halo;
|
int halo,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
double inter;
|
double inter;
|
||||||
CellDef *err_def;
|
CellDef *err_def;
|
||||||
|
|
@ -1073,9 +1073,9 @@ ExtInterCount(rootUse, halo, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterAreaFunc(use, f)
|
extInterAreaFunc(
|
||||||
CellUse *use;
|
CellUse *use,
|
||||||
FILE *f;
|
FILE *f)
|
||||||
{
|
{
|
||||||
static Plane *interPlane = (Plane *) NULL;
|
static Plane *interPlane = (Plane *) NULL;
|
||||||
CellDef *def = use->cu_def;
|
CellDef *def = use->cu_def;
|
||||||
|
|
@ -1118,10 +1118,10 @@ extInterAreaFunc(use, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extInterCountFunc(tile, dinfo, pArea)
|
extInterCountFunc(
|
||||||
Tile *tile;
|
Tile *tile,
|
||||||
TileType dinfo; /* (unused) */
|
TileType dinfo, /* (unused) */
|
||||||
int *pArea;
|
int *pArea)
|
||||||
{
|
{
|
||||||
Rect r;
|
Rect r;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,9 +80,9 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extUniqueCell(def, option)
|
extUniqueCell(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
int option;
|
int option)
|
||||||
{
|
{
|
||||||
NodeRegion *nodeList;
|
NodeRegion *nodeList;
|
||||||
LabRegion *lregList, *lastreg, processedLabel;
|
LabRegion *lregList, *lastreg, processedLabel;
|
||||||
|
|
@ -95,7 +95,7 @@ extUniqueCell(def, option)
|
||||||
int nwarn;
|
int nwarn;
|
||||||
bool isabstract;
|
bool isabstract;
|
||||||
|
|
||||||
NodeRegion *extFindNodes(); /* Forward reference */
|
NodeRegion *extFindNodes(CellDef *def, Rect *clipArea, bool subonly); /* Forward reference */
|
||||||
|
|
||||||
nwarn = 0;
|
nwarn = 0;
|
||||||
|
|
||||||
|
|
@ -201,12 +201,13 @@ extUniqueCell(def, option)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extMakeUnique(def, ll, lreg, lregList, labelHash, option)
|
extMakeUnique(
|
||||||
CellDef *def;
|
CellDef *def,
|
||||||
LabelList *ll;
|
LabelList *ll,
|
||||||
LabRegion *lreg, *lregList;
|
LabRegion *lreg,
|
||||||
HashTable *labelHash;
|
LabRegion *lregList,
|
||||||
int option;
|
HashTable *labelHash,
|
||||||
|
int option)
|
||||||
{
|
{
|
||||||
static char *badmesg =
|
static char *badmesg =
|
||||||
"Non-global label \"%s\" attached to more than one unconnected node: %s";
|
"Non-global label \"%s\" attached to more than one unconnected node: %s";
|
||||||
|
|
@ -366,7 +367,8 @@ makeUnique:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ExtRevertUniqueCell(CellDef *def)
|
ExtRevertUniqueCell(
|
||||||
|
CellDef *def)
|
||||||
{
|
{
|
||||||
Label *lab, *tlab;
|
Label *lab, *tlab;
|
||||||
char *uptr;
|
char *uptr;
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,9 @@ int extHierLabelFunc();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierCopyLabels(sourceDef, targetDef)
|
extHierCopyLabels(
|
||||||
CellDef *sourceDef, *targetDef;
|
CellDef *sourceDef,
|
||||||
|
CellDef *targetDef)
|
||||||
{
|
{
|
||||||
Label *lab, *newlab, *firstLab, *lastLab;
|
Label *lab, *newlab, *firstLab, *lastLab;
|
||||||
unsigned n;
|
unsigned n;
|
||||||
|
|
@ -115,8 +116,8 @@ extHierCopyLabels(sourceDef, targetDef)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
extHierFreeLabels(def)
|
extHierFreeLabels(
|
||||||
CellDef *def;
|
CellDef *def)
|
||||||
{
|
{
|
||||||
Label *lab;
|
Label *lab;
|
||||||
|
|
||||||
|
|
@ -156,13 +157,14 @@ extHierFreeLabels(def)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierYankFunc(use, trans, x, y, hy)
|
extHierYankFunc(
|
||||||
CellUse *use; /* Use that is the root of the subtree being yanked */
|
CellUse *use, /* Use that is the root of the subtree being yanked */
|
||||||
Transform *trans; /* Transform from coordinates of use->cu_def to those
|
Transform *trans, /* Transform from coordinates of use->cu_def to those
|
||||||
* in use->cu_parent, for the array element (x, y).
|
* in use->cu_parent, for the array element (x, y).
|
||||||
*/
|
*/
|
||||||
int x, y; /* Indices of this array element */
|
int x,
|
||||||
HierYank *hy; /* See comments in procedure header */
|
int y,
|
||||||
|
HierYank *hy) /* See comments in procedure header */
|
||||||
{
|
{
|
||||||
char labelBuf[4096];
|
char labelBuf[4096];
|
||||||
TerminalPath tpath;
|
TerminalPath tpath;
|
||||||
|
|
@ -201,11 +203,11 @@ extHierYankFunc(use, trans, x, y, hy)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
extHierLabelFunc(scx, label, tpath, targetDef)
|
extHierLabelFunc(
|
||||||
SearchContext *scx;
|
SearchContext *scx,
|
||||||
Label *label;
|
Label *label,
|
||||||
TerminalPath *tpath;
|
TerminalPath *tpath,
|
||||||
CellDef *targetDef;
|
CellDef *targetDef)
|
||||||
{
|
{
|
||||||
char *srcp, *dstp;
|
char *srcp, *dstp;
|
||||||
Label *newlab;
|
Label *newlab;
|
||||||
|
|
|
||||||
|
|
@ -93,12 +93,12 @@ extern bool ExtTechLine();
|
||||||
extern void ExtTechInit();
|
extern void ExtTechInit();
|
||||||
extern void ExtTechFinal();
|
extern void ExtTechFinal();
|
||||||
extern void ExtSetStyle();
|
extern void ExtSetStyle();
|
||||||
extern void ExtPrintStyle();
|
extern void ExtPrintStyle(bool dolist, bool doforall, bool docurrent);
|
||||||
extern void ExtSetPath();
|
extern void ExtSetPath();
|
||||||
extern void ExtPrintPath();
|
extern void ExtPrintPath(bool dolist);
|
||||||
extern void ExtRevertSubstrate();
|
extern void ExtRevertSubstrate();
|
||||||
extern Plane *ExtCell();
|
extern Plane *ExtCell(CellDef *def, char *outName, bool isTop);
|
||||||
extern void ExtractOneCell();
|
extern void ExtractOneCell(CellDef *def, char *outName, bool doLength);
|
||||||
|
|
||||||
extern int ExtGetGateTypesMask();
|
extern int ExtGetGateTypesMask();
|
||||||
extern int ExtGetDiffTypesMask();
|
extern int ExtGetDiffTypesMask();
|
||||||
|
|
|
||||||
|
|
@ -1087,7 +1087,7 @@ extern Tile *extNodeToTile();
|
||||||
|
|
||||||
extern char *extNodeName();
|
extern char *extNodeName();
|
||||||
extern NodeRegion *extBasic();
|
extern NodeRegion *extBasic();
|
||||||
extern NodeRegion *extFindNodes();
|
extern NodeRegion *extFindNodes(CellDef *def, Rect *clipArea, bool subonly);
|
||||||
extern ExtTree *extHierNewOne();
|
extern ExtTree *extHierNewOne();
|
||||||
extern int extNbrPushFunc();
|
extern int extNbrPushFunc();
|
||||||
extern TileType extGetDevType();
|
extern TileType extGetDevType();
|
||||||
|
|
@ -1116,12 +1116,12 @@ extern void ExtFindInteractions();
|
||||||
extern void ExtInterCount();
|
extern void ExtInterCount();
|
||||||
extern void ExtInterCount();
|
extern void ExtInterCount();
|
||||||
extern void ExtTimes();
|
extern void ExtTimes();
|
||||||
extern void ExtParentArea();
|
extern void ExtParentArea(CellUse *use, Rect *changedArea, bool doExtract);
|
||||||
extern void extHierCopyLabels();
|
extern void extHierCopyLabels();
|
||||||
extern int extTimesInitFunc();
|
extern int extTimesInitFunc();
|
||||||
extern int extTimesHierFunc();
|
extern int extTimesHierFunc();
|
||||||
extern int extTimesFlatFunc();
|
extern int extTimesFlatFunc();
|
||||||
extern Plane *extCellFile();
|
extern Plane *extCellFile(CellDef *def, FILE *f, bool isTop);
|
||||||
extern int extInterAreaFunc();
|
extern int extInterAreaFunc();
|
||||||
extern int extTreeSrPaintArea();
|
extern int extTreeSrPaintArea();
|
||||||
extern int extMakeUnique();
|
extern int extMakeUnique();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue