Merge branch 'master' into bplane
Conflicts: commands/CmdCD.c database/DBcellsrch.c database/DBconnect.c database/DBio.c lef/lefRead.c select/selDisplay.c Updated the bplane implementation with all recent updates (merged master).
This commit is contained in:
commit
197c3f3448
3
Makefile
3
Makefile
|
|
@ -47,7 +47,7 @@ database/database.h: database/database.h.in
|
||||||
@echo --- making header file database/database.h
|
@echo --- making header file database/database.h
|
||||||
${SCRIPTS}/makedbh database/database.h.in database/database.h
|
${SCRIPTS}/makedbh database/database.h.in database/database.h
|
||||||
|
|
||||||
modules:
|
modules: database/database.h depend
|
||||||
@echo --- making modules
|
@echo --- making modules
|
||||||
for dir in ${MODULES} ${PROGRAMS}; do \
|
for dir in ${MODULES} ${PROGRAMS}; do \
|
||||||
(cd $$dir && ${MAKE} module); done
|
(cd $$dir && ${MAKE} module); done
|
||||||
|
|
@ -58,6 +58,7 @@ libs:
|
||||||
(cd $$dir && ${MAKE} lib); done
|
(cd $$dir && ${MAKE} lib); done
|
||||||
|
|
||||||
depend: database/database.h
|
depend: database/database.h
|
||||||
|
@echo --- making dependencies
|
||||||
${RM} */Depend
|
${RM} */Depend
|
||||||
for dir in ${MODULES} ${UNUSED_MODULES} ${PROGRAMS}; do \
|
for dir in ${MODULES} ${UNUSED_MODULES} ${PROGRAMS}; do \
|
||||||
(cd $$dir && ${MAKE} depend); done
|
(cd $$dir && ${MAKE} depend); done
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ calmaSetPosition(sname)
|
||||||
return originalPos;
|
return originalPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
calmaReadError("Cell \"%s\" is used but not defined in this file.\n", sname);
|
CalmaReadError("Cell \"%s\" is used but not defined in this file.\n", sname);
|
||||||
|
|
||||||
return originalPos;
|
return originalPos;
|
||||||
}
|
}
|
||||||
|
|
@ -288,6 +288,7 @@ calmaParseStructure(filename)
|
||||||
int mfactor;
|
int mfactor;
|
||||||
off_t filepos;
|
off_t filepos;
|
||||||
bool was_called;
|
bool was_called;
|
||||||
|
bool was_initialized;
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
|
|
||||||
/* Make sure this is a structure; if not, let the caller know we're done */
|
/* Make sure this is a structure; if not, let the caller know we're done */
|
||||||
|
|
@ -296,7 +297,8 @@ calmaParseStructure(filename)
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
|
|
||||||
/* Read the structure name */
|
/* Read the structure name */
|
||||||
if (!calmaSkipExact(CALMA_BGNSTR)) goto syntaxerror;;
|
was_initialized = FALSE;
|
||||||
|
if (!calmaSkipExact(CALMA_BGNSTR)) goto syntaxerror;
|
||||||
if (!calmaReadStringRecord(CALMA_STRNAME, &strname)) goto syntaxerror;
|
if (!calmaReadStringRecord(CALMA_STRNAME, &strname)) goto syntaxerror;
|
||||||
TxPrintf("Reading \"%s\".\n", strname);
|
TxPrintf("Reading \"%s\".\n", strname);
|
||||||
|
|
||||||
|
|
@ -316,23 +318,23 @@ calmaParseStructure(filename)
|
||||||
|
|
||||||
if (!CalmaPostOrder)
|
if (!CalmaPostOrder)
|
||||||
{
|
{
|
||||||
calmaReadError("Cell \"%s\" was already defined in this file.\n",
|
CalmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||||
strname);
|
strname);
|
||||||
calmaReadError("Ignoring duplicate definition\n");
|
CalmaReadError("Ignoring duplicate definition\n");
|
||||||
}
|
}
|
||||||
calmaNextCell();
|
calmaNextCell();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
calmaReadError("Cell \"%s\" was already defined in this file.\n",
|
CalmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||||
strname);
|
strname);
|
||||||
for (suffix = 1; HashGetValue(he) != NULL; suffix++)
|
for (suffix = 1; HashGetValue(he) != NULL; suffix++)
|
||||||
{
|
{
|
||||||
(void) sprintf(newname, "%s_%d", strname, suffix);
|
(void) sprintf(newname, "%s_%d", strname, suffix);
|
||||||
he = HashFind(&calmaDefInitHash, newname);
|
he = HashFind(&calmaDefInitHash, newname);
|
||||||
}
|
}
|
||||||
calmaReadError("Giving this cell a new name: %s\n", newname);
|
CalmaReadError("Giving this cell a new name: %s\n", newname);
|
||||||
strncpy(strname, newname, CALMANAMELENGTH*2);
|
strncpy(strname, newname, CALMANAMELENGTH*2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -354,6 +356,7 @@ calmaParseStructure(filename)
|
||||||
|
|
||||||
/* Initialize the hash table for layer errors */
|
/* Initialize the hash table for layer errors */
|
||||||
HashInit(&calmaLayerHash, 32, sizeof (CalmaLayerType) / sizeof (unsigned));
|
HashInit(&calmaLayerHash, 32, sizeof (CalmaLayerType) / sizeof (unsigned));
|
||||||
|
was_initialized = TRUE;
|
||||||
|
|
||||||
/* Body of structure: a sequence of elements */
|
/* Body of structure: a sequence of elements */
|
||||||
osrefs = nsrefs = 0;
|
osrefs = nsrefs = 0;
|
||||||
|
|
@ -434,7 +437,7 @@ calmaParseStructure(filename)
|
||||||
* the appropriate cell of the database.
|
* the appropriate cell of the database.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CIFPaintCurrent();
|
CIFPaintCurrent(FILE_CALMA);
|
||||||
}
|
}
|
||||||
|
|
||||||
DBAdjustLabelsNew(cifReadCellDef, &TiPlaneRect,
|
DBAdjustLabelsNew(cifReadCellDef, &TiPlaneRect,
|
||||||
|
|
@ -466,7 +469,7 @@ done:
|
||||||
|
|
||||||
/* Syntax error: skip to CALMA_ENDSTR */
|
/* Syntax error: skip to CALMA_ENDSTR */
|
||||||
syntaxerror:
|
syntaxerror:
|
||||||
HashKill(&calmaLayerHash);
|
if (was_initialized == TRUE) HashKill(&calmaLayerHash);
|
||||||
return (calmaSkipTo(CALMA_ENDSTR));
|
return (calmaSkipTo(CALMA_ENDSTR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -505,7 +508,7 @@ calmaParseElement(filename, pnsrefs, pnpaths)
|
||||||
READRH(nbytes, rtype);
|
READRH(nbytes, rtype);
|
||||||
if (nbytes < 0)
|
if (nbytes < 0)
|
||||||
{
|
{
|
||||||
calmaReadError("Unexpected EOF.\n");
|
CalmaReadError("Unexpected EOF.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -533,7 +536,7 @@ calmaParseElement(filename, pnsrefs, pnpaths)
|
||||||
calmaElementText();
|
calmaElementText();
|
||||||
break;
|
break;
|
||||||
case CALMA_NODE:
|
case CALMA_NODE:
|
||||||
calmaReadError("NODE elements not supported: skipping.\n");
|
CalmaReadError("NODE elements not supported: skipping.\n");
|
||||||
calmaSkipSet(node);
|
calmaSkipSet(node);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -661,10 +664,10 @@ calmaElementSref(filename)
|
||||||
|
|
||||||
if (DBIsAncestor(def, cifReadCellDef))
|
if (DBIsAncestor(def, cifReadCellDef))
|
||||||
{
|
{
|
||||||
calmaReadError("Cell %s is an ancestor of %s",
|
CalmaReadError("Cell %s is an ancestor of %s",
|
||||||
def->cd_name, cifReadCellDef->cd_name);
|
def->cd_name, cifReadCellDef->cd_name);
|
||||||
calmaReadError(" and can't be used as a subcell.\n");
|
CalmaReadError(" and can't be used as a subcell.\n");
|
||||||
calmaReadError("(Use skipped)\n");
|
CalmaReadError("(Use skipped)\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -719,12 +722,12 @@ calmaElementSref(filename)
|
||||||
nref = nbytes / 8;
|
nref = nbytes / 8;
|
||||||
if (nref > 3)
|
if (nref > 3)
|
||||||
{
|
{
|
||||||
calmaReadError("Too many points (%d) in SREF/AREF\n", nref);
|
CalmaReadError("Too many points (%d) in SREF/AREF\n", nref);
|
||||||
nref = 3;
|
nref = 3;
|
||||||
}
|
}
|
||||||
else if (nref < 1)
|
else if (nref < 1)
|
||||||
{
|
{
|
||||||
calmaReadError("Missing reference points in SREF/AREF (using 0,0)\n");
|
CalmaReadError("Missing reference points in SREF/AREF (using 0,0)\n");
|
||||||
refarray[0].p_x = refarray[0].p_y = 0;
|
refarray[0].p_x = refarray[0].p_y = 0;
|
||||||
refarray[1].p_x = refarray[1].p_y = 0;
|
refarray[1].p_x = refarray[1].p_y = 0;
|
||||||
refarray[2].p_x = refarray[2].p_y = 0;
|
refarray[2].p_x = refarray[2].p_y = 0;
|
||||||
|
|
@ -853,8 +856,8 @@ calmaElementSref(filename)
|
||||||
if (p.p_x % cols)
|
if (p.p_x % cols)
|
||||||
{
|
{
|
||||||
n = (p.p_x + (cols+1)/2) / cols;
|
n = (p.p_x + (cols+1)/2) / cols;
|
||||||
calmaReadError("# cols doesn't divide displacement ref pt\n");
|
CalmaReadError("# cols doesn't divide displacement ref pt\n");
|
||||||
calmaReadError(" %d / %d -> %d\n", p.p_x, cols, n);
|
CalmaReadError(" %d / %d -> %d\n", p.p_x, cols, n);
|
||||||
xsep = n;
|
xsep = n;
|
||||||
}
|
}
|
||||||
else xsep = p.p_x / cols;
|
else xsep = p.p_x / cols;
|
||||||
|
|
@ -865,8 +868,8 @@ calmaElementSref(filename)
|
||||||
if (p.p_y % rows)
|
if (p.p_y % rows)
|
||||||
{
|
{
|
||||||
n = (p.p_y + (rows+1)/2) / rows;
|
n = (p.p_y + (rows+1)/2) / rows;
|
||||||
calmaReadError("# rows doesn't divide displacement ref pt\n");
|
CalmaReadError("# rows doesn't divide displacement ref pt\n");
|
||||||
calmaReadError(" %d / %d -> %d\n", p.p_y, rows, n);
|
CalmaReadError(" %d / %d -> %d\n", p.p_y, rows, n);
|
||||||
ysep = n;
|
ysep = n;
|
||||||
}
|
}
|
||||||
ysep = p.p_y / rows;
|
ysep = p.p_y / rows;
|
||||||
|
|
|
||||||
|
|
@ -110,8 +110,8 @@ calmaReadTransform(ptrans, name)
|
||||||
|
|
||||||
if (dmag != (double)((int)(dmag + 0.5)))
|
if (dmag != (double)((int)(dmag + 0.5)))
|
||||||
{
|
{
|
||||||
calmaReadError("Non-integer magnification (%g) in transform\n", dmag);
|
CalmaReadError("Non-integer magnification (%g) in transform\n", dmag);
|
||||||
calmaReadError("Rounding to %d.\n", (int)(dmag + 0.5));
|
CalmaReadError("Rounding to %d.\n", (int)(dmag + 0.5));
|
||||||
}
|
}
|
||||||
GeoScaleTrans(ptrans, (int)(dmag + 0.5), &t);
|
GeoScaleTrans(ptrans, (int)(dmag + 0.5), &t);
|
||||||
*ptrans = t;
|
*ptrans = t;
|
||||||
|
|
@ -144,13 +144,13 @@ calmaReadTransform(ptrans, name)
|
||||||
case 0: case 90: case 180: case 270:
|
case 0: case 90: case 180: case 270:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
calmaReadError("Non-Manhattan angle (%d) in transform\n", angle);
|
CalmaReadError("Non-Manhattan angle (%d) in transform\n", angle);
|
||||||
if (angle < 45) angle = 0;
|
if (angle < 45) angle = 0;
|
||||||
else if (angle < 135) angle = 90;
|
else if (angle < 135) angle = 90;
|
||||||
else if (angle < 225) angle = 180;
|
else if (angle < 225) angle = 180;
|
||||||
else if (angle < 315) angle = 270;
|
else if (angle < 315) angle = 270;
|
||||||
else angle = 0;
|
else angle = 0;
|
||||||
calmaReadError(" Rounding to %d degrees.\n", angle);
|
CalmaReadError(" Rounding to %d degrees.\n", angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -223,7 +223,7 @@ calmaReadI2Record(type, pvalue)
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
|
|
||||||
eof:
|
eof:
|
||||||
calmaReadError("Unexpected EOF.\n");
|
CalmaReadError("Unexpected EOF.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -268,7 +268,7 @@ calmaReadI4Record(type, pvalue)
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
|
|
||||||
eof:
|
eof:
|
||||||
calmaReadError("Unexpected EOF.\n");
|
CalmaReadError("Unexpected EOF.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -317,7 +317,7 @@ calmaReadStringRecord(type, str)
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
|
|
||||||
eof:
|
eof:
|
||||||
calmaReadError("Unexpected EOF.\n");
|
CalmaReadError("Unexpected EOF.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -478,7 +478,7 @@ calmaSkipExact(type)
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
|
|
||||||
eof:
|
eof:
|
||||||
calmaReadError("Unexpected EOF.\n");
|
CalmaReadError("Unexpected EOF.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,6 @@ extern HashTable calmaDefInitHash;
|
||||||
extern void calmaLayerError();
|
extern void calmaLayerError();
|
||||||
bool calmaReadPath();
|
bool calmaReadPath();
|
||||||
|
|
||||||
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT } labelType;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
|
|
@ -145,7 +143,7 @@ calmaReadPoint(p, iscale)
|
||||||
rescale = calmaReadScale2 / FindGCF(calmaReadScale2, abs(p->p_x));
|
rescale = calmaReadScale2 / FindGCF(calmaReadScale2, abs(p->p_x));
|
||||||
if ((calmaReadScale1 * rescale) > CIFRescaleLimit)
|
if ((calmaReadScale1 * rescale) > CIFRescaleLimit)
|
||||||
{
|
{
|
||||||
calmaReadError("Warning: calma units at max scale; value rounded\n");
|
CalmaReadError("Warning: calma units at max scale; value rounded\n");
|
||||||
if (p->p_x < 0)
|
if (p->p_x < 0)
|
||||||
p->p_x -= ((calmaReadScale2 - 1) >> 1);
|
p->p_x -= ((calmaReadScale2 - 1) >> 1);
|
||||||
else
|
else
|
||||||
|
|
@ -167,7 +165,7 @@ calmaReadPoint(p, iscale)
|
||||||
rescale = calmaReadScale2 / FindGCF(calmaReadScale2, abs(p->p_y));
|
rescale = calmaReadScale2 / FindGCF(calmaReadScale2, abs(p->p_y));
|
||||||
if ((calmaReadScale1 * rescale) > CIFRescaleLimit)
|
if ((calmaReadScale1 * rescale) > CIFRescaleLimit)
|
||||||
{
|
{
|
||||||
calmaReadError("Warning: calma units at max scale; value rounded\n");
|
CalmaReadError("Warning: calma units at max scale; value rounded\n");
|
||||||
if (p->p_y < 0)
|
if (p->p_y < 0)
|
||||||
p->p_y -= ((calmaReadScale2 - 1) >> 1);
|
p->p_y -= ((calmaReadScale2 - 1) >> 1);
|
||||||
else
|
else
|
||||||
|
|
@ -218,7 +216,7 @@ calmaElementBoundary()
|
||||||
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
||||||
|| !calmaReadI2Record(CALMA_DATATYPE, &dt))
|
|| !calmaReadI2Record(CALMA_DATATYPE, &dt))
|
||||||
{
|
{
|
||||||
calmaReadError("Missing layer or datatype in boundary/box.\n");
|
CalmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,7 +234,7 @@ calmaElementBoundary()
|
||||||
if (!calmaReadPath(&pathheadp, (plane == NULL) ? 0 : 1))
|
if (!calmaReadPath(&pathheadp, (plane == NULL) ? 0 : 1))
|
||||||
{
|
{
|
||||||
if (plane != NULL)
|
if (plane != NULL)
|
||||||
calmaReadError("Error while reading path for boundary/box; ignored.\n");
|
CalmaReadError("Error while reading path for boundary/box; ignored.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -274,7 +272,6 @@ calmaElementBoundary()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CIFPropRecordPath(cifReadCellDef, pathheadp, FALSE);
|
|
||||||
rp = CIFPolyToRects(pathheadp, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
rp = CIFPolyToRects(pathheadp, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
||||||
CIFFreePath(pathheadp);
|
CIFFreePath(pathheadp);
|
||||||
|
|
||||||
|
|
@ -300,7 +297,7 @@ calmaElementBoundary()
|
||||||
rpc.r_ytop /= calmaReadScale1;
|
rpc.r_ytop /= calmaReadScale1;
|
||||||
|
|
||||||
if ((ciftype >= 0) &&
|
if ((ciftype >= 0) &&
|
||||||
((cifCurReadStyle->crs_labelSticky[ciftype] != LABEL_TYPE_NONE)))
|
(cifCurReadStyle->crs_labelSticky[ciftype] != LABEL_TYPE_NONE))
|
||||||
{
|
{
|
||||||
Label *lab;
|
Label *lab;
|
||||||
TileType type;
|
TileType type;
|
||||||
|
|
@ -332,7 +329,7 @@ calmaElementBoundary()
|
||||||
|
|
||||||
if (cifCurReadPlanes == cifEditCellPlanes)
|
if (cifCurReadPlanes == cifEditCellPlanes)
|
||||||
{
|
{
|
||||||
CIFPaintCurrent();
|
CIFPaintCurrent(FILE_CALMA);
|
||||||
DBReComputeBbox(cifReadCellDef);
|
DBReComputeBbox(cifReadCellDef);
|
||||||
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
||||||
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
||||||
|
|
@ -386,7 +383,7 @@ calmaElementBox()
|
||||||
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
||||||
|| !calmaReadI2Record(CALMA_BOXTYPE, &dt))
|
|| !calmaReadI2Record(CALMA_BOXTYPE, &dt))
|
||||||
{
|
{
|
||||||
calmaReadError("Missing layer or datatype in boundary/box.\n");
|
CalmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -410,7 +407,7 @@ calmaElementBox()
|
||||||
READRH(nbytes, rtype);
|
READRH(nbytes, rtype);
|
||||||
if (nbytes < 0)
|
if (nbytes < 0)
|
||||||
{
|
{
|
||||||
calmaReadError("EOF when reading box.\n");
|
CalmaReadError("EOF when reading box.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (rtype != CALMA_XY)
|
if (rtype != CALMA_XY)
|
||||||
|
|
@ -423,7 +420,7 @@ calmaElementBox()
|
||||||
npoints = (nbytes - CALMAHEADERLENGTH) / 8;
|
npoints = (nbytes - CALMAHEADERLENGTH) / 8;
|
||||||
if (npoints != 5)
|
if (npoints != 5)
|
||||||
{
|
{
|
||||||
calmaReadError("Box doesn't have 5 points.\n");
|
CalmaReadError("Box doesn't have 5 points.\n");
|
||||||
(void) calmaSkipBytes(nbytes - CALMAHEADERLENGTH);
|
(void) calmaSkipBytes(nbytes - CALMAHEADERLENGTH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -494,7 +491,7 @@ calmaElementPath()
|
||||||
if (pathtype != CALMAPATH_SQUAREFLUSH && pathtype != CALMAPATH_SQUAREPLUS &&
|
if (pathtype != CALMAPATH_SQUAREFLUSH && pathtype != CALMAPATH_SQUAREPLUS &&
|
||||||
pathtype != CALMAPATH_CUSTOM)
|
pathtype != CALMAPATH_CUSTOM)
|
||||||
{
|
{
|
||||||
calmaReadError("Warning: pathtype %d unsupported (ignored).\n", pathtype);
|
CalmaReadError("Warning: pathtype %d unsupported (ignored).\n", pathtype);
|
||||||
pathtype = CALMAPATH_SQUAREFLUSH;
|
pathtype = CALMAPATH_SQUAREFLUSH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -508,13 +505,13 @@ calmaElementPath()
|
||||||
{
|
{
|
||||||
if (!calmaReadI4Record(CALMA_WIDTH, &width))
|
if (!calmaReadI4Record(CALMA_WIDTH, &width))
|
||||||
{
|
{
|
||||||
calmaReadError("Error in reading WIDTH in calmaElementPath()\n") ;
|
CalmaReadError("Error in reading WIDTH in calmaElementPath()\n") ;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
width *= calmaReadScale1;
|
width *= calmaReadScale1;
|
||||||
if (width % calmaReadScale2 != 0)
|
if (width % calmaReadScale2 != 0)
|
||||||
calmaReadError("Wire width snapped to nearest integer boundary.\n");
|
CalmaReadError("Wire width snapped to nearest integer boundary.\n");
|
||||||
|
|
||||||
width /= calmaReadScale2;
|
width /= calmaReadScale2;
|
||||||
|
|
||||||
|
|
@ -531,12 +528,12 @@ calmaElementPath()
|
||||||
if (nbytes > 0 && rtype == CALMA_BGNEXTN)
|
if (nbytes > 0 && rtype == CALMA_BGNEXTN)
|
||||||
{
|
{
|
||||||
if (!calmaReadI4Record(CALMA_BGNEXTN, &extend1))
|
if (!calmaReadI4Record(CALMA_BGNEXTN, &extend1))
|
||||||
calmaReadError("Error in reading BGNEXTN in path (ignored)\n") ;
|
CalmaReadError("Error in reading BGNEXTN in path (ignored)\n") ;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
extend1 *= calmaReadScale1;
|
extend1 *= calmaReadScale1;
|
||||||
if (extend1 % calmaReadScale2 != 0)
|
if (extend1 % calmaReadScale2 != 0)
|
||||||
calmaReadError("Wire extension snapped to nearest integer boundary.\n");
|
CalmaReadError("Wire extension snapped to nearest integer boundary.\n");
|
||||||
extend1 *= 2;
|
extend1 *= 2;
|
||||||
extend1 /= calmaReadScale2;
|
extend1 /= calmaReadScale2;
|
||||||
}
|
}
|
||||||
|
|
@ -546,12 +543,12 @@ calmaElementPath()
|
||||||
if (nbytes > 0 && rtype == CALMA_ENDEXTN)
|
if (nbytes > 0 && rtype == CALMA_ENDEXTN)
|
||||||
{
|
{
|
||||||
if (!calmaReadI4Record(CALMA_ENDEXTN, &extend2))
|
if (!calmaReadI4Record(CALMA_ENDEXTN, &extend2))
|
||||||
calmaReadError("Error in reading ENDEXTN in path (ignored)\n") ;
|
CalmaReadError("Error in reading ENDEXTN in path (ignored)\n") ;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
extend2 *= calmaReadScale1;
|
extend2 *= calmaReadScale1;
|
||||||
if (extend2 % calmaReadScale2 != 0)
|
if (extend2 % calmaReadScale2 != 0)
|
||||||
calmaReadError("Wire extension snapped to nearest integer boundary.\n");
|
CalmaReadError("Wire extension snapped to nearest integer boundary.\n");
|
||||||
extend2 *= 2;
|
extend2 *= 2;
|
||||||
extend2 /= calmaReadScale2;
|
extend2 /= calmaReadScale2;
|
||||||
}
|
}
|
||||||
|
|
@ -561,7 +558,7 @@ calmaElementPath()
|
||||||
savescale = calmaReadScale1;
|
savescale = calmaReadScale1;
|
||||||
if (!calmaReadPath(&pathheadp, 2))
|
if (!calmaReadPath(&pathheadp, 2))
|
||||||
{
|
{
|
||||||
calmaReadError("Improper path; ignored.\n");
|
CalmaReadError("Improper path; ignored.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (savescale != calmaReadScale1)
|
if (savescale != calmaReadScale1)
|
||||||
|
|
@ -652,14 +649,14 @@ calmaElementPath()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CIFPropRecordPath(cifReadCellDef, pathheadp, TRUE);
|
CIFPropRecordPath(cifReadCellDef, pathheadp, TRUE, "path");
|
||||||
CIFPaintWirePath(pathheadp, width,
|
CIFPaintWirePath(pathheadp, width,
|
||||||
(pathtype == CALMAPATH_SQUAREFLUSH || pathtype == CALMAPATH_CUSTOM) ?
|
(pathtype == CALMAPATH_SQUAREFLUSH || pathtype == CALMAPATH_CUSTOM) ?
|
||||||
FALSE : TRUE, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
FALSE : TRUE, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
||||||
|
|
||||||
if (cifCurReadPlanes == cifEditCellPlanes)
|
if (cifCurReadPlanes == cifEditCellPlanes)
|
||||||
{
|
{
|
||||||
CIFPaintCurrent();
|
CIFPaintCurrent(FILE_CALMA);
|
||||||
DBReComputeBbox(cifReadCellDef);
|
DBReComputeBbox(cifReadCellDef);
|
||||||
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
||||||
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
||||||
|
|
@ -715,7 +712,7 @@ calmaElementText()
|
||||||
cifnum = CIFCalmaLayerToCifLayer(layer, textt, cifCurReadStyle);
|
cifnum = CIFCalmaLayerToCifLayer(layer, textt, cifCurReadStyle);
|
||||||
if (cifnum < 0)
|
if (cifnum < 0)
|
||||||
{
|
{
|
||||||
if(cifCurReadStyle->crs_flags & CRF_IGNORE_UNKNOWNLAYER_LABELS)
|
if (cifCurReadStyle->crs_flags & CRF_IGNORE_UNKNOWNLAYER_LABELS)
|
||||||
type = -1;
|
type = -1;
|
||||||
else {
|
else {
|
||||||
calmaLayerError("Label on unknown layer/datatype", layer, textt);
|
calmaLayerError("Label on unknown layer/datatype", layer, textt);
|
||||||
|
|
@ -728,7 +725,7 @@ calmaElementText()
|
||||||
angle = 0;
|
angle = 0;
|
||||||
|
|
||||||
/* Default size is 1um */
|
/* Default size is 1um */
|
||||||
size = (int)((800 * cifCurReadStyle->crs_multiplier)
|
size = (int)((1000 * cifCurReadStyle->crs_multiplier)
|
||||||
/ cifCurReadStyle->crs_scaleFactor);
|
/ cifCurReadStyle->crs_scaleFactor);
|
||||||
/* Default position is bottom-right (but what the spec calls "top-left"!) */
|
/* Default position is bottom-right (but what the spec calls "top-left"!) */
|
||||||
pos = GEO_SOUTHEAST;
|
pos = GEO_SOUTHEAST;
|
||||||
|
|
@ -775,6 +772,31 @@ calmaElementText()
|
||||||
else if (nbytes > 0 && rtype != CALMA_STRANS)
|
else if (nbytes > 0 && rtype != CALMA_STRANS)
|
||||||
calmaSkipSet(ignore);
|
calmaSkipSet(ignore);
|
||||||
|
|
||||||
|
/* NOTE: Record may contain both PRESENTATION and WIDTH */
|
||||||
|
PEEKRH(nbytes, rtype);
|
||||||
|
if (nbytes > 0 && rtype == CALMA_WIDTH)
|
||||||
|
{
|
||||||
|
int width;
|
||||||
|
|
||||||
|
/* Use WIDTH value to set the font size */
|
||||||
|
if (!calmaReadI4Record(CALMA_WIDTH, &width))
|
||||||
|
{
|
||||||
|
CalmaReadError("Error in reading WIDTH in calmaElementText()\n") ;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
width *= calmaReadScale1;
|
||||||
|
if (width % calmaReadScale2 != 0)
|
||||||
|
CalmaReadError("Text width snapped to nearest integer boundary.\n");
|
||||||
|
|
||||||
|
width /= calmaReadScale2;
|
||||||
|
|
||||||
|
/* Convert to database units, because dimension goes to PutLabel */
|
||||||
|
/* and is not converted through CIFPaintCurrent(). */
|
||||||
|
size = CIFScaleCoord(width, COORD_ANY);
|
||||||
|
}
|
||||||
|
else if (nbytes > 0 && rtype != CALMA_STRANS)
|
||||||
|
calmaSkipSet(ignore);
|
||||||
|
|
||||||
READRH(nbytes, rtype);
|
READRH(nbytes, rtype);
|
||||||
if (nbytes > 0 && rtype == CALMA_STRANS)
|
if (nbytes > 0 && rtype == CALMA_STRANS)
|
||||||
{
|
{
|
||||||
|
|
@ -785,9 +807,10 @@ calmaElementText()
|
||||||
if (nbytes > 0 && rtype == CALMA_MAG)
|
if (nbytes > 0 && rtype == CALMA_MAG)
|
||||||
{
|
{
|
||||||
calmaReadR8(&dval);
|
calmaReadR8(&dval);
|
||||||
|
|
||||||
/* Assume that MAG is the label size in microns */
|
/* Assume that MAG is the label size in microns */
|
||||||
/* "size" is the label size in 8 * (database units) */
|
/* "size" is the label size in 10 * (database units) */
|
||||||
size = (int)((dval * 800 * cifCurReadStyle->crs_multiplier)
|
size = (int)((dval * 1000 * cifCurReadStyle->crs_multiplier)
|
||||||
/ cifCurReadStyle->crs_scaleFactor);
|
/ cifCurReadStyle->crs_scaleFactor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -817,7 +840,7 @@ calmaElementText()
|
||||||
nbytes -= CALMAHEADERLENGTH;
|
nbytes -= CALMAHEADERLENGTH;
|
||||||
if (nbytes < 8)
|
if (nbytes < 8)
|
||||||
{
|
{
|
||||||
calmaReadError("Not enough bytes in point record.\n");
|
CalmaReadError("Not enough bytes in point record.\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -867,15 +890,15 @@ calmaElementText()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changed) {
|
if (changed) {
|
||||||
calmaReadError("Warning: improper characters fixed in label '%s'\n",
|
CalmaReadError("Warning: improper characters fixed in label '%s'\n",
|
||||||
savstring);
|
savstring);
|
||||||
if (!algmsg) {
|
if (!algmsg) {
|
||||||
algmsg = TRUE;
|
algmsg = TRUE;
|
||||||
calmaReadError(" (algorithm used: trailing <CR> dropped, "
|
CalmaReadError(" (algorithm used: trailing <CR> dropped, "
|
||||||
"<CR> and ' ' changed to '_', \n"
|
"<CR> and ' ' changed to '_', \n"
|
||||||
" other non-printables changed to '?')\n");
|
" other non-printables changed to '?')\n");
|
||||||
}
|
}
|
||||||
calmaReadError(" modified label is '%s'\n", textbody);
|
CalmaReadError(" modified label is '%s'\n", textbody);
|
||||||
freeMagic(savstring);
|
freeMagic(savstring);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -885,13 +908,19 @@ calmaElementText()
|
||||||
/* Place the label */
|
/* Place the label */
|
||||||
if (strlen(textbody) == 0)
|
if (strlen(textbody) == 0)
|
||||||
{
|
{
|
||||||
calmaReadError("Warning: Ignoring empty string label at (%d, %d)\n",
|
CalmaReadError("Warning: Ignoring empty string label at (%d, %d)\n",
|
||||||
r.r_ll.p_x * cifCurReadStyle->crs_scaleFactor,
|
r.r_ll.p_x * cifCurReadStyle->crs_scaleFactor,
|
||||||
r.r_ll.p_y * cifCurReadStyle->crs_scaleFactor);
|
r.r_ll.p_y * cifCurReadStyle->crs_scaleFactor);
|
||||||
}
|
}
|
||||||
|
else if (cifCurReadStyle->crs_labelSticky[cifnum] == LABEL_TYPE_CELLID)
|
||||||
|
{
|
||||||
|
/* Special handling of label layers marked "cellid" in the techfile. */
|
||||||
|
/* The actual cellname is the ID string, not the GDS structure name. */
|
||||||
|
DBCellRenameDef(cifReadCellDef, textbody);
|
||||||
|
}
|
||||||
else if (type < 0)
|
else if (type < 0)
|
||||||
{
|
{
|
||||||
calmaReadError("Warning: label \"%s\" at (%d, %d) is on unhandled"
|
CalmaReadError("Warning: label \"%s\" at (%d, %d) is on unhandled"
|
||||||
" layer:purpose pair %d:%d and will be discarded.\n", textbody,
|
" layer:purpose pair %d:%d and will be discarded.\n", textbody,
|
||||||
r.r_ll.p_x * cifCurReadStyle->crs_scaleFactor,
|
r.r_ll.p_x * cifCurReadStyle->crs_scaleFactor,
|
||||||
r.r_ll.p_y * cifCurReadStyle->crs_scaleFactor, layer, textt);
|
r.r_ll.p_y * cifCurReadStyle->crs_scaleFactor, layer, textt);
|
||||||
|
|
@ -1007,7 +1036,7 @@ calmaReadPath(pathheadpp, iscale)
|
||||||
READRH(nbytes, rtype);
|
READRH(nbytes, rtype);
|
||||||
if (nbytes < 0)
|
if (nbytes < 0)
|
||||||
{
|
{
|
||||||
calmaReadError("EOF when reading path.\n");
|
CalmaReadError("EOF when reading path.\n");
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
if (rtype != CALMA_XY)
|
if (rtype != CALMA_XY)
|
||||||
|
|
@ -1034,7 +1063,7 @@ calmaReadPath(pathheadpp, iscale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ABS(path.cifp_x) > 0x0fffffff || ABS(path.cifp_y) > 0x0fffffff) {
|
if (ABS(path.cifp_x) > 0x0fffffff || ABS(path.cifp_y) > 0x0fffffff) {
|
||||||
calmaReadError("Warning: Very large point in path: (%d, %d)\n",
|
CalmaReadError("Warning: Very large point in path: (%d, %d)\n",
|
||||||
path.cifp_x, path.cifp_y);
|
path.cifp_x, path.cifp_y);
|
||||||
}
|
}
|
||||||
if (feof(calmaInputFile))
|
if (feof(calmaInputFile))
|
||||||
|
|
@ -1112,6 +1141,6 @@ calmaLayerError(mesg, layer, dt)
|
||||||
if (HashGetValue(he) == NULL)
|
if (HashGetValue(he) == NULL)
|
||||||
{
|
{
|
||||||
HashSetValue(he, (ClientData) 1);
|
HashSetValue(he, (ClientData) 1);
|
||||||
calmaReadError("%s, layer=%d type=%d\n", mesg, layer, dt);
|
CalmaReadError("%s, layer=%d type=%d\n", mesg, layer, dt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -232,7 +232,7 @@ done:
|
||||||
freeMagic(libname);
|
freeMagic(libname);
|
||||||
}
|
}
|
||||||
|
|
||||||
CIFReadCellCleanup(1);
|
CIFReadCellCleanup(FILE_CALMA);
|
||||||
HashKill(&calmaDefInitHash);
|
HashKill(&calmaDefInitHash);
|
||||||
UndoEnable();
|
UndoEnable();
|
||||||
|
|
||||||
|
|
@ -330,7 +330,7 @@ calmaParseUnits()
|
||||||
/*
|
/*
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* calmaReadError --
|
* CalmaReadError --
|
||||||
*
|
*
|
||||||
* This procedure is called to print out error messages during
|
* This procedure is called to print out error messages during
|
||||||
* Calma file reading.
|
* Calma file reading.
|
||||||
|
|
@ -349,29 +349,35 @@ calmaParseUnits()
|
||||||
|
|
||||||
void
|
void
|
||||||
/*VARARGS1*/
|
/*VARARGS1*/
|
||||||
calmaReadError(format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
|
CalmaReadError(format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
|
||||||
char *format;
|
char *format;
|
||||||
char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10;
|
char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10;
|
||||||
{
|
{
|
||||||
|
off_t filepos;
|
||||||
|
|
||||||
calmaTotalErrors++;
|
calmaTotalErrors++;
|
||||||
if (CIFWarningLevel == CIF_WARN_NONE) return;
|
if (CIFWarningLevel == CIF_WARN_NONE) return;
|
||||||
|
|
||||||
if ((calmaTotalErrors < 100) || (CIFWarningLevel != CIF_WARN_LIMIT))
|
if ((calmaTotalErrors < 100) || (CIFWarningLevel != CIF_WARN_LIMIT))
|
||||||
{
|
{
|
||||||
|
filepos = ftello(calmaInputFile);
|
||||||
|
|
||||||
if (CIFWarningLevel == CIF_WARN_REDIRECT)
|
if (CIFWarningLevel == CIF_WARN_REDIRECT)
|
||||||
{
|
{
|
||||||
if (calmaErrorFile != NULL)
|
if (calmaErrorFile != NULL)
|
||||||
{
|
{
|
||||||
fprintf(calmaErrorFile, "Error while reading cell \"%s\": ",
|
fprintf(calmaErrorFile, "Error while reading cell \"%s\" ",
|
||||||
cifReadCellDef->cd_name);
|
cifReadCellDef->cd_name);
|
||||||
|
fprintf(calmaErrorFile, "(byte position %"DLONG_PREFIX"ld): ",
|
||||||
|
(dlong)filepos);
|
||||||
fprintf(calmaErrorFile, format, a1, a2, a3, a4, a5, a6, a7,
|
fprintf(calmaErrorFile, format, a1, a2, a3, a4, a5, a6, a7,
|
||||||
a8, a9, a10);
|
a8, a9, a10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TxError("Error while reading cell \"%s\": ", cifReadCellDef->cd_name);
|
TxError("Error while reading cell \"%s\" ", cifReadCellDef->cd_name);
|
||||||
|
TxError("(byte position %"DLONG_PREFIX"d): ", (dlong)filepos);
|
||||||
TxError(format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
|
TxError(format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -402,7 +408,7 @@ calmaUnexpected(wanted, got)
|
||||||
int wanted; /* Type of record we wanted */
|
int wanted; /* Type of record we wanted */
|
||||||
int got; /* Type of record we got */
|
int got; /* Type of record we got */
|
||||||
{
|
{
|
||||||
calmaReadError("Unexpected record type in input: \n");
|
CalmaReadError("Unexpected record type in input: \n");
|
||||||
|
|
||||||
if (CIFWarningLevel == CIF_WARN_NONE) return;
|
if (CIFWarningLevel == CIF_WARN_NONE) return;
|
||||||
if (calmaTotalErrors < 100 || (CIFWarningLevel != CIF_WARN_LIMIT))
|
if (calmaTotalErrors < 100 || (CIFWarningLevel != CIF_WARN_LIMIT))
|
||||||
|
|
|
||||||
|
|
@ -365,9 +365,8 @@ CalmaWrite(rootDef, f)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
calmaDumpStructure(def, cellstart, outf, calmaDefHash, filename)
|
calmaDumpStructure(def, outf, calmaDefHash, filename)
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
off_t cellstart;
|
|
||||||
FILE *outf;
|
FILE *outf;
|
||||||
HashTable *calmaDefHash;
|
HashTable *calmaDefHash;
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
@ -404,6 +403,8 @@ calmaDumpStructure(def, cellstart, outf, calmaDefHash, filename)
|
||||||
{
|
{
|
||||||
/* Structure is defined more than once */
|
/* Structure is defined more than once */
|
||||||
TxError("Structure %s defined redundantly in GDS\n", strname);
|
TxError("Structure %s defined redundantly in GDS\n", strname);
|
||||||
|
/* To be considered: Should the structure be output more than once? */
|
||||||
|
calmaOutStringRecord(CALMA_STRNAME, newnameptr, outf);
|
||||||
}
|
}
|
||||||
else if (!strcmp(strname, def->cd_name))
|
else if (!strcmp(strname, def->cd_name))
|
||||||
{
|
{
|
||||||
|
|
@ -591,10 +592,9 @@ syntaxerror:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
calmaFullDump(def, fi, cellstart, outf, filename)
|
calmaFullDump(def, fi, outf, filename)
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
FILE *fi;
|
FILE *fi;
|
||||||
off_t cellstart;
|
|
||||||
FILE *outf;
|
FILE *outf;
|
||||||
char *filename;
|
char *filename;
|
||||||
{
|
{
|
||||||
|
|
@ -657,7 +657,7 @@ calmaFullDump(def, fi, cellstart, outf, filename)
|
||||||
}
|
}
|
||||||
HashSetValue(he, StrDup(NULL, uniqlibname));
|
HashSetValue(he, StrDup(NULL, uniqlibname));
|
||||||
|
|
||||||
while (calmaDumpStructure(def, cellstart, outf, &calmaDefHash, filename))
|
while (calmaDumpStructure(def, outf, &calmaDefHash, filename))
|
||||||
if (SigInterruptPending)
|
if (SigInterruptPending)
|
||||||
goto done;
|
goto done;
|
||||||
calmaSkipExact(CALMA_ENDLIB);
|
calmaSkipExact(CALMA_ENDLIB);
|
||||||
|
|
@ -811,7 +811,7 @@ calmaProcessDef(def, outf)
|
||||||
|
|
||||||
he = HashLookOnly(&calmaLibHash, retfilename);
|
he = HashLookOnly(&calmaLibHash, retfilename);
|
||||||
if (he == NULL)
|
if (he == NULL)
|
||||||
calmaFullDump(def, fi, cellstart, outf, retfilename);
|
calmaFullDump(def, fi, outf, retfilename);
|
||||||
|
|
||||||
fclose(fi);
|
fclose(fi);
|
||||||
def->cd_flags |= CDVENDORGDS;
|
def->cd_flags |= CDVENDORGDS;
|
||||||
|
|
@ -2755,16 +2755,17 @@ calmaOutStringRecord(type, str, f)
|
||||||
/*
|
/*
|
||||||
* Make sure length is even.
|
* Make sure length is even.
|
||||||
* Output at most CALMANAMELENGTH characters.
|
* Output at most CALMANAMELENGTH characters.
|
||||||
|
* If the name is longer than CALMANAMELENGTH, then output the
|
||||||
|
* last CALMANAMELENGTH characters (since cell names are more
|
||||||
|
* likely to be unique in the last characters than in the first
|
||||||
|
* characters).
|
||||||
*/
|
*/
|
||||||
if (len & 01) len++;
|
if (len & 01) len++;
|
||||||
if (len > CALMANAMELENGTH)
|
if (len > CALMANAMELENGTH)
|
||||||
{
|
{
|
||||||
char csav;
|
|
||||||
TxError("Warning: Cellname %s truncated ", str);
|
TxError("Warning: Cellname %s truncated ", str);
|
||||||
csav = *(str + 32);
|
TxError("to %s (GDS format limit)\n", str + len - CALMANAMELENGTH);
|
||||||
*(str + 32) = '\0';
|
locstr = str + len - CALMANAMELENGTH;
|
||||||
TxError("to %32s (GDS format limit)\n", str);
|
|
||||||
*(str + 32) = csav;
|
|
||||||
len = CALMANAMELENGTH;
|
len = CALMANAMELENGTH;
|
||||||
}
|
}
|
||||||
calmaOutI2(len+4, f); /* Record length */
|
calmaOutI2(len+4, f); /* Record length */
|
||||||
|
|
|
||||||
12
calma/Depend
12
calma/Depend
|
|
@ -1,30 +1,40 @@
|
||||||
CalmaRead.o: CalmaRead.c ../utils/magic.h ../utils/geometry.h \
|
CalmaRead.o: CalmaRead.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
||||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
../calma/calmaInt.h ../commands/commands.h ../utils/undo.h
|
../calma/calmaInt.h ../commands/commands.h ../utils/undo.h
|
||||||
CalmaRdcl.o: CalmaRdcl.c ../utils/magic.h ../utils/geometry.h \
|
CalmaRdcl.o: CalmaRdcl.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
||||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
../calma/calmaInt.h ../calma/calma.h
|
../calma/calmaInt.h ../calma/calma.h
|
||||||
CalmaRdio.o: CalmaRdio.c ../utils/magic.h ../utils/geometry.h \
|
CalmaRdio.o: CalmaRdio.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
||||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
../calma/calmaInt.h
|
../calma/calmaInt.h
|
||||||
CalmaRdpt.o: CalmaRdpt.c ../utils/magic.h ../utils/geometry.h \
|
CalmaRdpt.o: CalmaRdpt.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
../database/databaseInt.h ../utils/malloc.h ../utils/tech.h ../cif/cif.h \
|
||||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
../calma/calmaInt.h ../calma/calma.h
|
../calma/calmaInt.h ../calma/calma.h
|
||||||
CalmaWrite.o: CalmaWrite.c ../utils/magic.h ../utils/malloc.h \
|
CalmaWrite.o: CalmaWrite.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/utils.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/utils.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/tech.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/tech.h \
|
||||||
../cif/cif.h ../cif/CIFint.h ../utils/signals.h ../windows/windows.h \
|
../cif/cif.h ../cif/CIFint.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
../calma/calmaInt.h ../utils/main.h ../utils/stack.h
|
../calma/calmaInt.h ../utils/main.h ../utils/stack.h
|
||||||
|
|
|
||||||
|
|
@ -42,5 +42,6 @@ extern bool CalmaWrite();
|
||||||
extern void CalmaReadFile();
|
extern void CalmaReadFile();
|
||||||
extern void CalmaTechInit();
|
extern void CalmaTechInit();
|
||||||
extern bool CalmaGenerateArray();
|
extern bool CalmaGenerateArray();
|
||||||
|
extern void CalmaReadError();
|
||||||
|
|
||||||
#endif /* _CALMA_H */
|
#endif /* _CALMA_H */
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,9 @@ typedef struct
|
||||||
/* Length of record header */
|
/* Length of record header */
|
||||||
#define CALMAHEADERLENGTH 4
|
#define CALMAHEADERLENGTH 4
|
||||||
|
|
||||||
|
/* Label types */
|
||||||
|
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT, LABEL_TYPE_CELLID } labelType;
|
||||||
|
|
||||||
/* ------------------------- Input macros ----------------------------- */
|
/* ------------------------- Input macros ----------------------------- */
|
||||||
|
|
||||||
/* Globals for Calma reading */
|
/* Globals for Calma reading */
|
||||||
|
|
|
||||||
24
cif/CIFgen.c
24
cif/CIFgen.c
|
|
@ -3036,6 +3036,29 @@ CIFGenLayer(op, area, cellDef, temps, clientdata)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CIFOP_BOUNDARY:
|
||||||
|
cifPlane = curPlane;
|
||||||
|
/* This function for cifoutput only. cifinput handled separately. */
|
||||||
|
if (cellDef && (cellDef->cd_flags & CDFIXEDBBOX))
|
||||||
|
{
|
||||||
|
char *propvalue;
|
||||||
|
bool found;
|
||||||
|
|
||||||
|
propvalue = (char *)DBPropGet(cellDef, "FIXED_BBOX", &found);
|
||||||
|
if (!found) break;
|
||||||
|
if (sscanf(propvalue, "%d %d %d %d", &bbox.r_xbot, &bbox.r_ybot,
|
||||||
|
&bbox.r_xtop, &bbox.r_ytop) != 4) break;
|
||||||
|
|
||||||
|
cifScale = (CIFCurStyle) ? CIFCurStyle->cs_scaleFactor : 1;
|
||||||
|
bbox.r_xbot *= cifScale;
|
||||||
|
bbox.r_xtop *= cifScale;
|
||||||
|
bbox.r_ybot *= cifScale;
|
||||||
|
bbox.r_ytop *= cifScale;
|
||||||
|
DBNMPaintPlane(cifPlane, CIF_SOLIDTYPE, &bbox,
|
||||||
|
CIFPaintTable, (PaintUndoInfo *)NULL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case CIFOP_BBOX:
|
case CIFOP_BBOX:
|
||||||
if (CIFErrorDef == NULL) break;
|
if (CIFErrorDef == NULL) break;
|
||||||
|
|
||||||
|
|
@ -3149,6 +3172,7 @@ CIFGen(cellDef, area, planes, layers, replace, genAllPlanes, clientdata)
|
||||||
CIFErrorLayer = i;
|
CIFErrorLayer = i;
|
||||||
new[i] = CIFGenLayer(CIFCurStyle->cs_layers[i]->cl_ops,
|
new[i] = CIFGenLayer(CIFCurStyle->cs_layers[i]->cl_ops,
|
||||||
&expanded, cellDef, new, clientdata);
|
&expanded, cellDef, new, clientdata);
|
||||||
|
|
||||||
/* Clean up the non-manhattan geometry in the plane */
|
/* Clean up the non-manhattan geometry in the plane */
|
||||||
if (CIFUnfracture) DBMergeNMTiles(new[i], &expanded,
|
if (CIFUnfracture) DBMergeNMTiles(new[i], &expanded,
|
||||||
(PaintUndoInfo *)NULL);
|
(PaintUndoInfo *)NULL);
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,8 @@ typedef struct cifop
|
||||||
* the cell bounding box. This involves no magic type
|
* the cell bounding box. This involves no magic type
|
||||||
* layers but may itself be acted upon with grow/shrink
|
* layers but may itself be acted upon with grow/shrink
|
||||||
* rules.
|
* rules.
|
||||||
|
* CIFOP_BOUNDARY - Added 6/5/19---map the FIXED_BBOX property bounding
|
||||||
|
* box coordinates into CIF layer geometry.
|
||||||
* CIFOP_NET - Added 11/3/08---pull an entire electrical net into
|
* CIFOP_NET - Added 11/3/08---pull an entire electrical net into
|
||||||
* the CIF layer, selectively picking layers.
|
* the CIF layer, selectively picking layers.
|
||||||
* CIFOP_MAXRECT - Reduce all areas to the largest internal fitting
|
* CIFOP_MAXRECT - Reduce all areas to the largest internal fitting
|
||||||
|
|
@ -144,9 +146,10 @@ typedef struct cifop
|
||||||
#define CIFOP_ANDNOT 12
|
#define CIFOP_ANDNOT 12
|
||||||
#define CIFOP_SQUARES_G 13
|
#define CIFOP_SQUARES_G 13
|
||||||
#define CIFOP_BBOX 14
|
#define CIFOP_BBOX 14
|
||||||
#define CIFOP_NET 15
|
#define CIFOP_BOUNDARY 15
|
||||||
#define CIFOP_MAXRECT 16
|
#define CIFOP_NET 16
|
||||||
#define CIFOP_COPYUP 17
|
#define CIFOP_MAXRECT 17
|
||||||
|
#define CIFOP_COPYUP 18
|
||||||
|
|
||||||
/* Added by Tim 10/21/2004 */
|
/* Added by Tim 10/21/2004 */
|
||||||
/* The following structure is used to pass information on how to draw
|
/* The following structure is used to pass information on how to draw
|
||||||
|
|
|
||||||
137
cif/CIFrdcl.c
137
cif/CIFrdcl.c
|
|
@ -557,15 +557,18 @@ cifCopyPaintFunc(tile, cifCopyRec)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
CIFPaintCurrent()
|
CIFPaintCurrent(filetype)
|
||||||
|
bool filetype;
|
||||||
{
|
{
|
||||||
|
extern int cifMakeBoundaryFunc(); /* Forward declaration. */
|
||||||
|
extern int cifPaintCurrentFunc(); /* Forward declaration. */
|
||||||
|
|
||||||
Plane *plane, *swapplane;
|
Plane *plane, *swapplane;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < cifCurReadStyle->crs_nLayers; i++)
|
for (i = 0; i < cifCurReadStyle->crs_nLayers; i++)
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
extern int cifPaintCurrentFunc(); /* Forward declaration. */
|
|
||||||
CIFOp *op;
|
CIFOp *op;
|
||||||
|
|
||||||
plane = CIFGenLayer(cifCurReadStyle->crs_layers[i]->crl_ops,
|
plane = CIFGenLayer(cifCurReadStyle->crs_layers[i]->crl_ops,
|
||||||
|
|
@ -641,6 +644,23 @@ CIFPaintCurrent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (op == NULL)
|
||||||
|
{
|
||||||
|
/* Handle boundary layer */
|
||||||
|
|
||||||
|
op = cifCurReadStyle->crs_layers[i]->crl_ops;
|
||||||
|
while (op)
|
||||||
|
{
|
||||||
|
if (op->co_opcode == CIFOP_BOUNDARY) break;
|
||||||
|
op = op->co_next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (op && (DBSrPaintArea((Tile *)NULL, plane, &TiPlaneRect,
|
||||||
|
&DBAllButSpaceBits, cifCheckPaintFunc,
|
||||||
|
(ClientData)NULL) == 1))
|
||||||
|
DBSrPaintArea((Tile *) NULL, plane, &TiPlaneRect,
|
||||||
|
&CIFSolidBits, cifMakeBoundaryFunc, (ClientData)filetype);
|
||||||
|
}
|
||||||
|
|
||||||
/* Swap planes */
|
/* Swap planes */
|
||||||
swapplane = cifCurReadPlanes[type];
|
swapplane = cifCurReadPlanes[type];
|
||||||
|
|
@ -668,9 +688,86 @@ CIFPaintCurrent()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Below is the search function invoked for each CIF tile type
|
/* Use CIF layer geometry to define a fixed bounding box for the current cell */
|
||||||
* found for the current layer.
|
|
||||||
*/
|
int
|
||||||
|
cifMakeBoundaryFunc(tile, clientdata)
|
||||||
|
Tile *tile; /* Tile of CIF information. */
|
||||||
|
ClientData clientdata; /* Pass the file type (CIF or CALMA) */
|
||||||
|
{
|
||||||
|
/* It is assumed that there is one rectangle for the boundary. */
|
||||||
|
/* If there are multiple rectangles defined with the boundary */
|
||||||
|
/* layer, then the last one defines the FIXED_BBOX property. */
|
||||||
|
|
||||||
|
Rect area;
|
||||||
|
char propertyvalue[128], *storedvalue;
|
||||||
|
int savescale;
|
||||||
|
bool filetype = (bool)clientdata;
|
||||||
|
|
||||||
|
TiToRect(tile, &area);
|
||||||
|
area.r_xtop = CIFScaleCoord(area.r_xtop, COORD_EXACT);
|
||||||
|
savescale = cifCurReadStyle->crs_scaleFactor;
|
||||||
|
area.r_ytop = CIFScaleCoord(area.r_ytop, COORD_EXACT);
|
||||||
|
if (savescale != cifCurReadStyle->crs_scaleFactor)
|
||||||
|
{
|
||||||
|
area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
savescale = cifCurReadStyle->crs_scaleFactor;
|
||||||
|
}
|
||||||
|
area.r_xbot = CIFScaleCoord(area.r_xbot, COORD_EXACT);
|
||||||
|
if (savescale != cifCurReadStyle->crs_scaleFactor)
|
||||||
|
{
|
||||||
|
area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
area.r_ytop *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
savescale = cifCurReadStyle->crs_scaleFactor;
|
||||||
|
}
|
||||||
|
area.r_ybot = CIFScaleCoord(area.r_ybot, COORD_EXACT);
|
||||||
|
if (savescale != cifCurReadStyle->crs_scaleFactor)
|
||||||
|
{
|
||||||
|
area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
area.r_ytop *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
area.r_xbot *= (savescale / cifCurReadStyle->crs_scaleFactor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cifReadCellDef->cd_flags & CDFIXEDBBOX)
|
||||||
|
{
|
||||||
|
char *propvalue;
|
||||||
|
bool found;
|
||||||
|
|
||||||
|
/* Only flag a warning if the redefined boundary was */
|
||||||
|
/* different from the original. */
|
||||||
|
|
||||||
|
propvalue = (char *)DBPropGet(cifReadCellDef, "FIXED_BBOX", &found);
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
Rect bbox;
|
||||||
|
if (sscanf(propvalue, "%d %d %d %d", &bbox.r_xbot, &bbox.r_ybot,
|
||||||
|
&bbox.r_xtop, &bbox.r_ytop) == 4)
|
||||||
|
{
|
||||||
|
if ((bbox.r_xbot != area.r_xbot) ||
|
||||||
|
(bbox.r_ybot != area.r_ybot) ||
|
||||||
|
(bbox.r_xtop != area.r_xtop) ||
|
||||||
|
(bbox.r_ytop != area.r_ytop))
|
||||||
|
{
|
||||||
|
if (filetype == FILE_CIF)
|
||||||
|
CIFReadError("Warning: Cell %s boundary was redefined.\n",
|
||||||
|
cifReadCellDef->cd_name);
|
||||||
|
else
|
||||||
|
CalmaError("Warning: Cell %s boundary was redefined.\n",
|
||||||
|
cifReadCellDef->cd_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(propertyvalue, "%d %d %d %d",
|
||||||
|
area.r_xbot, area.r_ybot, area.r_xtop, area.r_ytop);
|
||||||
|
storedvalue = StrDup((char **)NULL, propertyvalue);
|
||||||
|
DBPropPut(cifReadCellDef, "FIXED_BBOX", storedvalue);
|
||||||
|
cifReadCellDef->cd_flags |= CDFIXEDBBOX;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Paint CIF layer geometry into the current cell def as magic layer "type" */
|
||||||
|
|
||||||
int
|
int
|
||||||
cifPaintCurrentFunc(tile, type)
|
cifPaintCurrentFunc(tile, type)
|
||||||
|
|
@ -773,7 +870,7 @@ CIFParseFinish()
|
||||||
* layer info.
|
* layer info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CIFPaintCurrent();
|
CIFPaintCurrent(FILE_CIF);
|
||||||
|
|
||||||
DBAdjustLabels(cifReadCellDef, &TiPlaneRect);
|
DBAdjustLabels(cifReadCellDef, &TiPlaneRect);
|
||||||
DBReComputeBbox(cifReadCellDef);
|
DBReComputeBbox(cifReadCellDef);
|
||||||
|
|
@ -1321,8 +1418,8 @@ CIFParseUser()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
CIFReadCellCleanup(type)
|
CIFReadCellCleanup(filetype)
|
||||||
int type; // 0 = CIF, 1 = GDS, because routine is used by both
|
bool filetype;
|
||||||
{
|
{
|
||||||
HashEntry *h;
|
HashEntry *h;
|
||||||
HashSearch hs;
|
HashSearch hs;
|
||||||
|
|
@ -1332,10 +1429,10 @@ CIFReadCellCleanup(type)
|
||||||
|
|
||||||
if (cifSubcellBeingRead)
|
if (cifSubcellBeingRead)
|
||||||
{
|
{
|
||||||
if (type == 0)
|
if (filetype == FILE_CIF)
|
||||||
CIFReadError("CIF ended partway through a symbol definition.\n");
|
CIFReadError("CIF ended partway through a symbol definition.\n");
|
||||||
else
|
else
|
||||||
calmaReadError("GDS ended partway through a symbol definition.\n");
|
CalmaReadError("GDS ended partway through a symbol definition.\n");
|
||||||
(void) CIFParseFinish();
|
(void) CIFParseFinish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1348,24 +1445,24 @@ CIFReadCellCleanup(type)
|
||||||
def = (CellDef *) HashGetValue(h);
|
def = (CellDef *) HashGetValue(h);
|
||||||
if (def == NULL)
|
if (def == NULL)
|
||||||
{
|
{
|
||||||
if (type == 0)
|
if (filetype == FILE_CIF)
|
||||||
CIFReadError("cell table has NULL entry (Magic error).\n");
|
CIFReadError("cell table has NULL entry (Magic error).\n");
|
||||||
else
|
else
|
||||||
calmaReadError("cell table has NULL entry (Magic error).\n");
|
CalmaReadError("cell table has NULL entry (Magic error).\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
flags = def->cd_flags;
|
flags = def->cd_flags;
|
||||||
if (!(flags & CDAVAILABLE))
|
if (!(flags & CDAVAILABLE))
|
||||||
{
|
{
|
||||||
if (type == 0)
|
if (filetype == FILE_CIF)
|
||||||
CIFReadError("cell %s was used but not defined.\n", def->cd_name);
|
CIFReadError("cell %s was used but not defined.\n", def->cd_name);
|
||||||
else
|
else
|
||||||
calmaReadError("cell %s was used but not defined.\n", def->cd_name);
|
CalmaReadError("cell %s was used but not defined.\n", def->cd_name);
|
||||||
}
|
}
|
||||||
def->cd_flags &= ~CDPROCESSEDGDS;
|
def->cd_flags &= ~CDPROCESSEDGDS;
|
||||||
|
|
||||||
if ((type == 0 && CIFNoDRCCheck == FALSE) ||
|
if ((filetype == FILE_CIF && CIFNoDRCCheck == FALSE) ||
|
||||||
(type == 1 && CalmaNoDRCCheck == FALSE))
|
(filetype == 1 && CalmaNoDRCCheck == FALSE))
|
||||||
DRCCheckThis(def, TT_CHECKPAINT, &def->cd_bbox);
|
DRCCheckThis(def, TT_CHECKPAINT, &def->cd_bbox);
|
||||||
DBWAreaChanged(def, &def->cd_bbox, DBW_ALLWINDOWS, &DBAllButSpaceBits);
|
DBWAreaChanged(def, &def->cd_bbox, DBW_ALLWINDOWS, &DBAllButSpaceBits);
|
||||||
DBCellSetModified(def, TRUE);
|
DBCellSetModified(def, TRUE);
|
||||||
|
|
@ -1373,7 +1470,7 @@ CIFReadCellCleanup(type)
|
||||||
|
|
||||||
/* Do geometrical processing on the top-level cell. */
|
/* Do geometrical processing on the top-level cell. */
|
||||||
|
|
||||||
CIFPaintCurrent();
|
CIFPaintCurrent(FILE_CIF);
|
||||||
DBAdjustLabels(EditCellUse->cu_def, &TiPlaneRect);
|
DBAdjustLabels(EditCellUse->cu_def, &TiPlaneRect);
|
||||||
DBReComputeBbox(EditCellUse->cu_def);
|
DBReComputeBbox(EditCellUse->cu_def);
|
||||||
DBWAreaChanged(EditCellUse->cu_def, &EditCellUse->cu_def->cd_bbox,
|
DBWAreaChanged(EditCellUse->cu_def, &EditCellUse->cu_def->cd_bbox,
|
||||||
|
|
@ -1417,7 +1514,7 @@ CIFReadCellCleanup(type)
|
||||||
if (!(def->cd_flags & CDFLATTENED))
|
if (!(def->cd_flags & CDFLATTENED))
|
||||||
CIFReadError("%s read error: Unresolved geometry in cell"
|
CIFReadError("%s read error: Unresolved geometry in cell"
|
||||||
" %s maps to no magic layers\n",
|
" %s maps to no magic layers\n",
|
||||||
(type == 0) ? "CIF" : "GDS", def->cd_name);
|
(filetype == FILE_CIF) ? "CIF" : "GDS", def->cd_name);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Remove the cell if it has no parents, no children, and no geometry */
|
/* Remove the cell if it has no parents, no children, and no geometry */
|
||||||
|
|
@ -1430,11 +1527,11 @@ CIFReadCellCleanup(type)
|
||||||
if (DBCellDeleteDef(def) == FALSE)
|
if (DBCellDeleteDef(def) == FALSE)
|
||||||
{
|
{
|
||||||
CIFReadError("%s read error: Unable to delete cell %s\n",
|
CIFReadError("%s read error: Unable to delete cell %s\n",
|
||||||
(type == 0) ? "CIF" : "GDS", savename);
|
(filetype == FILE_CIF) ? "CIF" : "GDS", savename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (type == 0)
|
if (filetype == FILE_CIF)
|
||||||
TxPrintf("CIF read: Removed flattened cell %s\n", savename);
|
TxPrintf("CIF read: Removed flattened cell %s\n", savename);
|
||||||
else
|
else
|
||||||
TxPrintf("GDS read: Removed flattened cell %s\n", savename);
|
TxPrintf("GDS read: Removed flattened cell %s\n", savename);
|
||||||
|
|
|
||||||
|
|
@ -234,9 +234,10 @@ CIFParseFlash()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
CIFPropRecordPath(def, pathheadp, iswire)
|
CIFPropRecordPath(def, pathheadp, iswire, propname)
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
CIFPath *pathheadp;
|
CIFPath *pathheadp;
|
||||||
|
char *propname;
|
||||||
{
|
{
|
||||||
extern float CIFGetOutputScale();
|
extern float CIFGetOutputScale();
|
||||||
CIFPath *pathp;
|
CIFPath *pathp;
|
||||||
|
|
@ -273,7 +274,7 @@ CIFPropRecordPath(def, pathheadp, iswire)
|
||||||
|
|
||||||
/* Reallocate pathstr to be no larger than needed to hold the path contents */
|
/* Reallocate pathstr to be no larger than needed to hold the path contents */
|
||||||
StrDup(&pathstr, pathstr);
|
StrDup(&pathstr, pathstr);
|
||||||
DBPropPut(def, "path", (ClientData)pathstr);
|
DBPropPut(def, propname, (ClientData)pathstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,6 @@ CIFOp *cifCurReadOp; /* Last geometric operation seen. */
|
||||||
void cifReadStyleInit();
|
void cifReadStyleInit();
|
||||||
void CIFReadLoadStyle();
|
void CIFReadLoadStyle();
|
||||||
|
|
||||||
/* Label types used by the "labels" statement option */
|
|
||||||
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT } labelType;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
|
|
@ -858,6 +855,8 @@ CIFReadTechLine(sectionName, argc, argv)
|
||||||
calmaLabelType = LABEL_TYPE_TEXT;
|
calmaLabelType = LABEL_TYPE_TEXT;
|
||||||
else if (!strcmp(argv[2], "port"))
|
else if (!strcmp(argv[2], "port"))
|
||||||
calmaLabelType = LABEL_TYPE_PORT;
|
calmaLabelType = LABEL_TYPE_PORT;
|
||||||
|
else if (!strncmp(argv[2], "cell", 4))
|
||||||
|
calmaLabelType = LABEL_TYPE_CELLID;
|
||||||
else
|
else
|
||||||
goto wrongNumArgs;
|
goto wrongNumArgs;
|
||||||
}
|
}
|
||||||
|
|
@ -952,6 +951,8 @@ CIFReadTechLine(sectionName, argc, argv)
|
||||||
newOp->co_opcode = CIFOP_SHRINK;
|
newOp->co_opcode = CIFOP_SHRINK;
|
||||||
else if (strcmp(argv[0], "copyup") == 0)
|
else if (strcmp(argv[0], "copyup") == 0)
|
||||||
newOp->co_opcode = CIFOP_COPYUP;
|
newOp->co_opcode = CIFOP_COPYUP;
|
||||||
|
else if (strcmp(argv[0], "boundary") == 0)
|
||||||
|
newOp->co_opcode = CIFOP_BOUNDARY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||||
|
|
@ -967,7 +968,6 @@ CIFReadTechLine(sectionName, argc, argv)
|
||||||
if (argc != 2) goto wrongNumArgs;
|
if (argc != 2) goto wrongNumArgs;
|
||||||
CIFParseReadLayers(argv[1], &newOp->co_cifMask);
|
CIFParseReadLayers(argv[1], &newOp->co_cifMask);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CIFOP_GROW:
|
case CIFOP_GROW:
|
||||||
case CIFOP_GROW_G:
|
case CIFOP_GROW_G:
|
||||||
case CIFOP_SHRINK:
|
case CIFOP_SHRINK:
|
||||||
|
|
|
||||||
|
|
@ -1660,6 +1660,6 @@ CIFReadFile(file)
|
||||||
CIFReadError("no \"End\" statement.\n");
|
CIFReadError("no \"End\" statement.\n");
|
||||||
|
|
||||||
done:
|
done:
|
||||||
CIFReadCellCleanup(0);
|
CIFReadCellCleanup(FILE_CIF);
|
||||||
UndoEnable();
|
UndoEnable();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,8 @@ typedef struct
|
||||||
* the "crl_magicType" should be interpreted as a CIF layer.
|
* the "crl_magicType" should be interpreted as a CIF layer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CIFR_SIMPLE 1
|
#define CIFR_SIMPLE 1
|
||||||
#define CIFR_TEMPLAYER 2
|
#define CIFR_TEMPLAYER 2
|
||||||
|
|
||||||
/* The following structure defines a complete CIF read-in style.
|
/* The following structure defines a complete CIF read-in style.
|
||||||
* The constant MAXCIFRLAYERS must be less than TT_MAXTYPES, and
|
* The constant MAXCIFRLAYERS must be less than TT_MAXTYPES, and
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,7 @@ cifTechFreeStyle()
|
||||||
case CIFOP_OR:
|
case CIFOP_OR:
|
||||||
case CIFOP_BBOX:
|
case CIFOP_BBOX:
|
||||||
case CIFOP_MAXRECT:
|
case CIFOP_MAXRECT:
|
||||||
|
case CIFOP_BOUNDARY:
|
||||||
/* These options use co_client to hold a single */
|
/* These options use co_client to hold a single */
|
||||||
/* integer value, so it is not allocated. */
|
/* integer value, so it is not allocated. */
|
||||||
break;
|
break;
|
||||||
|
|
@ -802,8 +803,7 @@ CIFTechLine(sectionName, argc, argv)
|
||||||
if (CIFCurStyle->cs_status != TECH_PENDING) return TRUE;
|
if (CIFCurStyle->cs_status != TECH_PENDING) return TRUE;
|
||||||
|
|
||||||
newLayer = NULL;
|
newLayer = NULL;
|
||||||
if ((strcmp(argv[0], "templayer") == 0)
|
if ((strcmp(argv[0], "templayer") == 0) || (strcmp(argv[0], "layer") == 0))
|
||||||
|| (strcmp(argv[0], "layer") == 0))
|
|
||||||
{
|
{
|
||||||
if (CIFCurStyle->cs_nLayers == MAXCIFLAYERS)
|
if (CIFCurStyle->cs_nLayers == MAXCIFLAYERS)
|
||||||
{
|
{
|
||||||
|
|
@ -1047,6 +1047,8 @@ CIFTechLine(sectionName, argc, argv)
|
||||||
newOp->co_opcode = CIFOP_NET;
|
newOp->co_opcode = CIFOP_NET;
|
||||||
else if (strcmp(argv[0], "maxrect") == 0)
|
else if (strcmp(argv[0], "maxrect") == 0)
|
||||||
newOp->co_opcode = CIFOP_MAXRECT;
|
newOp->co_opcode = CIFOP_MAXRECT;
|
||||||
|
else if (strcmp(argv[0], "boundary") == 0)
|
||||||
|
newOp->co_opcode = CIFOP_BOUNDARY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||||
|
|
@ -1196,6 +1198,12 @@ bloatCheck:
|
||||||
goto wrongNumArgs;
|
goto wrongNumArgs;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CIFOP_BOUNDARY:
|
||||||
|
/* CIFOP_BOUNDARY has no arguments */
|
||||||
|
if (argc != 1)
|
||||||
|
goto wrongNumArgs;
|
||||||
|
break;
|
||||||
|
|
||||||
case CIFOP_SQUARES_G:
|
case CIFOP_SQUARES_G:
|
||||||
case CIFOP_SQUARES:
|
case CIFOP_SQUARES:
|
||||||
|
|
||||||
|
|
@ -1752,6 +1760,7 @@ CIFTechFinal()
|
||||||
{
|
{
|
||||||
case CIFOP_OR:
|
case CIFOP_OR:
|
||||||
case CIFOP_BBOX:
|
case CIFOP_BBOX:
|
||||||
|
case CIFOP_BOUNDARY:
|
||||||
case CIFOP_MAXRECT:
|
case CIFOP_MAXRECT:
|
||||||
case CIFOP_NET:
|
case CIFOP_NET:
|
||||||
break;
|
break;
|
||||||
|
|
@ -1846,6 +1855,24 @@ CIFTechFinal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Added by Tim, 5/16/19 */
|
||||||
|
/* Layers that depend on hierarchically generated layers */
|
||||||
|
/* (i.e., templayers) must themselves be hierarchically */
|
||||||
|
/* processed. */
|
||||||
|
|
||||||
|
for (i = 0; i < style->cs_nLayers; i++)
|
||||||
|
{
|
||||||
|
TileTypeBitMask ourDepend, mmask;
|
||||||
|
|
||||||
|
ourDepend = DBZeroTypeBits;
|
||||||
|
for (op = style->cs_layers[i]->cl_ops; op != NULL; op = op->co_next)
|
||||||
|
TTMaskSetMask(&ourDepend, &op->co_cifMask);
|
||||||
|
|
||||||
|
TTMaskAndMask3(&mmask, &ourDepend, &style->cs_hierLayers);
|
||||||
|
if (!TTMaskIsZero(&mmask))
|
||||||
|
TTMaskSetType(&style->cs_hierLayers, i);
|
||||||
|
}
|
||||||
|
|
||||||
/* Added by Tim, 10/18/04 */
|
/* Added by Tim, 10/18/04 */
|
||||||
|
|
||||||
/* Go through the layer operators looking for those that */
|
/* Go through the layer operators looking for those that */
|
||||||
|
|
@ -2214,6 +2241,7 @@ CIFTechOutputScale(n, d)
|
||||||
{
|
{
|
||||||
case CIFOP_OR:
|
case CIFOP_OR:
|
||||||
case CIFOP_BBOX:
|
case CIFOP_BBOX:
|
||||||
|
case CIFOP_BOUNDARY:
|
||||||
case CIFOP_MAXRECT:
|
case CIFOP_MAXRECT:
|
||||||
case CIFOP_NET:
|
case CIFOP_NET:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
72
cif/Depend
72
cif/Depend
|
|
@ -1,44 +1,68 @@
|
||||||
CIFgen.o: CIFgen.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
CIFgen.o: CIFgen.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../cif/CIFint.h ../calma/calma.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../commands/commands.h ../windows/windows.h ../select/selInt.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/stack.h ../utils/malloc.h ../utils/maxrect.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../cif/CIFint.h ../calma/calma.h ../commands/commands.h \
|
||||||
|
../windows/windows.h ../select/selInt.h ../utils/stack.h \
|
||||||
|
../utils/malloc.h ../utils/maxrect.h
|
||||||
CIFhier.o: CIFhier.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
CIFhier.o: CIFhier.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../cif/CIFint.h ../cif/cif.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../drc/drc.h ../textio/textio.h ../utils/undo.h ../utils/malloc.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/signals.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../cif/CIFint.h ../cif/cif.h ../drc/drc.h ../textio/textio.h \
|
||||||
|
../utils/undo.h ../utils/malloc.h ../utils/signals.h
|
||||||
CIFmain.o: CIFmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
CIFmain.o: CIFmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../cif/CIFint.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../cif/CIFint.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h
|
||||||
CIFrdcl.o: CIFrdcl.c ../utils/magic.h ../utils/malloc.h \
|
CIFrdcl.o: CIFrdcl.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
||||||
../database/database.h ../cif/CIFint.h ../cif/CIFread.h ../utils/utils.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../drc/drc.h
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../cif/CIFint.h ../cif/CIFread.h ../cif/cif.h \
|
||||||
|
../calma/calma.h ../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
|
../drc/drc.h
|
||||||
CIFrdpt.o: CIFrdpt.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
CIFrdpt.o: CIFrdpt.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../utils/malloc.h ../database/database.h \
|
../utils/hash.h ../utils/malloc.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../cif/CIFint.h ../cif/CIFread.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
|
../cif/CIFint.h ../cif/CIFread.h
|
||||||
CIFrdpoly.o: CIFrdpoly.c ../utils/magic.h ../utils/geometry.h \
|
CIFrdpoly.o: CIFrdpoly.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../cif/CIFint.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../cif/CIFread.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../cif/CIFint.h ../cif/CIFread.h ../utils/malloc.h
|
||||||
CIFrdtech.o: CIFrdtech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
CIFrdtech.o: CIFrdtech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/utils.h ../cif/CIFint.h ../cif/CIFread.h ../calma/calmaInt.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/malloc.h
|
../bplane/bplaneInt.h ../utils/tech.h ../textio/textio.h ../cif/CIFint.h \
|
||||||
|
../cif/CIFread.h ../calma/calmaInt.h ../utils/malloc.h
|
||||||
CIFrdutils.o: CIFrdutils.c ../utils/magic.h ../utils/geometry.h \
|
CIFrdutils.o: CIFrdutils.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../cif/CIFint.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../cif/CIFread.h ../cif/cif.h ../textio/textio.h ../utils/signals.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/undo.h ../utils/malloc.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../cif/CIFint.h ../cif/CIFread.h ../cif/cif.h \
|
||||||
|
../textio/textio.h ../utils/signals.h ../utils/undo.h ../utils/malloc.h
|
||||||
CIFsee.o: CIFsee.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
CIFsee.o: CIFsee.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/styles.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../cif/CIFint.h ../textio/textio.h ../utils/undo.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||||
|
../utils/styles.h ../cif/CIFint.h ../textio/textio.h ../utils/undo.h
|
||||||
CIFtech.o: CIFtech.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
CIFtech.o: CIFtech.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/tech.h ../utils/utils.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/styles.h ../cif/CIFint.h ../calma/calmaInt.h ../textio/textio.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/malloc.h ../cif/cif.h ../drc/drc.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/tech.h ../utils/styles.h ../cif/CIFint.h ../calma/calmaInt.h \
|
||||||
|
../textio/textio.h ../utils/malloc.h ../cif/cif.h ../drc/drc.h
|
||||||
CIFwrite.o: CIFwrite.c ../utils/magic.h ../utils/geometry.h \
|
CIFwrite.o: CIFwrite.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/tech.h ../utils/stack.h \
|
../database/databaseInt.h ../utils/tech.h ../utils/stack.h \
|
||||||
../utils/undo.h ../cif/cif.h ../cif/CIFint.h ../utils/signals.h \
|
../utils/undo.h ../cif/cif.h ../cif/CIFint.h ../utils/signals.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@
|
||||||
* depends on the size of the layout.
|
* depends on the size of the layout.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Passed to CIFPaintCurrent() for print statement formatting */
|
||||||
|
#define FILE_CIF 0
|
||||||
|
#define FILE_CALMA 1
|
||||||
|
|
||||||
/* Exported global variables (commands/CmdCD.c) */
|
/* Exported global variables (commands/CmdCD.c) */
|
||||||
|
|
||||||
extern int CIFWarningLevel;
|
extern int CIFWarningLevel;
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,19 @@
|
||||||
CMWmain.o: CMWmain.c ../utils/magic.h ../utils/geometry.h \
|
CMWmain.o: CMWmain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../database/database.h ../tiles/tile.h \
|
../windows/windows.h ../database/database.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../utils/main.h ../commands/commands.h \
|
../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/main.h ../commands/commands.h \
|
||||||
../cmwind/cmwind.h ../textio/txcommands.h ../graphics/graphicsInt.h \
|
../cmwind/cmwind.h ../textio/txcommands.h ../graphics/graphicsInt.h \
|
||||||
../graphics/graphics.h ../textio/textio.h ../utils/utils.h \
|
../graphics/graphics.h ../textio/textio.h ../utils/styles.h \
|
||||||
../utils/styles.h ../graphics/glyphs.h ../utils/malloc.h
|
../graphics/glyphs.h ../utils/malloc.h
|
||||||
CMWcmmnds.o: CMWcmmnds.c ../tcltk/tclmagic.h ../utils/magic.h \
|
CMWcmmnds.o: CMWcmmnds.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../dbwind/dbwind.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
../commands/commands.h ../cmwind/cmwind.h ../textio/txcommands.h \
|
../commands/commands.h ../cmwind/cmwind.h ../textio/txcommands.h \
|
||||||
../graphics/graphics.h ../textio/textio.h ../utils/utils.h \
|
../graphics/graphics.h ../textio/textio.h ../utils/styles.h \
|
||||||
../utils/styles.h ../utils/undo.h
|
../utils/undo.h
|
||||||
CMWundo.o: CMWundo.c ../utils/magic.h ../utils/geometry.h \
|
CMWundo.o: CMWundo.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../cmwind/cmwind.h \
|
../graphics/graphics.h ../windows/windows.h ../cmwind/cmwind.h \
|
||||||
../textio/txcommands.h ../utils/undo.h
|
../textio/txcommands.h ../utils/undo.h
|
||||||
|
|
|
||||||
|
|
@ -3802,7 +3802,7 @@ cmdDumpParseArgs(cmdName, w, cmd, dummy, scx)
|
||||||
char *propvalue;
|
char *propvalue;
|
||||||
bool found;
|
bool found;
|
||||||
|
|
||||||
propvalue = DBPropGet(def, "FIXED_BBOX", &found);
|
propvalue = (char *)DBPropGet(def, "FIXED_BBOX", &found);
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
if (sscanf(propvalue, "%d %d %d %d", &bbox.r_xbot, &bbox.r_ybot,
|
if (sscanf(propvalue, "%d %d %d %d", &bbox.r_xbot, &bbox.r_ybot,
|
||||||
|
|
|
||||||
108
commands/CmdLQ.c
108
commands/CmdLQ.c
|
|
@ -1004,6 +1004,54 @@ CmdPolygon(w, cmd)
|
||||||
freeMagic(plist);
|
freeMagic(plist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* cmdPortLabelFunc() --- */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int
|
||||||
|
cmdPortLabelFunc1(scx, label, tpath, cdata)
|
||||||
|
SearchContext *scx;
|
||||||
|
Label *label;
|
||||||
|
TerminalPath *tpath;
|
||||||
|
ClientData cdata;
|
||||||
|
{
|
||||||
|
Label **rlab = (Label **)cdata;
|
||||||
|
|
||||||
|
if (GEO_SURROUND(&scx->scx_area, &label->lab_rect))
|
||||||
|
{
|
||||||
|
if (*rlab != NULL)
|
||||||
|
{
|
||||||
|
// More than one label in the area; ambiguous.
|
||||||
|
*rlab = NULL;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
*rlab = label;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
cmdPortLabelFunc2(scx, label, tpath, cdata)
|
||||||
|
SearchContext *scx;
|
||||||
|
Label *label;
|
||||||
|
TerminalPath *tpath;
|
||||||
|
ClientData cdata;
|
||||||
|
{
|
||||||
|
Label **rlab = (Label **)cdata;
|
||||||
|
|
||||||
|
if (GEO_OVERLAP(&scx->scx_area, &label->lab_rect))
|
||||||
|
{
|
||||||
|
if (*rlab != NULL)
|
||||||
|
{
|
||||||
|
// More than one label in the area; ambiguous.
|
||||||
|
*rlab = NULL;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
*rlab = label;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
/* portFindLabel --- */
|
/* portFindLabel --- */
|
||||||
/* */
|
/* */
|
||||||
|
|
@ -1015,12 +1063,13 @@ CmdPolygon(w, cmd)
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
Label *
|
Label *
|
||||||
portFindLabel(editDef, port, unique)
|
portFindLabel(editDef, port, unique, nonEdit)
|
||||||
CellDef *editDef;
|
CellDef *editDef;
|
||||||
bool unique;
|
bool unique;
|
||||||
bool port;
|
bool port;
|
||||||
|
bool *nonEdit; // TRUE if label is not in the edit cell
|
||||||
{
|
{
|
||||||
bool found;
|
int found;
|
||||||
Label *lab, *sl;
|
Label *lab, *sl;
|
||||||
Rect editBox;
|
Rect editBox;
|
||||||
|
|
||||||
|
|
@ -1029,33 +1078,62 @@ portFindLabel(editDef, port, unique)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ToolGetEditBox(&editBox);
|
ToolGetEditBox(&editBox);
|
||||||
found = FALSE;
|
found = 0;
|
||||||
|
if (nonEdit) *nonEdit = FALSE;
|
||||||
lab = NULL;
|
lab = NULL;
|
||||||
for (sl = editDef->cd_labels; sl != NULL; sl = sl->lab_next)
|
for (sl = editDef->cd_labels; sl != NULL; sl = sl->lab_next)
|
||||||
{
|
{
|
||||||
if (GEO_OVERLAP(&editBox, &sl->lab_rect))
|
if (GEO_OVERLAP(&editBox, &sl->lab_rect))
|
||||||
{
|
{
|
||||||
if (found == TRUE)
|
if (found > 0)
|
||||||
{
|
{
|
||||||
/* Let's do this again with the GEO_SURROUND function */
|
/* Let's do this again with the GEO_SURROUND function */
|
||||||
/* and see if we come up with only one label. */
|
/* and see if we come up with only one label. */
|
||||||
|
|
||||||
found = FALSE;
|
found = 0;
|
||||||
for (sl = editDef->cd_labels; sl != NULL; sl = sl->lab_next)
|
for (sl = editDef->cd_labels; sl != NULL; sl = sl->lab_next)
|
||||||
{
|
{
|
||||||
if (GEO_SURROUND(&editBox, &sl->lab_rect))
|
if (GEO_SURROUND(&editBox, &sl->lab_rect))
|
||||||
{
|
{
|
||||||
if (found == TRUE && unique == TRUE) return NULL;
|
if (found > 0 && unique == TRUE) return NULL;
|
||||||
lab = sl;
|
lab = sl;
|
||||||
found = TRUE;
|
found++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
lab = sl;
|
lab = sl;
|
||||||
found = TRUE;
|
found++;
|
||||||
|
if (nonEdit) *nonEdit = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If no label was found, then search the hierarchy under the box. */
|
||||||
|
/* The calling routine may determine whether a label that is not in */
|
||||||
|
/* the edit cell may be valid for the command (e.g., if querying */
|
||||||
|
/* but not changing values). */
|
||||||
|
|
||||||
|
if (found == 0)
|
||||||
|
{
|
||||||
|
SearchContext scx;
|
||||||
|
scx.scx_area = editBox;
|
||||||
|
scx.scx_use = EditCellUse;
|
||||||
|
scx.scx_trans = GeoIdentityTransform;
|
||||||
|
|
||||||
|
/* First check for exactly one label surrounded by the cursor box. */
|
||||||
|
/* If that fails, check for exactly one label overlapping the */
|
||||||
|
/* cursor box. */
|
||||||
|
|
||||||
|
DBTreeSrLabels(&scx, &DBAllButSpaceBits, 0, NULL, TF_LABEL_ATTACH,
|
||||||
|
cmdPortLabelFunc1, (ClientData) &lab);
|
||||||
|
if (lab == NULL)
|
||||||
|
DBTreeSrLabels(&scx, &DBAllButSpaceBits, 0, NULL, TF_LABEL_ATTACH,
|
||||||
|
cmdPortLabelFunc2, (ClientData) &lab);
|
||||||
|
|
||||||
|
if (lab != NULL)
|
||||||
|
if (nonEdit) *nonEdit = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
return lab;
|
return lab;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -1121,6 +1199,7 @@ CmdPort(w, cmd)
|
||||||
int i, idx, pos, type, option, argc;
|
int i, idx, pos, type, option, argc;
|
||||||
unsigned short dirmask;
|
unsigned short dirmask;
|
||||||
bool found;
|
bool found;
|
||||||
|
bool nonEdit = FALSE;
|
||||||
Label *lab, *sl;
|
Label *lab, *sl;
|
||||||
Rect editBox, tmpArea;
|
Rect editBox, tmpArea;
|
||||||
CellDef *editDef = EditCellUse->cu_def;
|
CellDef *editDef = EditCellUse->cu_def;
|
||||||
|
|
@ -1254,7 +1333,7 @@ CmdPort(w, cmd)
|
||||||
if (option != PORT_LAST)
|
if (option != PORT_LAST)
|
||||||
{
|
{
|
||||||
if (lab == NULL)
|
if (lab == NULL)
|
||||||
lab = portFindLabel(editDef, TRUE, TRUE);
|
lab = portFindLabel(editDef, TRUE, TRUE, &nonEdit);
|
||||||
|
|
||||||
if (option == PORT_EXISTS)
|
if (option == PORT_EXISTS)
|
||||||
{
|
{
|
||||||
|
|
@ -1297,6 +1376,17 @@ CmdPort(w, cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check for options that cannot operate on a non-edit cell label */
|
||||||
|
if (nonEdit)
|
||||||
|
{
|
||||||
|
if ((option == PORT_MAKE) || (option == PORT_MAKEALL) ||
|
||||||
|
(option == PORT_REMOVE) || (argc == 3))
|
||||||
|
{
|
||||||
|
TxError("Cannot modify a port in an non-edit cell.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle all command options */
|
/* Handle all command options */
|
||||||
switch (option)
|
switch (option)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1349,7 +1349,8 @@ Okay:
|
||||||
* click" code.
|
* click" code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((cmd->tx_argc == 3) && (optionArgs == &cmd->tx_argv[2]))
|
if ((cmd->tx_argc == 3) && (optionArgs == &cmd->tx_argv[2]) &&
|
||||||
|
(more == FALSE) && (less == FALSE))
|
||||||
{
|
{
|
||||||
use = lastUse = scx.scx_use;
|
use = lastUse = scx.scx_use;
|
||||||
p.p_x = scx.scx_use->cu_xlo;
|
p.p_x = scx.scx_use->cu_xlo;
|
||||||
|
|
|
||||||
|
|
@ -1348,7 +1348,7 @@ CmdWire(w, cmd)
|
||||||
case DECREMENT:
|
case DECREMENT:
|
||||||
if (cmd->tx_argc != 3 && cmd->tx_argc != 4)
|
if (cmd->tx_argc != 3 && cmd->tx_argc != 4)
|
||||||
goto badargs;
|
goto badargs;
|
||||||
if (!strcmp(cmd->tx_argv[2], "type"))
|
if (!strcmp(cmd->tx_argv[2], "type") || !strcmp(cmd->tx_argv[2], "layer"))
|
||||||
{
|
{
|
||||||
Contact *contact;
|
Contact *contact;
|
||||||
type = TT_SPACE;
|
type = TT_SPACE;
|
||||||
|
|
@ -1371,7 +1371,7 @@ CmdWire(w, cmd)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
width = DRCGetDefaultLayerWidth(type);
|
width = DRCGetDefaultLayerWidth(type);
|
||||||
WireAddContact(type, width);
|
WireAddContact(type, (WireWidth < width) ? width : WireWidth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(cmd->tx_argv[2], "width"))
|
else if (!strcmp(cmd->tx_argv[2], "width"))
|
||||||
|
|
@ -1411,7 +1411,7 @@ CmdWire(w, cmd)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
width = DRCGetDefaultLayerWidth(type);
|
width = DRCGetDefaultLayerWidth(type);
|
||||||
WireAddContact(type, width);
|
WireAddContact(type, (WireWidth < width) ? width : WireWidth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(cmd->tx_argv[2], "width"))
|
else if (!strcmp(cmd->tx_argv[2], "width"))
|
||||||
|
|
@ -1736,17 +1736,20 @@ CmdWriteall(w, cmd)
|
||||||
int cmdWriteallFunc();
|
int cmdWriteallFunc();
|
||||||
static char *force[] = { "force", 0 };
|
static char *force[] = { "force", 0 };
|
||||||
int argc;
|
int argc;
|
||||||
|
int flags = CDMODIFIED | CDBOXESCHANGED | CDSTAMPSCHANGED;
|
||||||
|
|
||||||
if ((cmd->tx_argc >= 2) && (Lookup(cmd->tx_argv[1], force) < 0))
|
if (cmd->tx_argc >= 2)
|
||||||
{
|
{
|
||||||
TxError("Usage: %s [force [cellname ...]]\n", cmd->tx_argv[0]);
|
flags = 0;
|
||||||
return;
|
if (Lookup(cmd->tx_argv[1], force) < 0)
|
||||||
|
{
|
||||||
|
TxError("Usage: %s [force [cellname ...]]\n", cmd->tx_argv[0]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUpdateStamps();
|
DBUpdateStamps();
|
||||||
argc = cmd->tx_argc;
|
argc = cmd->tx_argc;
|
||||||
(void) DBCellSrDefs(CDMODIFIED|CDBOXESCHANGED|CDSTAMPSCHANGED,
|
(void) DBCellSrDefs(flags, cmdWriteallFunc, (ClientData)cmd);
|
||||||
cmdWriteallFunc, (ClientData)cmd);
|
|
||||||
cmd->tx_argc = argc;
|
cmd->tx_argc = argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,62 +1,81 @@
|
||||||
CmdSubrs.o: CmdSubrs.c ../utils/magic.h ../utils/geometry.h \
|
CmdSubrs.o: CmdSubrs.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../database/database.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
../commands/commands.h ../textio/textio.h ../cif/cif.h ../drc/drc.h \
|
../commands/commands.h ../textio/textio.h ../cif/cif.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/undo.h ../utils/macros.h ../sim/sim.h \
|
../textio/txcommands.h ../utils/undo.h ../utils/macros.h ../sim/sim.h \
|
||||||
../select/select.h
|
../select/select.h
|
||||||
CmdAB.o: CmdAB.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
CmdAB.o: CmdAB.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../commands/commands.h ../utils/utils.h ../textio/textio.h ../drc/drc.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../textio/textio.h ../drc/drc.h \
|
||||||
../cif/cif.h ../graphics/graphics.h ../textio/txcommands.h \
|
../cif/cif.h ../graphics/graphics.h ../textio/txcommands.h \
|
||||||
../utils/malloc.h ../utils/netlist.h ../select/select.h
|
../utils/malloc.h ../utils/netlist.h ../select/select.h
|
||||||
CmdCD.o: CmdCD.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
CmdCD.o: CmdCD.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../commands/commands.h ../utils/utils.h ../textio/textio.h ../drc/drc.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../textio/textio.h ../drc/drc.h \
|
||||||
../graphics/graphics.h ../textio/txcommands.h ../cif/cif.h \
|
../graphics/graphics.h ../textio/txcommands.h ../cif/cif.h \
|
||||||
../calma/calma.h ../utils/styles.h ../router/rtrDcmpose.h \
|
../calma/calma.h ../utils/styles.h ../router/rtrDcmpose.h \
|
||||||
../select/select.h ../utils/signals.h ../utils/malloc.h ../cif/CIFint.h \
|
../select/select.h ../utils/signals.h ../utils/malloc.h ../cif/CIFint.h \
|
||||||
../cif/CIFread.h
|
../cif/CIFread.h
|
||||||
CmdE.o: CmdE.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/styles.h \
|
CmdE.o: CmdE.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/styles.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
../dbwind/dbwind.h ../utils/main.h ../commands/commands.h \
|
../dbwind/dbwind.h ../utils/main.h ../commands/commands.h \
|
||||||
../textio/textio.h ../utils/macros.h ../drc/drc.h ../textio/txcommands.h \
|
../textio/textio.h ../utils/macros.h ../drc/drc.h ../textio/txcommands.h \
|
||||||
../extract/extract.h ../select/select.h
|
../extract/extract.h ../select/select.h
|
||||||
CmdFI.o: CmdFI.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
CmdFI.o: CmdFI.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../utils/undo.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../utils/undo.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
||||||
../utils/macros.h ../drc/drc.h ../textio/txcommands.h ../utils/styles.h \
|
../utils/macros.h ../drc/drc.h ../textio/txcommands.h ../utils/styles.h \
|
||||||
../graphics/graphics.h ../extract/extract.h ../utils/malloc.h \
|
../graphics/graphics.h ../extract/extract.h ../utils/malloc.h \
|
||||||
../select/select.h ../sim/sim.h ../gcr/gcr.h
|
../select/select.h ../sim/sim.h ../gcr/gcr.h
|
||||||
CmdLQ.o: CmdLQ.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
CmdLQ.o: CmdLQ.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/fonts.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/fonts.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/main.h ../commands/commands.h \
|
../dbwind/dbwind.h ../utils/main.h ../commands/commands.h \
|
||||||
../textio/textio.h ../graphics/graphics.h ../drc/drc.h \
|
../textio/textio.h ../graphics/graphics.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/undo.h ../select/select.h \
|
../textio/txcommands.h ../utils/undo.h ../select/select.h \
|
||||||
../netmenu/netmenu.h
|
../netmenu/netmenu.h
|
||||||
CmdRS.o: CmdRS.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/stack.h \
|
CmdRS.o: CmdRS.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/stack.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/fonts.h ../windows/windows.h \
|
../utils/styles.h ../database/database.h ../bplane/bplane.h \
|
||||||
../dbwind/dbwind.h ../utils/main.h ../commands/commands.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../textio/textio.h ../graphics/graphics.h ../utils/tech.h ../drc/drc.h \
|
../utils/geofast.h ../bplane/bplaneInt.h ../database/fonts.h \
|
||||||
../textio/txcommands.h ../utils/malloc.h ../utils/netlist.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
../netmenu/netmenu.h ../select/select.h ../utils/signals.h ../sim/sim.h
|
../commands/commands.h ../textio/textio.h ../graphics/graphics.h \
|
||||||
|
../utils/tech.h ../drc/drc.h ../textio/txcommands.h ../utils/malloc.h \
|
||||||
|
../utils/netlist.h ../netmenu/netmenu.h ../select/select.h \
|
||||||
|
../utils/signals.h ../sim/sim.h
|
||||||
CmdTZ.o: CmdTZ.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
CmdTZ.o: CmdTZ.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
||||||
../textio/txcommands.h ../utils/signals.h ../utils/undo.h \
|
../textio/txcommands.h ../utils/signals.h ../utils/undo.h \
|
||||||
../select/select.h ../utils/styles.h ../wiring/wiring.h \
|
../select/select.h ../utils/styles.h ../wiring/wiring.h \
|
||||||
../utils/netlist.h ../netmenu/netmenu.h ../utils/tech.h ../drc/drc.h
|
../utils/netlist.h ../netmenu/netmenu.h ../utils/tech.h ../drc/drc.h
|
||||||
CmdWizard.o: CmdWizard.c ../utils/magic.h ../utils/geometry.h \
|
CmdWizard.o: CmdWizard.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/malloc.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/malloc.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../commands/commands.h ../utils/runstats.h ../textio/textio.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../graphics/graphics.h ../utils/signals.h ../utils/utils.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../utils/runstats.h \
|
||||||
|
../textio/textio.h ../graphics/graphics.h ../utils/signals.h \
|
||||||
../textio/txcommands.h
|
../textio/txcommands.h
|
||||||
CmdAuto.o: CmdAuto.c ../tcltk/tclmagic.h ../utils/magic.h \
|
CmdAuto.o: CmdAuto.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../textio/txcommands.h
|
../utils/geometry.h ../windows/windows.h ../textio/txcommands.h
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,4 @@
|
||||||
# script itself. It also sets up CFLAGS without the default optimizer
|
# script itself. It also sets up CFLAGS without the default optimizer
|
||||||
# flag (-O2).
|
# flag (-O2).
|
||||||
|
|
||||||
( CFLAGS="-g"; export CFLAGS; cd scripts ; ./configure $* )
|
( CFLAGS="-g"; export CFLAGS; cd scripts ; ./configure "$@" )
|
||||||
|
|
|
||||||
|
|
@ -1767,8 +1767,8 @@ donecell:
|
||||||
DBScalePoint(&cellDef->cd_extended.r_ll, scalen, scaled);
|
DBScalePoint(&cellDef->cd_extended.r_ll, scalen, scaled);
|
||||||
DBScalePoint(&cellDef->cd_extended.r_ur, scalen, scaled);
|
DBScalePoint(&cellDef->cd_extended.r_ur, scalen, scaled);
|
||||||
|
|
||||||
/* If the cell is an abstract view with a fixed bounding box, then */
|
/* If the cell is an abstract view with a fixed bounding box, then */
|
||||||
/* adjust the bounding box property to match the new scale. */
|
/* adjust the bounding box property to match the new scale. */
|
||||||
|
|
||||||
if ((cellDef->cd_flags & CDFIXEDBBOX) != 0)
|
if ((cellDef->cd_flags & CDFIXEDBBOX) != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1791,9 +1791,7 @@ donecell:
|
||||||
DBPropPut(cellDef, "FIXED_BBOX", propval);
|
DBPropPut(cellDef, "FIXED_BBOX", propval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,8 @@ dbCopyDefFunc(use, def)
|
||||||
* DBCellClearDef --
|
* DBCellClearDef --
|
||||||
*
|
*
|
||||||
* Empties out all tile planes of the indicated CellDef, making it
|
* Empties out all tile planes of the indicated CellDef, making it
|
||||||
* as though the def had been newly allocated.
|
* as though the def had been newly allocated. This also removes all
|
||||||
|
* labels and all properties from the cell.
|
||||||
*
|
*
|
||||||
* Results:
|
* Results:
|
||||||
* None.
|
* None.
|
||||||
|
|
@ -205,6 +206,10 @@ DBCellClearDef(cellDef)
|
||||||
freeMagic((char *) lab);
|
freeMagic((char *) lab);
|
||||||
cellDef->cd_labels = (Label *) NULL;
|
cellDef->cd_labels = (Label *) NULL;
|
||||||
cellDef->cd_lastLabel = (Label *) NULL;
|
cellDef->cd_lastLabel = (Label *) NULL;
|
||||||
|
|
||||||
|
/* Remove all defined properties */
|
||||||
|
DBPropClearAll(cellDef);
|
||||||
|
|
||||||
SigEnableInterrupts();
|
SigEnableInterrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -700,15 +700,14 @@ dbcConnectLabelFunc(scx, lab, tpath, csa2)
|
||||||
/* Check for equivalent ports. For any found, call */
|
/* Check for equivalent ports. For any found, call */
|
||||||
/* DBTreeSrTiles recursively on the type and area */
|
/* DBTreeSrTiles recursively on the type and area */
|
||||||
/* of the label. */
|
/* of the label. */
|
||||||
/* Don't recurse, just add area to the csa2_list. */
|
|
||||||
/* To avoid infinite recursion, only look at labels */
|
|
||||||
/* forward of the currently searched label, and only */
|
|
||||||
/* add the next one to the list. If there are more */
|
|
||||||
/* equivalent ports, they will be found when processing */
|
|
||||||
/* this label's area. */
|
|
||||||
|
|
||||||
for (slab = lab->lab_next; slab != NULL; slab = slab->lab_next)
|
/* Don't recurse, just add area to the csa2_list. */
|
||||||
if (slab->lab_flags & PORT_DIR_MASK)
|
/* Only add the next label found to the list. If there */
|
||||||
|
/* are more equivalent ports, they will be found when */
|
||||||
|
/* processing this label's area. */
|
||||||
|
|
||||||
|
for (slab = orig_def->cd_labels; slab != NULL; slab = slab->lab_next)
|
||||||
|
if ((slab->lab_flags & PORT_DIR_MASK) && (slab != lab))
|
||||||
if ((slab->lab_flags & PORT_NUM_MASK) == lidx)
|
if ((slab->lab_flags & PORT_NUM_MASK) == lidx)
|
||||||
{
|
{
|
||||||
Rect newarea;
|
Rect newarea;
|
||||||
|
|
@ -1036,36 +1035,37 @@ DBTreeCopyConnect(scx, mask, xMask, connect, area, destUse)
|
||||||
else
|
else
|
||||||
DBTreeSrTiles(scx, newmask, xMask, dbcConnectFunc, (ClientData) &csa2);
|
DBTreeSrTiles(scx, newmask, xMask, dbcConnectFunc, (ClientData) &csa2);
|
||||||
|
|
||||||
/* Check the source def for any labels belonging to this */
|
/* Check the source def for any labels belonging to this */
|
||||||
/* tile area and plane, and add them to the destination. */
|
/* tile area and plane, and add them to the destination. */
|
||||||
|
|
||||||
/* (This code previously in dbcConnectFunc, but the change to */
|
/* (This code previously in dbcConnectFunc, but moved to avoid */
|
||||||
/* BPlane for cells means that the cell search cannot be run */
|
/* running the cell search from the top within another cell */
|
||||||
/* from the top within another cell search.) */
|
/* search, which creates deep stacks and can trigger stack */
|
||||||
|
/* overflow.) */
|
||||||
|
|
||||||
searchtype = TF_LABEL_ATTACH;
|
searchtype = TF_LABEL_ATTACH;
|
||||||
if (newtype & TT_DIAGONAL)
|
if (newtype & TT_DIAGONAL)
|
||||||
{
|
{
|
||||||
/* If the tile is split, then labels attached to the */
|
/* If the tile is split, then labels attached to the */
|
||||||
/* opposite point of the triangle are NOT connected. */
|
/* opposite point of the triangle are NOT connected. */
|
||||||
|
|
||||||
if (newtype & TT_SIDE)
|
if (newtype & TT_SIDE)
|
||||||
{
|
{
|
||||||
if (newtype & TT_DIRECTION)
|
if (newtype & TT_DIRECTION)
|
||||||
searchtype |= TF_LABEL_ATTACH_NOT_SW;
|
searchtype |= TF_LABEL_ATTACH_NOT_SW;
|
||||||
else
|
else
|
||||||
searchtype |= TF_LABEL_ATTACH_NOT_NW;
|
searchtype |= TF_LABEL_ATTACH_NOT_NW;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (newtype & TT_DIRECTION)
|
if (newtype & TT_DIRECTION)
|
||||||
searchtype |= TF_LABEL_ATTACH_NOT_NE;
|
searchtype |= TF_LABEL_ATTACH_NOT_NE;
|
||||||
else
|
else
|
||||||
searchtype |= TF_LABEL_ATTACH_NOT_SE;
|
searchtype |= TF_LABEL_ATTACH_NOT_SE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBTreeSrLabels(scx, newmask, xMask, NULL, searchtype,
|
DBTreeSrLabels(scx, newmask, xMask, NULL, searchtype,
|
||||||
dbcConnectLabelFunc, (ClientData) &csa2);
|
dbcConnectLabelFunc, (ClientData) &csa2);
|
||||||
}
|
}
|
||||||
freeMagic((char *)csa2.csa2_list);
|
freeMagic((char *)csa2.csa2_list);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1623,6 +1623,7 @@ dbReadProperties(cellDef, line, len, f, scalen, scaled)
|
||||||
locbbox.r_xbot, locbbox.r_ybot,
|
locbbox.r_xbot, locbbox.r_ybot,
|
||||||
locbbox.r_xtop, locbbox.r_ytop);
|
locbbox.r_xtop, locbbox.r_ytop);
|
||||||
(void) DBPropPut(cellDef, propertyname, storedvalue);
|
(void) DBPropPut(cellDef, propertyname, storedvalue);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ DBPropPut(cellDef, name, value)
|
||||||
{
|
{
|
||||||
HashTable *htab;
|
HashTable *htab;
|
||||||
HashEntry *entry;
|
HashEntry *entry;
|
||||||
|
char *oldvalue;
|
||||||
|
|
||||||
/* Honor the NOEDIT flag */
|
/* Honor the NOEDIT flag */
|
||||||
if (cellDef->cd_flags & CDNOEDIT) return;
|
if (cellDef->cd_flags & CDNOEDIT) return;
|
||||||
|
|
@ -67,6 +68,8 @@ DBPropPut(cellDef, name, value)
|
||||||
htab = (HashTable *) cellDef->cd_props;
|
htab = (HashTable *) cellDef->cd_props;
|
||||||
|
|
||||||
entry = HashFind(htab, name);
|
entry = HashFind(htab, name);
|
||||||
|
oldvalue = (char *)HashGetValue(entry);
|
||||||
|
if (oldvalue != NULL) freeMagic(oldvalue);
|
||||||
HashSetValue(entry, value);
|
HashSetValue(entry, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
103
database/Depend
103
database/Depend
|
|
@ -1,96 +1,153 @@
|
||||||
DBbound.o: DBbound.c ../utils/magic.h ../utils/geometry.h \
|
DBbound.o: DBbound.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../database/database.h ../tiles/tile.h ../utils/hash.h
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h
|
||||||
DBcell.o: DBcell.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
DBcell.o: DBcell.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/undo.h ../utils/signals.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/undo.h \
|
||||||
|
../utils/signals.h
|
||||||
DBcellbox.o: DBcellbox.c ../utils/magic.h ../utils/geometry.h \
|
DBcellbox.o: DBcellbox.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/undo.h
|
../dbwind/dbwind.h ../utils/undo.h
|
||||||
DBcellcopy.o: DBcellcopy.c ../utils/magic.h ../utils/geometry.h \
|
DBcellcopy.o: DBcellcopy.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/malloc.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../utils/malloc.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../commands/commands.h
|
../windows/windows.h ../dbwind/dbwind.h ../commands/commands.h
|
||||||
DBcellname.o: DBcellname.c ../tcltk/tclmagic.h ../utils/magic.h \
|
DBcellname.o: DBcellname.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/hash.h ../utils/utils.h ../utils/geometry.h ../tiles/tile.h \
|
../utils/hash.h ../utils/utils.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../database/database.h ../database/databaseInt.h ../select/select.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../select/select.h \
|
||||||
../utils/signals.h ../utils/undo.h ../utils/malloc.h \
|
../utils/signals.h ../utils/undo.h ../utils/malloc.h \
|
||||||
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../drc/drc.h
|
../utils/main.h ../drc/drc.h
|
||||||
DBcellsrch.o: DBcellsrch.c ../utils/magic.h ../utils/malloc.h \
|
DBcellsrch.o: DBcellsrch.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../textio/textio.h \
|
||||||
../utils/signals.h ../windows/windows.h ../utils/main.h \
|
../utils/signals.h ../windows/windows.h ../utils/main.h \
|
||||||
../mzrouter/mzrouter.h ../utils/list.h
|
../mzrouter/mzrouter.h ../utils/list.h
|
||||||
DBcellsel.o: DBcellsel.c ../utils/magic.h ../utils/geometry.h \
|
DBcellsel.o: DBcellsel.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/utils.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h
|
||||||
DBcellsubr.o: DBcellsubr.c ../utils/magic.h ../utils/malloc.h \
|
DBcellsubr.o: DBcellsubr.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/hash.h ../utils/utils.h ../utils/geometry.h ../tiles/tile.h \
|
../utils/hash.h ../utils/utils.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/signals.h
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/signals.h
|
||||||
DBconnect.o: DBconnect.c ../utils/magic.h ../utils/geometry.h \
|
DBconnect.o: DBconnect.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/signals.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/signals.h \
|
||||||
|
../utils/malloc.h
|
||||||
DBcount.o: DBcount.c ../utils/magic.h ../utils/hash.h ../utils/geometry.h \
|
DBcount.o: DBcount.c ../utils/magic.h ../utils/hash.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../database/database.h ../database/databaseInt.h
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../database/databaseInt.h
|
||||||
DBexpand.o: DBexpand.c ../utils/magic.h ../utils/geometry.h \
|
DBexpand.o: DBexpand.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../textio/textio.h ../utils/utils.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../textio/textio.h \
|
||||||
../utils/stack.h
|
../utils/stack.h
|
||||||
DBio.o: DBio.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
DBio.o: DBio.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/utils.h ../utils/hash.h ../database/database.h \
|
../utils/utils.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../database/fonts.h ../windows/windows.h \
|
../database/databaseInt.h ../database/fonts.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/tech.h ../textio/textio.h ../drc/drc.h \
|
../dbwind/dbwind.h ../utils/tech.h ../textio/textio.h ../drc/drc.h \
|
||||||
../utils/undo.h ../utils/malloc.h ../utils/signals.h
|
../utils/undo.h ../utils/malloc.h ../utils/signals.h
|
||||||
DBlabel.o: DBlabel.c ../utils/magic.h ../utils/malloc.h \
|
DBlabel.o: DBlabel.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
||||||
../database/database.h ../database/fonts.h ../database/databaseInt.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/fonts.h ../database/databaseInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../commands/commands.h \
|
../windows/windows.h ../dbwind/dbwind.h ../commands/commands.h \
|
||||||
../textio/textio.h
|
../textio/textio.h
|
||||||
DBlabel2.o: DBlabel2.c ../utils/magic.h ../utils/geometry.h \
|
DBlabel2.o: DBlabel2.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/malloc.h
|
||||||
DBpaint2.o: DBpaint2.c ../utils/magic.h ../utils/geometry.h \
|
DBpaint2.o: DBpaint2.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h
|
||||||
DBpaint.o: DBpaint.c ../utils/magic.h ../utils/malloc.h \
|
DBpaint.o: DBpaint.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/signals.h \
|
../graphics/graphics.h ../dbwind/dbwind.h ../utils/signals.h \
|
||||||
../textio/textio.h ../utils/undo.h
|
../textio/textio.h ../utils/undo.h
|
||||||
DBprop.o: DBprop.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
DBprop.o: DBprop.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/malloc.h
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/malloc.h
|
||||||
DBtech.o: DBtech.c ../utils/magic.h ../utils/geometry.h ../utils/utils.h \
|
DBtech.o: DBtech.c ../utils/magic.h ../utils/geometry.h ../utils/utils.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/tech.h ../textio/textio.h \
|
../database/databaseInt.h ../utils/tech.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
DBtcontact.o: DBtcontact.c ../utils/magic.h ../utils/geometry.h \
|
DBtcontact.o: DBtcontact.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../utils/malloc.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../utils/malloc.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/tech.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/tech.h \
|
||||||
../textio/textio.h
|
../textio/textio.h
|
||||||
DBtechname.o: DBtechname.c ../tcltk/tclmagic.h ../utils/magic.h \
|
DBtechname.o: DBtechname.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/tech.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/tech.h \
|
||||||
../textio/textio.h ../utils/malloc.h
|
../textio/textio.h ../utils/malloc.h
|
||||||
DBtpaint.o: DBtpaint.c ../utils/magic.h ../utils/geometry.h \
|
DBtpaint.o: DBtpaint.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/tech.h ../textio/textio.h
|
../database/databaseInt.h ../utils/tech.h ../textio/textio.h
|
||||||
DBtpaint2.o: DBtpaint2.c ../utils/magic.h ../utils/geometry.h \
|
DBtpaint2.o: DBtpaint2.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/tech.h ../textio/textio.h
|
../database/databaseInt.h ../utils/tech.h ../textio/textio.h
|
||||||
DBtechtype.o: DBtechtype.c ../utils/magic.h ../utils/geometry.h \
|
DBtechtype.o: DBtechtype.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/databaseInt.h ../utils/tech.h ../textio/textio.h \
|
../database/databaseInt.h ../utils/tech.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
DBtiles.o: DBtiles.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
DBtiles.o: DBtiles.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/signals.h ../utils/hash.h ../database/database.h \
|
../utils/signals.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/malloc.h
|
||||||
DBtimestmp.o: DBtimestmp.c ../utils/magic.h ../utils/geometry.h \
|
DBtimestmp.o: DBtimestmp.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../windows/windows.h ../textio/textio.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../drc/drc.h ../utils/signals.h ../utils/malloc.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../windows/windows.h \
|
||||||
|
../textio/textio.h ../drc/drc.h ../utils/signals.h ../utils/malloc.h
|
||||||
DBundo.o: DBundo.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
DBundo.o: DBundo.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../database/databaseInt.h ../utils/undo.h ../windows/windows.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../dbwind/dbwind.h ../utils/main.h ../utils/utils.h ../drc/drc.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/undo.h \
|
||||||
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../drc/drc.h \
|
||||||
../utils/signals.h
|
../utils/signals.h
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,61 @@
|
||||||
DBWcommands.o: DBWcommands.c ../utils/magic.h ../utils/geometry.h \
|
DBWcommands.o: DBWcommands.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../commands/commands.h ../textio/textio.h ../textio/txcommands.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
||||||
|
../textio/txcommands.h
|
||||||
DBWdisplay.o: DBWdisplay.c ../utils/magic.h ../utils/malloc.h \
|
DBWdisplay.o: DBWdisplay.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../dbwind/dbwind.h ../utils/utils.h ../dbwind/dbwtech.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/styles.h ../utils/main.h ../utils/tech.h ../utils/signals.h
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../dbwind/dbwtech.h ../utils/styles.h ../utils/main.h \
|
||||||
|
../utils/tech.h ../utils/signals.h
|
||||||
DBWbuttons.o: DBWbuttons.c ../utils/magic.h ../utils/geometry.h \
|
DBWbuttons.o: DBWbuttons.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/styles.h ../textio/textio.h ../textio/txcommands.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/utils.h
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
|
../textio/txcommands.h
|
||||||
DBWelement.o: DBWelement.c ../tcltk/tclmagic.h ../utils/magic.h \
|
DBWelement.o: DBWelement.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../dbwind/dbwind.h ../utils/utils.h ../utils/styles.h ../utils/malloc.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../utils/malloc.h \
|
||||||
../utils/signals.h
|
../utils/signals.h
|
||||||
DBWfdback.o: DBWfdback.c ../utils/magic.h ../utils/geometry.h \
|
DBWfdback.o: DBWfdback.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/utils.h ../utils/styles.h ../utils/malloc.h ../utils/signals.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../utils/malloc.h \
|
||||||
|
../utils/signals.h
|
||||||
DBWhlights.o: DBWhlights.c ../utils/magic.h ../utils/geometry.h \
|
DBWhlights.o: DBWhlights.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../graphics/graphicsInt.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../textio/textio.h ../graphics/graphicsInt.h
|
||||||
DBWprocs.o: DBWprocs.c ../utils/main.h ../windows/windows.h \
|
DBWprocs.o: DBWprocs.c ../utils/main.h ../windows/windows.h \
|
||||||
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../commands/commands.h \
|
../tiles/tile.h ../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../dbwind/dbwind.h ../graphics/graphics.h ../textio/textio.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../textio/txcommands.h ../utils/utils.h ../utils/undo.h \
|
../bplane/bplaneInt.h ../commands/commands.h ../dbwind/dbwind.h \
|
||||||
../graphics/glyphs.h ../utils/malloc.h ../utils/styles.h
|
../graphics/graphics.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
|
../utils/undo.h ../graphics/glyphs.h ../utils/malloc.h ../utils/styles.h
|
||||||
DBWtools.o: DBWtools.c ../utils/magic.h ../utils/geometry.h \
|
DBWtools.o: DBWtools.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../utils/main.h ../textio/txcommands.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../textio/textio.h ../utils/main.h \
|
||||||
|
../textio/txcommands.h
|
||||||
DBWundo.o: DBWundo.c ../utils/magic.h ../utils/geometry.h \
|
DBWundo.o: DBWundo.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/main.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/undo.h ../textio/textio.h ../commands/commands.h
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/main.h ../dbwind/dbwind.h ../utils/undo.h \
|
||||||
|
../textio/textio.h ../commands/commands.h
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
debugFlags.o: debugFlags.c ../utils/magic.h ../debug/debug.h \
|
debugFlags.o: debugFlags.c ../utils/magic.h ../debug/debug.h \
|
||||||
../textio/textio.h ../utils/malloc.h ../utils/utils.h
|
../textio/textio.h ../utils/malloc.h ../utils/utils.h
|
||||||
hist.o: hist.c ../utils/magic.h ../utils/geometry.h \
|
hist.o: hist.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../database/database.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../textio/textio.h ../debug/debug.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../textio/textio.h ../debug/debug.h \
|
||||||
|
../utils/malloc.h
|
||||||
|
|
|
||||||
6
defs.mak
6
defs.mak
|
|
@ -62,16 +62,16 @@ LIB_SPECS_NOSTUB = -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6
|
||||||
WISH_EXE = /usr/bin/wish
|
WISH_EXE = /usr/bin/wish
|
||||||
TCL_LIB_DIR = /usr/lib
|
TCL_LIB_DIR = /usr/lib
|
||||||
MAGIC_VERSION = 8.2
|
MAGIC_VERSION = 8.2
|
||||||
MAGIC_REVISION = 53
|
MAGIC_REVISION = 101
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CPP = gcc -E
|
CPP = gcc -E
|
||||||
CXX = g++
|
CXX = g++
|
||||||
|
|
||||||
CPPFLAGS = -I. -I${MAGICDIR}
|
CPPFLAGS = -I. -I${MAGICDIR}
|
||||||
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DUSE_TCL_STUBS -DUSE_TK_STUBS -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"53\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DUSE_TCL_STUBS -DUSE_TK_STUBS -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"101\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
DFLAGS += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
||||||
DFLAGS_NOSTUB = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"53\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
DFLAGS_NOSTUB = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"101\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS_NOSTUB += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
DFLAGS_NOSTUB += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
||||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2159,9 +2159,9 @@ drcSpacing(argc, argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
runlength = distance;
|
|
||||||
layers2 = argv[3];
|
layers2 = argv[3];
|
||||||
distance = atoi(argv[4]);
|
distance = atoi(argv[4]);
|
||||||
|
runlength = distance;
|
||||||
adjacency = argv[5];
|
adjacency = argv[5];
|
||||||
why = drcWhyDup(argv[6]);
|
why = drcWhyDup(argv[6]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
55
drc/Depend
55
drc/Depend
|
|
@ -1,36 +1,57 @@
|
||||||
DRCarray.o: DRCarray.c ../utils/magic.h ../utils/geometry.h \
|
DRCarray.o: DRCarray.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../drc/drc.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../commands/commands.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../drc/drc.h ../windows/windows.h \
|
||||||
|
../commands/commands.h
|
||||||
DRCbasic.o: DRCbasic.c ../utils/magic.h ../utils/geometry.h \
|
DRCbasic.o: DRCbasic.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../drc/drc.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/signals.h ../utils/maxrect.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../drc/drc.h ../utils/signals.h ../utils/maxrect.h \
|
||||||
|
../utils/malloc.h
|
||||||
DRCcif.o: DRCcif.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
DRCcif.o: DRCcif.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../dbwind/dbwind.h ../dbwind/dbwtech.h ../drc/drc.h ../cif/cif.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../cif/CIFint.h ../utils/signals.h ../utils/stack.h ../utils/malloc.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../utils/utils.h
|
../windows/windows.h ../dbwind/dbwind.h ../dbwind/dbwtech.h ../drc/drc.h \
|
||||||
|
../cif/cif.h ../cif/CIFint.h ../utils/signals.h ../utils/stack.h \
|
||||||
|
../utils/malloc.h
|
||||||
DRCcontin.o: DRCcontin.c ../tcltk/tclmagic.h ../utils/magic.h \
|
DRCcontin.o: DRCcontin.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../textio/textio.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../dbwind/dbwtech.h ../utils/main.h ../commands/commands.h ../drc/drc.h \
|
../dbwind/dbwtech.h ../utils/main.h ../commands/commands.h ../drc/drc.h \
|
||||||
../utils/signals.h ../graphics/graphics.h ../utils/undo.h \
|
../utils/signals.h ../graphics/graphics.h ../utils/undo.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
DRCmain.o: DRCmain.c ../utils/magic.h ../utils/malloc.h \
|
DRCmain.o: DRCmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/malloc.h ../textio/textio.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../drc/drc.h ../utils/undo.h
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h ../utils/undo.h
|
||||||
DRCsubcell.o: DRCsubcell.c ../utils/magic.h ../textio/textio.h \
|
DRCsubcell.o: DRCsubcell.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../drc/drc.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../drc/drc.h ../windows/windows.h \
|
||||||
../commands/commands.h ../utils/undo.h
|
../commands/commands.h ../utils/undo.h
|
||||||
DRCtech.o: DRCtech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
DRCtech.o: DRCtech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/utils.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../drc/drc.h ../utils/tech.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../drc/drc.h ../utils/tech.h ../textio/textio.h \
|
||||||
../utils/malloc.h ../cif/cif.h ../cif/CIFint.h
|
../utils/malloc.h ../cif/cif.h ../cif/CIFint.h
|
||||||
DRCprint.o: DRCprint.c ../utils/magic.h ../utils/geometry.h \
|
DRCprint.o: DRCprint.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../drc/drc.h
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../drc/drc.h
|
||||||
DRCextend.o: DRCextend.c ../utils/magic.h ../utils/malloc.h \
|
DRCextend.o: DRCextend.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../dbwind/dbwtech.h ../drc/drc.h ../utils/signals.h ../utils/stack.h \
|
../dbwind/dbwtech.h ../drc/drc.h ../utils/signals.h ../utils/stack.h \
|
||||||
../utils/maxrect.h
|
../utils/maxrect.h
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
ext2sim.o: ext2sim.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ext2sim.o: ext2sim.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/hash.h ../utils/utils.h ../tiles/tile.h \
|
../utils/geometry.h ../utils/hash.h ../utils/utils.h ../tiles/tile.h \
|
||||||
../database/database.h ../windows/windows.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../textio/textio.h \
|
||||||
../dbwind/dbwind.h ../commands/commands.h ../textio/txcommands.h \
|
../dbwind/dbwind.h ../commands/commands.h ../textio/txcommands.h \
|
||||||
../extflat/extflat.h ../extract/extract.h ../utils/runstats.h \
|
../extflat/extflat.h ../extract/extract.h ../utils/runstats.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
ext2spice.o: ext2spice.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ext2spice.o: ext2spice.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.h \
|
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
||||||
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.h \
|
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.h \
|
||||||
../extflat/EFint.h ../extract/extract.h ../utils/runstats.h \
|
../extflat/EFint.h ../extract/extract.h ../utils/runstats.h \
|
||||||
|
|
@ -8,6 +10,8 @@ ext2spice.o: ext2spice.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
ext2hier.o: ext2hier.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ext2hier.o: ext2hier.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.h \
|
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
||||||
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.h \
|
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.h \
|
||||||
../extflat/EFint.h ../extract/extract.h ../utils/runstats.h \
|
../extflat/EFint.h ../extract/extract.h ../utils/runstats.h \
|
||||||
|
|
|
||||||
|
|
@ -661,6 +661,7 @@ spcdevHierVisit(hc, dev, scale)
|
||||||
"base", esSpiceF);
|
"base", esSpiceF);
|
||||||
|
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -788,6 +789,7 @@ spcdevHierVisit(hc, dev, scale)
|
||||||
subnode->efnode_name->efnn_hier,
|
subnode->efnode_name->efnn_hier,
|
||||||
"diode_bot", esSpiceF);
|
"diode_bot", esSpiceF);
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -808,6 +810,7 @@ spcdevHierVisit(hc, dev, scale)
|
||||||
gate->dterm_node->efnode_name->efnn_hier,
|
gate->dterm_node->efnode_name->efnn_hier,
|
||||||
"diode_top", esSpiceF);
|
"diode_top", esSpiceF);
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -1514,8 +1517,8 @@ devDistJunctHierVisit(hc, dev, scale)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = (int)((float)w * scale);
|
|
||||||
EFGetLengthAndWidth(dev, &l, &w);
|
EFGetLengthAndWidth(dev, &l, &w);
|
||||||
|
w = (int)((float)w * scale);
|
||||||
|
|
||||||
for (i = 1; i<dev->dev_nterm; i++)
|
for (i = 1; i<dev->dev_nterm; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -1552,7 +1555,8 @@ esMakePorts(hc, cdata)
|
||||||
char *name, *portname, *tptr, *aptr, *locname;
|
char *name, *portname, *tptr, *aptr, *locname;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
if (def->def_uses == NULL) return 0; /* Bottom of hierarchy */
|
/* Done when the bottom of the hierarchy is reached */
|
||||||
|
if (HashGetNumEntries(&def->def_uses) == 0) return 0;
|
||||||
|
|
||||||
for (conn = (Connection *)def->def_conns; conn; conn = conn->conn_next)
|
for (conn = (Connection *)def->def_conns; conn; conn = conn->conn_next)
|
||||||
{
|
{
|
||||||
|
|
@ -1579,13 +1583,11 @@ esMakePorts(hc, cdata)
|
||||||
|
|
||||||
// Find the cell for the instance
|
// Find the cell for the instance
|
||||||
portdef = NULL;
|
portdef = NULL;
|
||||||
for (use = updef->def_uses; use; use = use->use_next)
|
he = HashFind(&updef->def_uses, portname);
|
||||||
|
if (he != NULL)
|
||||||
{
|
{
|
||||||
if (!strcmp(use->use_id, portname))
|
use = (Use *)HashGetValue(he);
|
||||||
{
|
portdef = use->use_def;
|
||||||
portdef = use->use_def;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ((aptr == NULL) || (aptr > tptr))
|
if ((aptr == NULL) || (aptr > tptr))
|
||||||
*tptr = '/';
|
*tptr = '/';
|
||||||
|
|
@ -1660,13 +1662,11 @@ esMakePorts(hc, cdata)
|
||||||
|
|
||||||
// Find the cell for the instance
|
// Find the cell for the instance
|
||||||
portdef = NULL;
|
portdef = NULL;
|
||||||
for (use = updef->def_uses; use; use = use->use_next)
|
he = HashFind(&updef->def_uses, portname);
|
||||||
|
if (he != NULL)
|
||||||
{
|
{
|
||||||
if (!strcmp(use->use_id, portname))
|
use = (Use *)HashGetValue(he);
|
||||||
{
|
portdef = use->use_def;
|
||||||
portdef = use->use_def;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ((aptr == NULL) || (aptr > tptr))
|
if ((aptr == NULL) || (aptr > tptr))
|
||||||
*tptr = '/';
|
*tptr = '/';
|
||||||
|
|
@ -1747,7 +1747,7 @@ esHierVisit(hc, cdata)
|
||||||
|
|
||||||
if (def != topdef)
|
if (def != topdef)
|
||||||
{
|
{
|
||||||
if (def->def_devs == NULL && def->def_uses == NULL)
|
if ((def->def_devs == NULL) && (HashGetNumEntries(&def->def_uses) == 0))
|
||||||
{
|
{
|
||||||
if (locDoSubckt == AUTO)
|
if (locDoSubckt == AUTO)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1685,6 +1685,7 @@ topVisit(def, doStub)
|
||||||
EFNodeName *unnumbered;
|
EFNodeName *unnumbered;
|
||||||
|
|
||||||
sname = (EFNodeName *) HashGetValue(he);
|
sname = (EFNodeName *) HashGetValue(he);
|
||||||
|
if (sname == NULL) continue; /* Should not happen */
|
||||||
snode = sname->efnn_node;
|
snode = sname->efnn_node;
|
||||||
|
|
||||||
if (!(snode->efnode_flags & EF_PORT)) continue;
|
if (!(snode->efnode_flags & EF_PORT)) continue;
|
||||||
|
|
@ -2334,6 +2335,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
||||||
name, esSpiceF);
|
name, esSpiceF);
|
||||||
|
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -2455,6 +2457,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
||||||
name, esSpiceF);
|
name, esSpiceF);
|
||||||
|
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -2472,6 +2475,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
||||||
name, esSpiceF);
|
name, esSpiceF);
|
||||||
|
|
||||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||||
|
sdM = getCurDevMult();
|
||||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -3795,8 +3799,8 @@ devDistJunctVisit(dev, hierName, scale, trans)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = (int)((float)w * scale);
|
|
||||||
EFGetLengthAndWidth(dev, &l, &w);
|
EFGetLengthAndWidth(dev, &l, &w);
|
||||||
|
w = (int)((float)w * scale);
|
||||||
|
|
||||||
for (i = 1; i<dev->dev_nterm; i++)
|
for (i = 1; i<dev->dev_nterm; i++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
extcheck.o: extcheck.c ../utils/magic.h ../utils/paths.h \
|
|
||||||
../utils/geometry.h ../utils/hash.h ../utils/utils.h \
|
|
||||||
../utils/pathvisit.h ../extflat/extflat.h ../utils/runstats.h
|
|
||||||
|
|
@ -20,6 +20,8 @@ EFname.o: EFname.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
EFread.o: EFread.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
EFread.o: EFread.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../utils/hash.h ../utils/utils.h ../tiles/tile.h \
|
../utils/geometry.h ../utils/hash.h ../utils/utils.h ../tiles/tile.h \
|
||||||
../commands/commands.h ../windows/windows.h ../database/database.h \
|
../commands/commands.h ../windows/windows.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../extflat/extflat.h ../extflat/EFint.h ../extract/extract.h \
|
../extflat/extflat.h ../extflat/EFint.h ../extract/extract.h \
|
||||||
../utils/paths.h
|
../utils/paths.h
|
||||||
EFsym.o: EFsym.c ../utils/magic.h ../utils/geometry.h ../utils/geofast.h \
|
EFsym.o: EFsym.c ../utils/magic.h ../utils/geometry.h ../utils/geofast.h \
|
||||||
|
|
|
||||||
|
|
@ -223,8 +223,8 @@ efAdjustSubCap(def, nodeName, nodeCapAdjust)
|
||||||
EFNode *node;
|
EFNode *node;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
he = HashFind(&def->def_nodes, nodeName);
|
he = HashLookOnly(&def->def_nodes, nodeName);
|
||||||
if (nodename = (EFNodeName *) HashGetValue(he))
|
if (he && (nodename = (EFNodeName *) HashGetValue(he)))
|
||||||
{
|
{
|
||||||
node = nodename->efnn_node;
|
node = nodename->efnn_node;
|
||||||
node->efnode_cap += (EFCapValue) nodeCapAdjust;
|
node->efnode_cap += (EFCapValue) nodeCapAdjust;
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ efReadDef(def, dosubckt, resist, noscale, toplevel)
|
||||||
int argc, ac, n;
|
int argc, ac, n;
|
||||||
CellDef *dbdef;
|
CellDef *dbdef;
|
||||||
EFCapValue cap;
|
EFCapValue cap;
|
||||||
char line[1024], *argv[64], *name, *attrs;
|
char line[1024], *argv[128], *name, *attrs;
|
||||||
int rscale = 1; /* Multiply resistances by this */
|
int rscale = 1; /* Multiply resistances by this */
|
||||||
int cscale = 1; /* Multiply capacitances by this */
|
int cscale = 1; /* Multiply capacitances by this */
|
||||||
float lscale = 1.0; /* Multiply lambda by this */
|
float lscale = 1.0; /* Multiply lambda by this */
|
||||||
|
|
|
||||||
111
extract/Depend
111
extract/Depend
|
|
@ -1,97 +1,134 @@
|
||||||
ExtArray.o: ExtArray.c ../utils/magic.h ../utils/geometry.h \
|
ExtArray.o: ExtArray.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h \
|
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h
|
../windows/windows.h ../dbwind/dbwind.h
|
||||||
ExtBasic.o: ExtBasic.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ExtBasic.o: ExtBasic.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h
|
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h
|
||||||
ExtCell.o: ExtCell.c ../utils/magic.h ../utils/geometry.h \
|
ExtCell.o: ExtCell.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../textio/textio.h ../debug/debug.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/signals.h ../utils/stack.h ../utils/utils.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
|
../extract/extDebugInt.h ../utils/signals.h ../utils/stack.h \
|
||||||
../windows/windows.h ../utils/main.h ../utils/undo.h
|
../windows/windows.h ../utils/main.h ../utils/undo.h
|
||||||
ExtCouple.o: ExtCouple.c ../utils/magic.h ../utils/geometry.h \
|
ExtCouple.o: ExtCouple.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../extract/extract.h ../extract/extractInt.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h
|
../extract/extDebugInt.h
|
||||||
ExtHard.o: ExtHard.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
ExtHard.o: ExtHard.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/malloc.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../textio/textio.h ../utils/styles.h ../debug/debug.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../utils/geofast.h
|
../utils/malloc.h ../textio/textio.h ../utils/styles.h ../debug/debug.h \
|
||||||
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h
|
||||||
ExtHier.o: ExtHier.c ../utils/magic.h ../utils/geometry.h \
|
ExtHier.o: ExtHier.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../utils/styles.h ../windows/windows.h ../dbwind/dbwind.h \
|
../utils/styles.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h
|
../extract/extDebugInt.h
|
||||||
ExtLength.o: ExtLength.c ../utils/magic.h ../utils/geometry.h \
|
ExtLength.o: ExtLength.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../utils/main.h \
|
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../utils/main.h
|
||||||
../utils/utils.h
|
|
||||||
ExtMain.o: ExtMain.c ../utils/magic.h ../utils/geometry.h \
|
ExtMain.o: ExtMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../textio/textio.h ../debug/debug.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/signals.h ../utils/stack.h ../utils/utils.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
|
../extract/extDebugInt.h ../utils/signals.h ../utils/stack.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../utils/undo.h
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../utils/undo.h
|
||||||
ExtNghbors.o: ExtNghbors.c ../utils/magic.h ../utils/geometry.h \
|
ExtNghbors.o: ExtNghbors.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../debug/debug.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../debug/debug.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../utils/signals.h ../utils/stack.h
|
../utils/signals.h ../utils/stack.h
|
||||||
ExtPerim.o: ExtPerim.c ../utils/magic.h ../utils/geometry.h \
|
ExtPerim.o: ExtPerim.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/malloc.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/stack.h ../debug/debug.h ../extract/extract.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../extract/extractInt.h ../extract/extDebugInt.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/stack.h \
|
||||||
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
|
../extract/extDebugInt.h
|
||||||
ExtRegion.o: ExtRegion.c ../utils/magic.h ../utils/geometry.h \
|
ExtRegion.o: ExtRegion.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/malloc.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../textio/textio.h ../debug/debug.h ../extract/extract.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../extract/extractInt.h ../extract/extDebugInt.h ../utils/signals.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
ExtSubtree.o: ExtSubtree.c ../utils/magic.h ../utils/geometry.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../extract/extDebugInt.h ../utils/signals.h
|
||||||
|
ExtSubtree.o: ExtSubtree.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h
|
../dbwind/dbwind.h ../utils/styles.h
|
||||||
ExtTech.o: ExtTech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ExtTech.o: ExtTech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/malloc.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/malloc.h \
|
||||||
../textio/textio.h ../utils/tech.h ../debug/debug.h ../extract/extract.h \
|
../textio/textio.h ../utils/tech.h ../debug/debug.h ../extract/extract.h \
|
||||||
../extract/extractInt.h ../extract/extDebugInt.h ../cif/CIFint.h
|
../extract/extractInt.h ../extract/extDebugInt.h ../cif/CIFint.h \
|
||||||
|
../cif/cif.h
|
||||||
ExtTest.o: ExtTest.c ../utils/magic.h ../utils/utils.h \
|
ExtTest.o: ExtTest.c ../utils/magic.h ../utils/utils.h \
|
||||||
../utils/geometry.h ../utils/styles.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/styles.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/main.h \
|
../graphics/graphics.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
../commands/commands.h ../textio/textio.h ../textio/txcommands.h \
|
../commands/commands.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h
|
../extract/extDebugInt.h
|
||||||
ExtTimes.o: ExtTimes.c ../utils/magic.h ../utils/utils.h \
|
ExtTimes.o: ExtTimes.c ../utils/magic.h ../utils/utils.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h
|
../utils/ihash.h ../bplane/bpEnum.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/malloc.h ../textio/textio.h ../extract/extract.h \
|
||||||
|
../extract/extractInt.h ../extract/extDebugInt.h
|
||||||
ExtYank.o: ExtYank.c ../utils/magic.h ../utils/geometry.h \
|
ExtYank.o: ExtYank.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../utils/styles.h ../extract/extract.h \
|
../debug/debug.h ../utils/styles.h ../extract/extract.h \
|
||||||
../extract/extractInt.h ../extract/extDebugInt.h
|
../extract/extractInt.h ../extract/extDebugInt.h
|
||||||
ExtInter.o: ExtInter.c ../utils/magic.h ../utils/geometry.h \
|
ExtInter.o: ExtInter.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/undo.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../utils/undo.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h
|
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h
|
||||||
ExtUnique.o: ExtUnique.c ../utils/magic.h ../utils/geometry.h \
|
ExtUnique.o: ExtUnique.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../textio/textio.h ../debug/debug.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/signals.h ../utils/stack.h ../utils/utils.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
|
../extract/extDebugInt.h ../utils/signals.h ../utils/stack.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../utils/undo.h
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../utils/undo.h
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,37 @@
|
||||||
gaChannel.o: gaChannel.c ../utils/magic.h ../utils/geometry.h \
|
gaChannel.o: gaChannel.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h ../router/router.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../garouter/garouter.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../garouter/gaDebug.h ../utils/netlist.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../utils/styles.h ../debug/debug.h
|
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
|
../garouter/garouter.h ../garouter/gaDebug.h ../utils/netlist.h \
|
||||||
|
../textio/textio.h ../utils/styles.h ../debug/debug.h
|
||||||
gaMain.o: gaMain.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
gaMain.o: gaMain.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h ../router/router.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../garouter/garouter.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../garouter/gaDebug.h ../utils/netlist.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../debug/debug.h ../drc/drc.h
|
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
|
../garouter/garouter.h ../garouter/gaDebug.h ../utils/netlist.h \
|
||||||
|
../textio/textio.h ../debug/debug.h ../drc/drc.h
|
||||||
gaMaze.o: gaMaze.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
gaMaze.o: gaMaze.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../utils/undo.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../utils/undo.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h ../router/router.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../garouter/garouter.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../garouter/gaDebug.h gaInternal.h ../utils/netlist.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../utils/styles.h ../utils/malloc.h ../drc/drc.h ../debug/debug.h \
|
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
../utils/list.h ../mzrouter/mzrouter.h
|
../garouter/garouter.h ../garouter/gaDebug.h gaInternal.h \
|
||||||
|
../utils/netlist.h ../textio/textio.h ../utils/styles.h \
|
||||||
|
../utils/malloc.h ../drc/drc.h ../debug/debug.h ../utils/list.h \
|
||||||
|
../mzrouter/mzrouter.h
|
||||||
gaSimple.o: gaSimple.c ../utils/magic.h ../utils/geometry.h \
|
gaSimple.o: gaSimple.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
||||||
../database/database.h ../windows/windows.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
../garouter/garouter.h ../garouter/gaDebug.h ../utils/netlist.h \
|
../garouter/garouter.h ../garouter/gaDebug.h ../utils/netlist.h \
|
||||||
|
|
@ -31,16 +40,21 @@ gaSimple.o: gaSimple.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../extract/extDebugInt.h
|
../extract/extDebugInt.h
|
||||||
gaStem.o: gaStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
gaStem.o: gaStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h ../router/router.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../garouter/garouter.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../garouter/gaDebug.h gaInternal.h ../utils/netlist.h ../textio/textio.h \
|
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../utils/styles.h ../utils/malloc.h ../drc/drc.h ../debug/debug.h
|
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
|
../garouter/garouter.h ../garouter/gaDebug.h gaInternal.h \
|
||||||
|
../utils/netlist.h ../textio/textio.h ../utils/styles.h \
|
||||||
|
../utils/malloc.h ../drc/drc.h ../debug/debug.h
|
||||||
gaTest.o: gaTest.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
gaTest.o: gaTest.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/signals.h ../textio/textio.h ../debug/debug.h ../gcr/gcr.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../graphics/graphics.h ../garouter/garouter.h ../garouter/gaDebug.h \
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../textio/txcommands.h \
|
../debug/debug.h ../gcr/gcr.h ../router/router.h ../grouter/grouter.h \
|
||||||
../utils/main.h ../utils/utils.h ../commands/commands.h \
|
../grouter/grouteDebug.h ../graphics/graphics.h ../garouter/garouter.h \
|
||||||
|
../garouter/gaDebug.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../textio/txcommands.h ../utils/main.h ../commands/commands.h \
|
||||||
../utils/styles.h
|
../utils/styles.h
|
||||||
|
|
|
||||||
20
gcr/Depend
20
gcr/Depend
|
|
@ -4,17 +4,24 @@ gcrColl.o: gcrColl.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../gcr/gcr.h ../utils/malloc.h
|
../gcr/gcr.h ../utils/malloc.h
|
||||||
gcrDebug.o: gcrDebug.c ../utils/magic.h ../utils/geometry.h \
|
gcrDebug.o: gcrDebug.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../textio/textio.h ../tiles/tile.h ../utils/hash.h \
|
../textio/textio.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../gcr/gcr.h ../utils/heap.h ../router/router.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../gcr/gcr.h ../utils/heap.h ../router/router.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
gcrEdge.o: gcrEdge.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
gcrEdge.o: gcrEdge.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../gcr/gcr.h
|
../gcr/gcr.h
|
||||||
gcrFeas.o: gcrFeas.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
gcrFeas.o: gcrFeas.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../gcr/gcr.h ../utils/hash.h ../database/database.h ../router/router.h
|
../gcr/gcr.h ../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../router/router.h
|
||||||
gcrFlags.o: gcrFlags.c ../utils/magic.h ../utils/geometry.h \
|
gcrFlags.o: gcrFlags.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../gcr/gcr.h
|
../tiles/tile.h ../gcr/gcr.h
|
||||||
gcrInit.o: gcrInit.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
gcrInit.o: gcrInit.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../router/router.h ../gcr/gcr.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../router/router.h ../gcr/gcr.h ../utils/malloc.h
|
||||||
gcrLib.o: gcrLib.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
gcrLib.o: gcrLib.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../gcr/gcr.h ../utils/malloc.h
|
../gcr/gcr.h ../utils/malloc.h
|
||||||
gcrRiver.o: gcrRiver.c ../utils/magic.h ../utils/geometry.h ../gcr/gcr.h \
|
gcrRiver.o: gcrRiver.c ../utils/magic.h ../utils/geometry.h ../gcr/gcr.h \
|
||||||
|
|
@ -23,7 +30,10 @@ gcrRoute.o: gcrRoute.c ../utils/magic.h ../utils/geometry.h ../gcr/gcr.h \
|
||||||
../utils/signals.h ../utils/malloc.h ../utils/styles.h
|
../utils/signals.h ../utils/malloc.h ../utils/styles.h
|
||||||
gcrShwFlgs.o: gcrShwFlgs.c ../utils/magic.h ../utils/geometry.h \
|
gcrShwFlgs.o: gcrShwFlgs.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../gcr/gcr.h ../utils/heap.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../router/router.h ../utils/main.h ../utils/styles.h ../textio/textio.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../gcr/gcr.h ../utils/heap.h ../router/router.h ../utils/main.h \
|
||||||
|
../utils/styles.h ../textio/textio.h
|
||||||
gcrUnsplit.o: gcrUnsplit.c ../utils/magic.h ../utils/geometry.h \
|
gcrUnsplit.o: gcrUnsplit.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../gcr/gcr.h ../utils/malloc.h
|
../tiles/tile.h ../gcr/gcr.h ../utils/malloc.h
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,26 @@ grDStyle.o: grDStyle.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/styles.h ../utils/utils.h ../textio/textio.h \
|
../utils/styles.h ../utils/utils.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../graphics/glyphs.h ../windows/windows.h \
|
../utils/geometry.h ../graphics/glyphs.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../graphics/graphicsInt.h ../tiles/tile.h \
|
../graphics/graphics.h ../graphics/graphicsInt.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../dbwind/dbwind.h
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/geofast.h ../bplane/bplaneInt.h ../dbwind/dbwind.h
|
||||||
grText.o: grText.c ../utils/magic.h ../textio/textio.h \
|
grText.o: grText.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../windows/windows.h ../graphics/graphics.h \
|
../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../graphics/graphicsInt.h ../utils/utils.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../graphics/graphicsInt.h
|
||||||
grCMap.o: grCMap.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
grCMap.o: grCMap.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/utils.h ../textio/textio.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../graphics/graphicsInt.h ../textio/textio.h
|
||||||
grClip.o: grClip.c ../utils/magic.h ../textio/textio.h \
|
grClip.o: grClip.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/styles.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/styles.h \
|
||||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
../graphics/graphicsInt.h ../utils/malloc.h
|
../graphics/graphicsInt.h ../utils/malloc.h
|
||||||
grGlyphs.o: grGlyphs.c ../utils/magic.h ../utils/geometry.h \
|
grGlyphs.o: grGlyphs.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../windows/windows.h ../graphics/graphics.h \
|
../utils/utils.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
|
@ -30,10 +38,12 @@ grNull.o: grNull.c ../utils/magsgtty.h ../utils/magic.h \
|
||||||
../utils/signals.h
|
../utils/signals.h
|
||||||
W3Dmain.o: W3Dmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
W3Dmain.o: W3Dmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../utils/undo.h ../database/database.h ../utils/main.h \
|
../utils/undo.h ../database/database.h ../bplane/bplane.h \
|
||||||
../commands/commands.h ../graphics/wind3d.h ../graphics/graphicsInt.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../graphics/graphics.h grTOGLInt.h ../textio/textio.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../textio/txcommands.h ../utils/utils.h ../utils/styles.h \
|
../utils/main.h ../commands/commands.h ../graphics/wind3d.h \
|
||||||
|
../graphics/graphicsInt.h ../graphics/graphics.h grTOGLInt.h \
|
||||||
|
../textio/textio.h ../textio/txcommands.h ../utils/styles.h \
|
||||||
../dbwind/dbwtech.h ../dbwind/dbwind.h ../extract/extract.h \
|
../dbwind/dbwtech.h ../dbwind/dbwind.h ../extract/extract.h \
|
||||||
../graphics/glyphs.h ../utils/malloc.h ../windows/windInt.h ../cif/cif.h \
|
../graphics/glyphs.h ../utils/malloc.h ../windows/windInt.h ../cif/cif.h \
|
||||||
../cif/CIFint.h
|
../cif/CIFint.h
|
||||||
|
|
@ -49,6 +59,8 @@ grX11su3.o: grX11su3.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
||||||
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
||||||
../dbwind/dbwind.h ../database/database.h ../tiles/tile.h \
|
../dbwind/dbwind.h ../database/database.h ../tiles/tile.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/fonts.h grX11Int.h
|
../database/fonts.h grX11Int.h
|
||||||
grX11su4.o: grX11su4.c ../utils/magic.h ../utils/magsgtty.h \
|
grX11su4.o: grX11su4.c ../utils/magic.h ../utils/magsgtty.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../graphics/graphics.h \
|
../textio/textio.h ../utils/geometry.h ../graphics/graphics.h \
|
||||||
|
|
@ -60,10 +72,12 @@ grX11su5.o: grX11su5.c ../utils/magic.h ../utils/styles.h ../utils/hash.h \
|
||||||
grX11Int.h
|
grX11Int.h
|
||||||
grTk1.o: grTk1.c ../tcltk/tclmagic.h ../utils/main.h ../windows/windows.h \
|
grTk1.o: grTk1.c ../tcltk/tclmagic.h ../utils/main.h ../windows/windows.h \
|
||||||
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../utils/malloc.h ../utils/magsgtty.h \
|
../tiles/tile.h ../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/magsgtty.h \
|
||||||
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
||||||
../textio/txcommands.h ../utils/signals.h ../utils/utils.h ../drc/drc.h \
|
../textio/txcommands.h ../utils/signals.h ../drc/drc.h ../utils/macros.h \
|
||||||
../utils/macros.h grTkInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
grTkInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||||
grTk2.o: grTk2.c ../tcltk/tclmagic.h ../utils/magic.h ../textio/textio.h \
|
grTk2.o: grTk2.c ../tcltk/tclmagic.h ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../graphics/glyphs.h ../windows/windows.h \
|
../utils/geometry.h ../graphics/glyphs.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../graphics/graphicsInt.h grTkInt.h
|
../graphics/graphics.h ../graphics/graphicsInt.h grTkInt.h
|
||||||
|
|
@ -82,21 +96,25 @@ grTk5.o: grTk5.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/styles.h \
|
||||||
../graphics/graphicsInt.h grTkCommon.h grTkInt.h
|
../graphics/graphicsInt.h grTkCommon.h grTkInt.h
|
||||||
grTOGL1.o: grTOGL1.c ../tcltk/tclmagic.h ../utils/main.h \
|
grTOGL1.o: grTOGL1.c ../tcltk/tclmagic.h ../utils/main.h \
|
||||||
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
||||||
../database/database.h ../tiles/tile.h ../utils/hash.h ../utils/malloc.h \
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../utils/magsgtty.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../textio/txcommands.h ../utils/signals.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/utils.h ../drc/drc.h ../utils/macros.h ../graphics/grTOGLInt.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/magsgtty.h \
|
||||||
../utils/paths.h ../graphics/grTkCommon.h
|
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
||||||
|
../textio/txcommands.h ../utils/signals.h ../drc/drc.h ../utils/macros.h \
|
||||||
|
../graphics/grTOGLInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||||
grTOGL2.o: grTOGL2.c ../tcltk/tclmagic.h ../utils/magic.h \
|
grTOGL2.o: grTOGL2.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../graphics/glyphs.h \
|
../textio/textio.h ../utils/geometry.h ../graphics/glyphs.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||||
grTOGLInt.h
|
grTOGLInt.h
|
||||||
grTOGL3.o: grTOGL3.c ../tcltk/tclmagic.h ../utils/magic.h \
|
grTOGL3.o: grTOGL3.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/malloc.h ../windows/windows.h \
|
../utils/geometry.h ../utils/malloc.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
../graphics/graphics.h ../graphics/graphicsInt.h ../dbwind/dbwind.h \
|
||||||
../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../graphics/grTOGLInt.h ../graphics/grTkCommon.h ../database/fonts.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../tiles/tile.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../textio/textio.h ../utils/signals.h \
|
||||||
|
../graphics/grTOGLInt.h ../graphics/grTkCommon.h ../database/fonts.h
|
||||||
grTOGL4.o: grTOGL4.c ../tcltk/tclmagic.h ../utils/magic.h \
|
grTOGL4.o: grTOGL4.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/magsgtty.h ../textio/textio.h ../utils/geometry.h \
|
../utils/magsgtty.h ../textio/textio.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||||
|
|
@ -108,6 +126,8 @@ grTOGL5.o: grTOGL5.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
grTkCommon.o: grTkCommon.c ../tcltk/tclmagic.h ../utils/magic.h \
|
grTkCommon.o: grTkCommon.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/styles.h ../utils/geometry.h ../utils/hash.h ../utils/malloc.h \
|
../utils/styles.h ../utils/geometry.h ../utils/hash.h ../utils/malloc.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwtech.h ../graphics/graphics.h \
|
../windows/windows.h ../dbwind/dbwtech.h ../graphics/graphics.h \
|
||||||
../graphics/graphicsInt.h ../dbwind/dbwind.h ../graphics/grTkCommon.h \
|
../graphics/graphicsInt.h ../dbwind/dbwind.h ../graphics/grTkCommon.h \
|
||||||
../graphics/glyphs.h
|
../graphics/glyphs.h
|
||||||
|
|
@ -123,6 +143,8 @@ grOGL3.o: grOGL3.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
||||||
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
||||||
../dbwind/dbwind.h ../database/database.h ../tiles/tile.h \
|
../dbwind/dbwind.h ../database/database.h ../tiles/tile.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../database/fonts.h grOGLInt.h
|
../database/fonts.h grOGLInt.h
|
||||||
grOGL4.o: grOGL4.c ../utils/magic.h ../utils/magsgtty.h \
|
grOGL4.o: grOGL4.c ../utils/magic.h ../utils/magsgtty.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../graphics/graphics.h \
|
../textio/textio.h ../utils/geometry.h ../graphics/graphics.h \
|
||||||
|
|
@ -136,3 +158,32 @@ X11Helper.o: X11Helper.c
|
||||||
grX11thread.o: grX11thread.c ../utils/magic.h ../utils/geometry.h \
|
grX11thread.o: grX11thread.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.h \
|
||||||
grX11Int.h
|
grX11Int.h
|
||||||
|
grTCairo1.o: grTCairo1.c ../tcltk/tclmagic.h ../utils/main.h \
|
||||||
|
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
||||||
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/magsgtty.h \
|
||||||
|
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
||||||
|
../textio/txcommands.h ../utils/signals.h ../drc/drc.h ../utils/macros.h \
|
||||||
|
../graphics/grTCairoInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||||
|
grTCairo2.o: grTCairo2.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
|
../textio/textio.h ../utils/geometry.h ../graphics/glyphs.h \
|
||||||
|
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||||
|
grTCairoInt.h ../textio/txcommands.h
|
||||||
|
grTCairo3.o: grTCairo3.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
|
../utils/geometry.h ../utils/malloc.h ../windows/windows.h \
|
||||||
|
../graphics/graphics.h ../graphics/graphicsInt.h ../dbwind/dbwind.h \
|
||||||
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../textio/textio.h ../utils/signals.h \
|
||||||
|
../graphics/grTCairoInt.h ../graphics/grTkCommon.h ../database/fonts.h
|
||||||
|
grTCairo4.o: grTCairo4.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
|
../utils/magsgtty.h ../textio/textio.h ../utils/geometry.h \
|
||||||
|
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||||
|
../graphics/grTkCommon.h ../textio/txcommands.h grTCairoInt.h
|
||||||
|
grTCairo5.o: grTCairo5.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
|
../utils/styles.h ../utils/hash.h ../textio/textio.h ../utils/geometry.h \
|
||||||
|
../graphics/glyphs.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../graphics/graphicsInt.h grTkCommon.h grTCairoInt.h
|
||||||
|
|
|
||||||
|
|
@ -1,58 +1,76 @@
|
||||||
grouteChan.o: grouteChan.c ../utils/magic.h ../utils/geometry.h \
|
grouteChan.o: grouteChan.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../utils/hash.h ../utils/heap.h ../utils/utils.h \
|
../utils/styles.h ../utils/hash.h ../utils/heap.h ../utils/utils.h \
|
||||||
../tiles/tile.h ../database/database.h ../debug/debug.h ../gcr/gcr.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/geofast.h ../bplane/bplaneInt.h ../debug/debug.h ../gcr/gcr.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
grouteCrss.o: grouteCrss.c ../utils/magic.h ../utils/geometry.h \
|
grouteCrss.o: grouteCrss.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../utils/malloc.h \
|
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../utils/malloc.h \
|
||||||
../debug/debug.h ../tiles/tile.h ../database/database.h ../gcr/gcr.h \
|
../debug/debug.h ../tiles/tile.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../bplane/bplaneInt.h ../gcr/gcr.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
../utils/styles.h
|
../utils/styles.h
|
||||||
grouteDens.o: grouteDens.c ../utils/magic.h ../utils/geometry.h \
|
grouteDens.o: grouteDens.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/netlist.h ../gcr/gcr.h ../router/router.h ../grouter/grouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../grouter/grouteDebug.h ../utils/signals.h ../textio/textio.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/malloc.h ../utils/styles.h ../debug/debug.h
|
../bplane/bplaneInt.h ../utils/netlist.h ../gcr/gcr.h ../router/router.h \
|
||||||
|
../grouter/grouter.h ../grouter/grouteDebug.h ../utils/signals.h \
|
||||||
|
../textio/textio.h ../utils/malloc.h ../utils/styles.h ../debug/debug.h
|
||||||
grouteMain.o: grouteMain.c ../utils/magic.h ../utils/geometry.h \
|
grouteMain.o: grouteMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../utils/hash.h ../utils/heap.h ../utils/utils.h \
|
../utils/styles.h ../utils/hash.h ../utils/heap.h ../utils/utils.h \
|
||||||
../tiles/tile.h ../database/database.h ../debug/debug.h ../gcr/gcr.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/geofast.h ../bplane/bplaneInt.h ../debug/debug.h ../gcr/gcr.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
grouteMult.o: grouteMult.c ../utils/magic.h ../utils/geometry.h \
|
grouteMult.o: grouteMult.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../router/router.h ../gcr/gcr.h ../grouter/grouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../utils/signals.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../textio/textio.h ../utils/malloc.h ../utils/styles.h \
|
../bplane/bplaneInt.h ../router/router.h ../gcr/gcr.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h
|
../grouter/grouter.h ../grouter/grouteDebug.h ../utils/netlist.h \
|
||||||
|
../utils/signals.h ../textio/textio.h ../utils/malloc.h \
|
||||||
|
../utils/styles.h ../windows/windows.h ../dbwind/dbwind.h
|
||||||
grouteMaze.o: grouteMaze.c ../utils/magic.h ../utils/geometry.h \
|
grouteMaze.o: grouteMaze.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../utils/malloc.h \
|
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../utils/malloc.h \
|
||||||
../debug/debug.h ../tiles/tile.h ../database/database.h ../gcr/gcr.h \
|
../debug/debug.h ../tiles/tile.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../bplane/bplaneInt.h ../gcr/gcr.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
../utils/styles.h
|
../utils/styles.h
|
||||||
groutePath.o: groutePath.c ../utils/magic.h ../utils/geometry.h \
|
groutePath.o: groutePath.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../debug/debug.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../debug/debug.h \
|
||||||
../database/database.h ../gcr/gcr.h ../windows/windows.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../gcr/gcr.h ../windows/windows.h ../utils/main.h \
|
||||||
../dbwind/dbwind.h ../utils/signals.h ../router/router.h \
|
../dbwind/dbwind.h ../utils/signals.h ../router/router.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h \
|
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
groutePen.o: groutePen.c ../utils/magic.h ../utils/geometry.h \
|
groutePen.o: groutePen.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/netlist.h ../gcr/gcr.h ../router/router.h ../grouter/grouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../grouter/grouteDebug.h ../utils/signals.h ../textio/textio.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/malloc.h ../utils/styles.h ../utils/list.h
|
../bplane/bplaneInt.h ../utils/netlist.h ../gcr/gcr.h ../router/router.h \
|
||||||
|
../grouter/grouter.h ../grouter/grouteDebug.h ../utils/signals.h \
|
||||||
|
../textio/textio.h ../utils/malloc.h ../utils/styles.h ../utils/list.h
|
||||||
grouteTest.o: grouteTest.c ../utils/magic.h ../utils/geometry.h \
|
grouteTest.o: grouteTest.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/signals.h ../textio/textio.h ../debug/debug.h ../gcr/gcr.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../textio/txcommands.h ../utils/main.h ../utils/utils.h \
|
../debug/debug.h ../gcr/gcr.h ../router/router.h ../grouter/grouter.h \
|
||||||
|
../grouter/grouteDebug.h ../graphics/graphics.h ../windows/windows.h \
|
||||||
|
../dbwind/dbwind.h ../textio/txcommands.h ../utils/main.h \
|
||||||
../commands/commands.h ../utils/malloc.h ../utils/styles.h \
|
../commands/commands.h ../utils/malloc.h ../utils/styles.h \
|
||||||
../utils/netlist.h
|
../utils/netlist.h
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,45 @@
|
||||||
irCommand.o: irCommand.c ../tcltk/tclmagic.h ../utils/magic.h \
|
irCommand.o: irCommand.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/hash.h ../tiles/tile.h \
|
../utils/geometry.h ../utils/hash.h ../tiles/tile.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
||||||
../utils/utils.h ../commands/commands.h ../utils/styles.h \
|
../commands/commands.h ../utils/styles.h ../utils/malloc.h \
|
||||||
../utils/malloc.h ../utils/list.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../mzrouter/mzrouter.h ../irouter/irouter.h \
|
||||||
../irouter/irouter.h ../irouter/irInternal.h ../irouter/irDebug.h
|
../irouter/irInternal.h ../irouter/irDebug.h
|
||||||
irMain.o: irMain.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
irMain.o: irMain.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../drc/drc.h ../select/select.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/signals.h ../textio/textio.h ../windows/windows.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../debug/debug.h ../utils/undo.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/malloc.h ../utils/list.h \
|
../select/select.h ../utils/signals.h ../textio/textio.h \
|
||||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
../mzrouter/mzrouter.h ../irouter/irDebug.h
|
../debug/debug.h ../utils/undo.h ../textio/txcommands.h \
|
||||||
|
../utils/malloc.h ../utils/list.h ../mzrouter/mzrouter.h \
|
||||||
|
../irouter/irouter.h ../irouter/irInternal.h ../mzrouter/mzrouter.h \
|
||||||
|
../irouter/irDebug.h
|
||||||
irRoute.o: irRoute.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
irRoute.o: irRoute.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../tiles/tile.h ../database/database.h ../drc/drc.h ../textio/textio.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h ../debug/debug.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/undo.h ../utils/signals.h ../utils/malloc.h ../utils/list.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h ../drc/drc.h \
|
||||||
../utils/geofast.h ../utils/touchingtypes.h ../select/select.h \
|
../textio/textio.h ../windows/windows.h ../utils/main.h \
|
||||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
../dbwind/dbwind.h ../debug/debug.h ../utils/undo.h ../utils/signals.h \
|
||||||
../mzrouter/mzrouter.h ../irouter/irDebug.h
|
../utils/malloc.h ../utils/list.h ../utils/touchingtypes.h \
|
||||||
|
../select/select.h ../mzrouter/mzrouter.h ../irouter/irouter.h \
|
||||||
|
../irouter/irInternal.h ../mzrouter/mzrouter.h ../irouter/irDebug.h
|
||||||
irTestCmd.o: irTestCmd.c ../utils/magic.h ../utils/geometry.h \
|
irTestCmd.o: irTestCmd.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/signals.h ../textio/textio.h ../irouter/irouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/utils.h ../commands/commands.h ../utils/styles.h \
|
../irouter/irouter.h ../graphics/graphics.h ../windows/windows.h \
|
||||||
|
../dbwind/dbwind.h ../dbwind/dbwtech.h ../textio/txcommands.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../utils/styles.h \
|
||||||
../utils/malloc.h ../utils/list.h ../mzrouter/mzrouter.h \
|
../utils/malloc.h ../utils/list.h ../mzrouter/mzrouter.h \
|
||||||
../irouter/irInternal.h ../mzrouter/mzrouter.h ../irouter/irDebug.h
|
../irouter/irInternal.h ../mzrouter/mzrouter.h ../irouter/irDebug.h
|
||||||
irUtils.o: irUtils.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
irUtils.o: irUtils.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/list.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../irouter/irDebug.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/list.h ../mzrouter/mzrouter.h ../irouter/irouter.h \
|
||||||
|
../irouter/irInternal.h ../irouter/irDebug.h
|
||||||
|
|
|
||||||
35
lef/Depend
35
lef/Depend
|
|
@ -1,27 +1,40 @@
|
||||||
lefCmd.o: lefCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
lefCmd.o: lefCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../textio/txcommands.h ../commands/commands.h
|
../utils/main.h ../textio/txcommands.h ../commands/commands.h
|
||||||
lefTech.o: lefTech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
lefTech.o: lefTech.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../lef/lefInt.h ../drc/drc.h
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../lef/lefInt.h ../drc/drc.h
|
||||||
lefWrite.o: lefWrite.c ../tcltk/tclmagic.h ../utils/magic.h \
|
lefWrite.o: lefWrite.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../utils/utils.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/malloc.h ../utils/stack.h ../utils/signals.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../graphics/graphics.h \
|
../bplane/bplaneInt.h ../utils/tech.h ../utils/malloc.h ../utils/stack.h \
|
||||||
../utils/main.h ../utils/undo.h ../cif/cif.h ../lef/lefInt.h
|
../utils/signals.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../graphics/graphics.h ../utils/main.h ../utils/undo.h ../cif/cif.h \
|
||||||
|
../lef/lefInt.h
|
||||||
defWrite.o: defWrite.c ../tcltk/tclmagic.h ../utils/magic.h \
|
defWrite.o: defWrite.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../utils/malloc.h ../utils/undo.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../utils/malloc.h ../utils/undo.h \
|
||||||
../cif/cif.h ../extflat/extflat.h ../lef/lefInt.h ../drc/drc.h
|
../cif/cif.h ../extflat/extflat.h ../lef/lefInt.h ../drc/drc.h
|
||||||
lefRead.o: lefRead.c ../tcltk/tclmagic.h ../utils/magic.h \
|
lefRead.o: lefRead.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
||||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
../utils/utils.h ../database/database.h ../bplane/bplane.h \
|
||||||
../dbwind/dbwind.h ../utils/malloc.h ../textio/textio.h ../cif/cif.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../cif/CIFint.h ../lef/lefInt.h
|
../utils/geofast.h ../bplane/bplaneInt.h ../windows/windows.h \
|
||||||
|
../graphics/graphics.h ../dbwind/dbwind.h ../utils/malloc.h \
|
||||||
|
../textio/textio.h ../cif/cif.h ../cif/CIFint.h ../cif/CIFread.h \
|
||||||
|
../lef/lefInt.h
|
||||||
defRead.o: defRead.c ../tcltk/tclmagic.h ../utils/magic.h \
|
defRead.o: defRead.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/malloc.h ../graphics/graphics.h ../utils/main.h ../cif/cif.h \
|
../utils/malloc.h ../graphics/graphics.h ../utils/main.h ../cif/cif.h \
|
||||||
../lef/lefInt.h
|
../lef/lefInt.h
|
||||||
|
|
|
||||||
460
lef/defRead.c
460
lef/defRead.c
|
|
@ -53,6 +53,25 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
*------------------------------------------------------------
|
*------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
enum def_netspecial_keys {DEF_SPECNET_SHAPE = 0, DEF_SPECNET_STYLE,
|
||||||
|
DEF_SPECNET_USE, DEF_SPECNET_VOLTAGE, DEF_SPECNET_FIXEDBUMP,
|
||||||
|
DEF_SPECNET_ORIGINAL, DEF_SPECNET_PATTERN, DEF_SPECNET_ESTCAP,
|
||||||
|
DEF_SPECNET_WEIGHT, DEF_SPECNET_PROPERTY};
|
||||||
|
|
||||||
|
enum def_netspecial_shape_keys {
|
||||||
|
DEF_SPECNET_SHAPE_RING = 0,
|
||||||
|
DEF_SPECNET_SHAPE_PADRING,
|
||||||
|
DEF_SPECNET_SHAPE_BLOCKRING,
|
||||||
|
DEF_SPECNET_SHAPE_STRIPE,
|
||||||
|
DEF_SPECNET_SHAPE_FOLLOWPIN,
|
||||||
|
DEF_SPECNET_SHAPE_IOWIRE,
|
||||||
|
DEF_SPECNET_SHAPE_COREWIRE,
|
||||||
|
DEF_SPECNET_SHAPE_BLOCKWIRE,
|
||||||
|
DEF_SPECNET_SHAPE_BLOCKAGEWIRE,
|
||||||
|
DEF_SPECNET_SHAPE_FILLWIRE,
|
||||||
|
DEF_SPECNET_SHAPE_FILLWIREOPC,
|
||||||
|
DEF_SPECNET_SHAPE_DRCFILL};
|
||||||
|
|
||||||
char *
|
char *
|
||||||
DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
CellDef *rootDef; /* Cell to paint */
|
CellDef *rootDef; /* Cell to paint */
|
||||||
|
|
@ -67,11 +86,43 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
bool valid = FALSE; /* is there a valid reference point? */
|
bool valid = FALSE; /* is there a valid reference point? */
|
||||||
bool initial = TRUE;
|
bool initial = TRUE;
|
||||||
Rect locarea;
|
Rect locarea;
|
||||||
|
int extend, lextend, hextend;
|
||||||
float x, y, z, w;
|
float x, y, z, w;
|
||||||
int routeWidth, paintWidth, saveWidth;
|
int routeWidth, paintWidth, saveWidth;
|
||||||
TileType routeLayer, paintLayer;
|
TileType routeLayer, paintLayer;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
lefLayer *lefl;
|
lefLayer *lefl;
|
||||||
|
int keyword;
|
||||||
|
|
||||||
|
static char *specnet_keys[] = {
|
||||||
|
"SHAPE",
|
||||||
|
"STYLE",
|
||||||
|
"USE",
|
||||||
|
"VOLTAGE",
|
||||||
|
"FIXEDBUMP",
|
||||||
|
"ORIGINAL",
|
||||||
|
"PATTERN",
|
||||||
|
"ESTCAP",
|
||||||
|
"WEIGHT",
|
||||||
|
"PROPERTY",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *specnet_shape_keys[] = {
|
||||||
|
"RING",
|
||||||
|
"PADRING",
|
||||||
|
"BLOCKRING",
|
||||||
|
"STRIPE",
|
||||||
|
"FOLLOWPIN",
|
||||||
|
"IOWIRE",
|
||||||
|
"COREWIRE",
|
||||||
|
"BLOCKWIRE",
|
||||||
|
"BLOCKAGEWIRE",
|
||||||
|
"FILLWIRE",
|
||||||
|
"FILLWIREOPC",
|
||||||
|
"DRCFILL",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
while (initial || (token = LefNextToken(f, TRUE)) != NULL)
|
while (initial || (token = LefNextToken(f, TRUE)) != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -105,7 +156,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
|
|
||||||
if (routeLayer < 0)
|
if (routeLayer < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown layer type \"%s\" for NEW route\n", token);
|
LefError(DEF_ERROR, "Unknown layer type \"%s\" for NEW route\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
paintLayer = routeLayer;
|
paintLayer = routeLayer;
|
||||||
|
|
@ -116,7 +167,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (sscanf(token, "%f", &w) != 1)
|
if (sscanf(token, "%f", &w) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad width in special net\n");
|
LefError(DEF_ERROR, "Bad width in special net\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (w != 0)
|
if (w != 0)
|
||||||
|
|
@ -130,6 +181,141 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
paintWidth = (lefl) ? lefl->info.route.width :
|
paintWidth = (lefl) ? lefl->info.route.width :
|
||||||
DEFAULT_WIDTH * DBLambda[1] / DBLambda[0];
|
DEFAULT_WIDTH * DBLambda[1] / DBLambda[0];
|
||||||
}
|
}
|
||||||
|
else if ((*token == '+') && (special == TRUE))
|
||||||
|
{
|
||||||
|
int netstyle;
|
||||||
|
|
||||||
|
/* Check for SHAPE, STYLE, or USE keywords */
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
keyword = Lookup(token, specnet_keys);
|
||||||
|
if (keyword < 0)
|
||||||
|
{
|
||||||
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in SPECIALNET "
|
||||||
|
"definition; ignoring.\n", token);
|
||||||
|
LefEndStatement(f);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
switch(keyword)
|
||||||
|
{
|
||||||
|
case DEF_SPECNET_STYLE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &netstyle) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_INFO, "Net style \"%s\" in SPECIALNET "
|
||||||
|
"definition is not a number; ignoring.\n", token);
|
||||||
|
LefEndStatement(f);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DEF_SPECNET_SHAPE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
keyword = Lookup(token, specnet_shape_keys);
|
||||||
|
if (keyword < 0)
|
||||||
|
{
|
||||||
|
LefError(DEF_INFO, "Unknown SHAPE \"%s\" in SPECIALNET "
|
||||||
|
"definition; ignoring.\n", token);
|
||||||
|
LefEndStatement(f);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DEF_SPECNET_PROPERTY:
|
||||||
|
/* Ignore except to absorb the next two tokens. */
|
||||||
|
token = LefNextToken(f, TRUE); /* Drop through */
|
||||||
|
|
||||||
|
case DEF_SPECNET_USE:
|
||||||
|
case DEF_SPECNET_VOLTAGE:
|
||||||
|
case DEF_SPECNET_ORIGINAL:
|
||||||
|
case DEF_SPECNET_PATTERN:
|
||||||
|
case DEF_SPECNET_ESTCAP:
|
||||||
|
case DEF_SPECNET_WEIGHT:
|
||||||
|
/* Ignore except to absorb the next token. */
|
||||||
|
token = LefNextToken(f, TRUE); /* Drop through */
|
||||||
|
|
||||||
|
case DEF_SPECNET_FIXEDBUMP:
|
||||||
|
/* Ignore this keyword */
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!strcmp(token, "RECT"))
|
||||||
|
{
|
||||||
|
/* NOTE: Use of "RECT" in NETS is not in the LEF/DEF spec. */
|
||||||
|
/* However, its use has been seen. So "special" is not */
|
||||||
|
/* checked here. */
|
||||||
|
|
||||||
|
/* The rectangle coordinates are relative to the current */
|
||||||
|
/* reference point, not absolute. */
|
||||||
|
|
||||||
|
newRoute = (LinkedRect *)mallocMagic(sizeof(LinkedRect));
|
||||||
|
|
||||||
|
/* Read an (llx lly urx ury) rectangle */
|
||||||
|
token = LefNextToken(f, TRUE); /* read llx */
|
||||||
|
if (*token == '(') token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%f", &x) == 1)
|
||||||
|
{
|
||||||
|
locarea.r_xbot = (refp.p_x / 2) + (int)roundf(x / oscale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Cannot parse X coordinate in RECT.\n");
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
token = LefNextToken(f, TRUE); /* read lly */
|
||||||
|
if (sscanf(token, "%f", &y) == 1)
|
||||||
|
{
|
||||||
|
locarea.r_ybot = (refp.p_y / 2) + (int)roundf(y / oscale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Cannot parse Y coordinate in RECT.\n");
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
token = LefNextToken(f, TRUE); /* read urx */
|
||||||
|
if (sscanf(token, "%f", &x) == 1)
|
||||||
|
{
|
||||||
|
locarea.r_xtop = (refp.p_x / 2) + (int)roundf(x / oscale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Cannot parse X coordinate in RECT.\n");
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE); /* read ury */
|
||||||
|
if (sscanf(token, "%f", &y) == 1)
|
||||||
|
{
|
||||||
|
locarea.r_ytop = (refp.p_y / 2) + (int)roundf(y / oscale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Cannot parse Y coordinate in RECT.\n");
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE); /* read closing parens */
|
||||||
|
if (*token != ')')
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Bad coordinates in RECT.\n");
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
GeoCanonicalRect(&locarea, &newRoute->r_r);
|
||||||
|
}
|
||||||
|
else if (!strcmp(token, "POLYGON"))
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Route has POLYGON entries, this is not handled!\n",
|
||||||
|
token);
|
||||||
|
token = LefNextToken(f, TRUE); /* read opening parens */
|
||||||
|
goto endCoord;
|
||||||
|
}
|
||||||
|
else if (!strcmp(token, "VIRTUAL"))
|
||||||
|
{
|
||||||
|
/* Is this a LEF 5.8 thing? Not sure if it should be ignored! */
|
||||||
|
/* Should the whole wire leg be ignored? */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
else if (*token != '(') /* via name */
|
else if (*token != '(') /* via name */
|
||||||
{
|
{
|
||||||
/* A '+' or ';' record ends the route */
|
/* A '+' or ';' record ends the route */
|
||||||
|
|
@ -138,7 +324,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
|
|
||||||
else if (valid == FALSE)
|
else if (valid == FALSE)
|
||||||
{
|
{
|
||||||
LefError("Route has via name \"%s\" but no points!\n", token);
|
LefError(DEF_ERROR, "Route has via name \"%s\" but no points!\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
he = HashLookOnly(&LefInfo, token);
|
he = HashLookOnly(&LefInfo, token);
|
||||||
|
|
@ -197,7 +383,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else if ((paintLayer = DBTechNameType(LefLower(token))) >= 0)
|
else if ((paintLayer = DBTechNameType(LefLower(token))) >= 0)
|
||||||
{
|
{
|
||||||
LefError("Error: Via \"%s\" named but undefined.\n", token);
|
LefError(DEF_ERROR, "Error: Via \"%s\" named but undefined.\n",
|
||||||
|
token);
|
||||||
newRoute->r_r.r_xbot = refp.p_x - paintWidth;
|
newRoute->r_r.r_xbot = refp.p_x - paintWidth;
|
||||||
newRoute->r_r.r_ybot = refp.p_y - paintWidth;
|
newRoute->r_r.r_ybot = refp.p_y - paintWidth;
|
||||||
newRoute->r_r.r_xtop = refp.p_x + paintWidth;
|
newRoute->r_r.r_xtop = refp.p_x + paintWidth;
|
||||||
|
|
@ -209,7 +396,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
newRoute->r_r.r_ytop >>= 1;
|
newRoute->r_r.r_ytop >>= 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LefError("Via name \"%s\" unknown in route.\n", token);
|
LefError(DEF_ERROR, "Via name \"%s\" unknown in route.\n", token);
|
||||||
|
|
||||||
/* After the via, the new route layer becomes whatever */
|
/* After the via, the new route layer becomes whatever */
|
||||||
/* residue of the via was NOT the previous route layer. */
|
/* residue of the via was NOT the previous route layer. */
|
||||||
|
|
@ -244,7 +431,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LefError("Via name \"%s\" unknown in route.\n", token);
|
LefError(DEF_ERROR, "Via name \"%s\" unknown in route.\n", token);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -254,14 +441,15 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
/* Record current reference point */
|
/* Record current reference point */
|
||||||
locarea.r_xbot = refp.p_x;
|
locarea.r_xbot = refp.p_x;
|
||||||
locarea.r_ybot = refp.p_y;
|
locarea.r_ybot = refp.p_y;
|
||||||
|
lextend = extend;
|
||||||
|
|
||||||
/* Read an (X Y) point */
|
/* Read an (X Y [extend]) point */
|
||||||
token = LefNextToken(f, TRUE); /* read X */
|
token = LefNextToken(f, TRUE); /* read X */
|
||||||
if (*token == '*')
|
if (*token == '*')
|
||||||
{
|
{
|
||||||
if (valid == FALSE)
|
if (valid == FALSE)
|
||||||
{
|
{
|
||||||
LefError("No reference point for \"*\" wildcard\n");
|
LefError(DEF_ERROR, "No reference point for \"*\" wildcard\n");
|
||||||
goto endCoord;
|
goto endCoord;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -271,7 +459,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LefError("Cannot parse X coordinate.\n");
|
LefError(DEF_ERROR, "Cannot parse X coordinate.\n");
|
||||||
goto endCoord;
|
goto endCoord;
|
||||||
}
|
}
|
||||||
token = LefNextToken(f, TRUE); /* read Y */
|
token = LefNextToken(f, TRUE); /* read Y */
|
||||||
|
|
@ -279,7 +467,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
{
|
{
|
||||||
if (valid == FALSE)
|
if (valid == FALSE)
|
||||||
{
|
{
|
||||||
LefError("No reference point for \"*\" wildcard\n");
|
LefError(DEF_ERROR, "No reference point for \"*\" wildcard\n");
|
||||||
freeMagic(newRoute);
|
freeMagic(newRoute);
|
||||||
newRoute = NULL;
|
newRoute = NULL;
|
||||||
goto endCoord;
|
goto endCoord;
|
||||||
|
|
@ -291,7 +479,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LefError("Cannot parse Y coordinate.\n");
|
LefError(DEF_ERROR, "Cannot parse Y coordinate.\n");
|
||||||
goto endCoord;
|
goto endCoord;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -300,19 +488,19 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
/* is apparently how everyone interprets it, and is true for */
|
/* is apparently how everyone interprets it, and is true for */
|
||||||
/* 5.6 spec. */
|
/* 5.6 spec. */
|
||||||
|
|
||||||
z = (special) ? 0 : paintWidth;
|
extend = (special) ? 0 : paintWidth;
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (*token != ')')
|
if (*token != ')')
|
||||||
{
|
{
|
||||||
/* non-default route extension */
|
/* non-default route extension */
|
||||||
if (sscanf(token, "%f", &z) != 1)
|
if (sscanf(token, "%f", &z) != 1)
|
||||||
LefError("Can't parse route extension value.\n");
|
LefError(DEF_ERROR, "Can't parse route extension value.\n");
|
||||||
|
|
||||||
/* all values will be divided by 2, so we need */
|
/* all values will be divided by 2, so we need */
|
||||||
/* to multiply up by 2 now. */
|
/* to multiply up by 2 now. */
|
||||||
|
|
||||||
else
|
else
|
||||||
z *= 2;
|
extend = (int)roundf((2 * z) / oscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Indicate that we have a valid reference point */
|
/* Indicate that we have a valid reference point */
|
||||||
|
|
@ -326,9 +514,10 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
/* Skip over nonmanhattan segments, reset the reference */
|
/* Skip over nonmanhattan segments, reset the reference */
|
||||||
/* point, and output a warning. */
|
/* point, and output a warning. */
|
||||||
|
|
||||||
LefError("Can't deal with nonmanhattan geometry in route.\n");
|
LefError(DEF_ERROR, "Can't deal with nonmanhattan geometry in route.\n");
|
||||||
locarea.r_xbot = refp.p_x;
|
locarea.r_xbot = refp.p_x;
|
||||||
locarea.r_ybot = refp.p_y;
|
locarea.r_ybot = refp.p_y;
|
||||||
|
lextend = extend;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -341,6 +530,19 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
locarea.r_xtop = refp.p_x;
|
locarea.r_xtop = refp.p_x;
|
||||||
locarea.r_ytop = refp.p_y;
|
locarea.r_ytop = refp.p_y;
|
||||||
|
|
||||||
|
/* Change route segment to a canonical rectangle. If */
|
||||||
|
/* the route is flipped relative to canonical coords, */
|
||||||
|
/* then the wire extentions have to be swapped as well. */
|
||||||
|
|
||||||
|
if ((locarea.r_xtop < locarea.r_xbot) ||
|
||||||
|
(locarea.r_ytop < locarea.r_ybot))
|
||||||
|
{
|
||||||
|
hextend = lextend;
|
||||||
|
lextend = extend;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hextend = extend;
|
||||||
|
|
||||||
GeoCanonicalRect(&locarea, &newRoute->r_r);
|
GeoCanonicalRect(&locarea, &newRoute->r_r);
|
||||||
|
|
||||||
if (newRoute->r_r.r_xbot == newRoute->r_r.r_xtop)
|
if (newRoute->r_r.r_xbot == newRoute->r_r.r_xtop)
|
||||||
|
|
@ -350,8 +552,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newRoute->r_r.r_xbot -= z;
|
newRoute->r_r.r_xbot -= lextend;
|
||||||
newRoute->r_r.r_xtop += z;
|
newRoute->r_r.r_xtop += hextend;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newRoute->r_r.r_ybot == newRoute->r_r.r_ytop)
|
if (newRoute->r_r.r_ybot == newRoute->r_r.r_ytop)
|
||||||
|
|
@ -361,8 +563,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newRoute->r_r.r_ybot -= z;
|
newRoute->r_r.r_ybot -= lextend;
|
||||||
newRoute->r_r.r_ytop += z;
|
newRoute->r_r.r_ytop += hextend;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we don't have integer units here, we should */
|
/* If we don't have integer units here, we should */
|
||||||
|
|
@ -471,7 +673,7 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
||||||
keyword = Lookup(token, net_keys);
|
keyword = Lookup(token, net_keys);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in NET "
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in NET "
|
||||||
"definition; ignoring.\n", token);
|
"definition; ignoring.\n", token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -508,14 +710,16 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
||||||
subkey = Lookup(token, net_property_keys);
|
subkey = Lookup(token, net_property_keys);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown net property \"%s\" in "
|
LefError(DEF_INFO, "Unknown net property \"%s\" in "
|
||||||
"NET definition; ignoring.\n", token);
|
"NET definition; ignoring.\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (subkey)
|
switch (subkey)
|
||||||
{
|
{
|
||||||
case DEF_NETPROP_USE:
|
case DEF_NETPROP_USE:
|
||||||
/* Presently, we ignore this */
|
/* Presently, we ignore this, except to */
|
||||||
|
/* absorb the following value. */
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
break;
|
break;
|
||||||
case DEF_NETPROP_ROUTED:
|
case DEF_NETPROP_ROUTED:
|
||||||
case DEF_NETPROP_FIXED:
|
case DEF_NETPROP_FIXED:
|
||||||
|
|
@ -530,7 +734,7 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
||||||
case DEF_NET_END:
|
case DEF_NET_END:
|
||||||
if (!LefParseEndStatement(f, sname))
|
if (!LefParseEndStatement(f, sname))
|
||||||
{
|
{
|
||||||
LefError("Net END statement missing.\n");
|
LefError(DEF_ERROR, "Net END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -542,7 +746,7 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
||||||
TxPrintf(" Processed %d%s nets total.\n", processed,
|
TxPrintf(" Processed %d%s nets total.\n", processed,
|
||||||
(special) ? " special" : "");
|
(special) ? " special" : "");
|
||||||
else
|
else
|
||||||
LefError("Warning: Number of nets read (%d) does not match "
|
LefError(DEF_WARNING, "Number of nets read (%d) does not match "
|
||||||
"the number declared (%d).\n", processed, total);
|
"the number declared (%d).\n", processed, total);
|
||||||
|
|
||||||
freeMagic((char *)defLayerMap);
|
freeMagic((char *)defLayerMap);
|
||||||
|
|
@ -600,7 +804,7 @@ DefReadLocation(use, f, oscale, tptr)
|
||||||
keyword = Lookup(token, orientations);
|
keyword = Lookup(token, orientations);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown macro orientation \"%s\".\n", token);
|
LefError(DEF_ERROR, "Unknown macro orientation \"%s\".\n", token);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -668,7 +872,7 @@ DefReadLocation(use, f, oscale, tptr)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
parse_error:
|
parse_error:
|
||||||
LefError("Cannot parse location: must be ( X Y ) orient\n");
|
LefError(DEF_ERROR, "Cannot parse location: must be ( X Y ) orient\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -692,7 +896,8 @@ enum def_pins_keys {DEF_PINS_START = 0, DEF_PINS_END};
|
||||||
enum def_pins_prop_keys {
|
enum def_pins_prop_keys {
|
||||||
DEF_PINS_PROP_NET = 0, DEF_PINS_PROP_DIR,
|
DEF_PINS_PROP_NET = 0, DEF_PINS_PROP_DIR,
|
||||||
DEF_PINS_PROP_LAYER, DEF_PINS_PROP_USE,
|
DEF_PINS_PROP_LAYER, DEF_PINS_PROP_USE,
|
||||||
DEF_PINS_PROP_PLACED, DEF_PINS_PROP_FIXED};
|
DEF_PINS_PROP_PLACED, DEF_PINS_PROP_FIXED,
|
||||||
|
DEF_PINS_PROP_PORT, DEF_PINS_PROP_SPECIAL};
|
||||||
|
|
||||||
void
|
void
|
||||||
DefReadPins(f, rootDef, sname, oscale, total)
|
DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
|
|
@ -713,6 +918,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
Transform t;
|
Transform t;
|
||||||
lefLayer *lefl;
|
lefLayer *lefl;
|
||||||
bool pending = FALSE;
|
bool pending = FALSE;
|
||||||
|
bool hasports = FALSE;
|
||||||
|
|
||||||
static char *pin_keys[] = {
|
static char *pin_keys[] = {
|
||||||
"-",
|
"-",
|
||||||
|
|
@ -727,6 +933,8 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
"USE",
|
"USE",
|
||||||
"PLACED",
|
"PLACED",
|
||||||
"FIXED",
|
"FIXED",
|
||||||
|
"PORT",
|
||||||
|
"SPECIAL",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -755,7 +963,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
|
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in PINS "
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in PINS "
|
||||||
"definition; ignoring.\n", token);
|
"definition; ignoring.\n", token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -763,13 +971,14 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
switch (keyword)
|
switch (keyword)
|
||||||
{
|
{
|
||||||
case DEF_PINS_START: /* "-" keyword */
|
case DEF_PINS_START: /* "-" keyword */
|
||||||
|
hasports = FALSE;
|
||||||
|
|
||||||
// Flag an error if a pin was waiting on a layer
|
// Flag an error if a pin was waiting on a layer
|
||||||
// specification that was never given.
|
// specification that was never given.
|
||||||
|
|
||||||
if (pending)
|
if (pending)
|
||||||
{
|
{
|
||||||
LefError("Pin specified without layer, was not placed.\n");
|
LefError(DEF_ERROR, "Pin specified without layer, was not placed.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the record of the number of pins */
|
/* Update the record of the number of pins */
|
||||||
|
|
@ -781,7 +990,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (sscanf(token, "%2047s", pinname) != 1)
|
if (sscanf(token, "%2047s", pinname) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad pin statement: Need pin name\n");
|
LefError(DEF_ERROR, "Bad pin statement: Need pin name\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -799,12 +1008,24 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
subkey = Lookup(token, pin_property_keys);
|
subkey = Lookup(token, pin_property_keys);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown pin property \"%s\" in "
|
LefError(DEF_INFO, "Unknown pin property \"%s\" in "
|
||||||
"PINS definition; ignoring.\n", token);
|
"PINS definition; ignoring.\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (subkey)
|
switch (subkey)
|
||||||
{
|
{
|
||||||
|
case DEF_PINS_PROP_SPECIAL:
|
||||||
|
/* Ignore this */
|
||||||
|
break;
|
||||||
|
case DEF_PINS_PROP_PORT:
|
||||||
|
/* Ignore this, except that each port adds to */
|
||||||
|
/* the count of total pins processed. Note */
|
||||||
|
/* that since "processed" is incremented before */
|
||||||
|
/* the first PORT is seen, then "processed" */
|
||||||
|
/* should not be incremented until the 2nd PORT */
|
||||||
|
if (hasports) processed++;
|
||||||
|
hasports = TRUE;
|
||||||
|
break;
|
||||||
case DEF_PINS_PROP_USE:
|
case DEF_PINS_PROP_USE:
|
||||||
case DEF_PINS_PROP_NET:
|
case DEF_PINS_PROP_NET:
|
||||||
/* Get the net name, but ignore it */
|
/* Get the net name, but ignore it */
|
||||||
|
|
@ -814,7 +1035,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
subkey = Lookup(token, pin_classes);
|
subkey = Lookup(token, pin_classes);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
LefError("Unknown pin class\n");
|
LefError(DEF_ERROR, "Unknown pin class\n");
|
||||||
else
|
else
|
||||||
pinDir = lef_class_to_bitmask[subkey];
|
pinDir = lef_class_to_bitmask[subkey];
|
||||||
break;
|
break;
|
||||||
|
|
@ -869,7 +1090,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
case DEF_PINS_END:
|
case DEF_PINS_END:
|
||||||
if (!LefParseEndStatement(f, sname))
|
if (!LefParseEndStatement(f, sname))
|
||||||
{
|
{
|
||||||
LefError("Pins END statement missing.\n");
|
LefError(DEF_ERROR, "Pins END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -880,7 +1101,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
if (processed == total)
|
if (processed == total)
|
||||||
TxPrintf(" Processed %d pins total.\n", processed);
|
TxPrintf(" Processed %d pins total.\n", processed);
|
||||||
else
|
else
|
||||||
LefError("Warning: Number of pins read (%d) does not match "
|
LefError(DEF_WARNING, "Number of pins read (%d) does not match "
|
||||||
"the number declared (%d).\n", processed, total);
|
"the number declared (%d).\n", processed, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -904,7 +1125,10 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
||||||
|
|
||||||
enum def_vias_keys {DEF_VIAS_START = 0, DEF_VIAS_END};
|
enum def_vias_keys {DEF_VIAS_START = 0, DEF_VIAS_END};
|
||||||
enum def_vias_prop_keys {
|
enum def_vias_prop_keys {
|
||||||
DEF_VIAS_PROP_RECT = 0};
|
DEF_VIAS_PROP_RECT = 0, DEF_VIAS_PROP_VIARULE,
|
||||||
|
DEF_VIAS_PROP_CUTSIZE, DEF_VIAS_PROP_LAYERS,
|
||||||
|
DEF_VIAS_PROP_CUTSPACING, DEF_VIAS_PROP_ENCLOSURE,
|
||||||
|
DEF_VIAS_PROP_ROWCOL};
|
||||||
|
|
||||||
void
|
void
|
||||||
DefReadVias(f, sname, oscale, total)
|
DefReadVias(f, sname, oscale, total)
|
||||||
|
|
@ -922,6 +1146,13 @@ DefReadVias(f, sname, oscale, total)
|
||||||
lefLayer *lefl;
|
lefLayer *lefl;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
|
/* For generated vias */
|
||||||
|
bool generated = FALSE;
|
||||||
|
int sizex, sizey, spacex, spacey;
|
||||||
|
int encbx, encby, enctx, encty;
|
||||||
|
int rows = 1, cols = 1;
|
||||||
|
TileType tlayer, clayer, blayer;
|
||||||
|
|
||||||
static char *via_keys[] = {
|
static char *via_keys[] = {
|
||||||
"-",
|
"-",
|
||||||
"END",
|
"END",
|
||||||
|
|
@ -930,6 +1161,12 @@ DefReadVias(f, sname, oscale, total)
|
||||||
|
|
||||||
static char *via_property_keys[] = {
|
static char *via_property_keys[] = {
|
||||||
"RECT",
|
"RECT",
|
||||||
|
"VIARULE",
|
||||||
|
"CUTSIZE",
|
||||||
|
"LAYERS",
|
||||||
|
"CUTSPACING",
|
||||||
|
"ENCLOSURE",
|
||||||
|
"ROWCOL",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -939,7 +1176,7 @@ DefReadVias(f, sname, oscale, total)
|
||||||
|
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in VIAS "
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in VIAS "
|
||||||
"definition; ignoring.\n", token);
|
"definition; ignoring.\n", token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -957,7 +1194,7 @@ DefReadVias(f, sname, oscale, total)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (sscanf(token, "%2047s", vianame) != 1)
|
if (sscanf(token, "%2047s", vianame) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad via statement: Need via name\n");
|
LefError(DEF_ERROR, "Bad via statement: Need via name\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -977,7 +1214,7 @@ DefReadVias(f, sname, oscale, total)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LefError("Warning: Composite via \"%s\" redefined.\n", vianame);
|
LefError(DEF_WARNING, "Composite via \"%s\" redefined.\n", vianame);
|
||||||
lefl = LefRedefined(lefl, vianame);
|
lefl = LefRedefined(lefl, vianame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -986,14 +1223,24 @@ DefReadVias(f, sname, oscale, total)
|
||||||
|
|
||||||
while ((token = LefNextToken(f, TRUE)) != NULL)
|
while ((token = LefNextToken(f, TRUE)) != NULL)
|
||||||
{
|
{
|
||||||
if (*token == ';') break;
|
if (*token == ';') {
|
||||||
|
if (generated == TRUE) {
|
||||||
|
/* Complete the generated via */
|
||||||
|
LefGenViaGeometry(f, lefl,
|
||||||
|
sizex, sizey, spacex, spacey,
|
||||||
|
encbx, encby, enctx, encty,
|
||||||
|
rows, cols, tlayer, clayer, blayer,
|
||||||
|
oscale);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (*token != '+') continue;
|
if (*token != '+') continue;
|
||||||
|
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
subkey = Lookup(token, via_property_keys);
|
subkey = Lookup(token, via_property_keys);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown via property \"%s\" in "
|
LefError(DEF_INFO, "Unknown via property \"%s\" in "
|
||||||
"VIAS definition; ignoring.\n", token);
|
"VIAS definition; ignoring.\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1003,6 +1250,90 @@ DefReadVias(f, sname, oscale, total)
|
||||||
curlayer = LefReadLayer(f, FALSE);
|
curlayer = LefReadLayer(f, FALSE);
|
||||||
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DEF_VIAS_PROP_VIARULE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
/* Ignore this. To do: Parse VIARULE statements */
|
||||||
|
/* and use the rule to fill any missing values. */
|
||||||
|
break;
|
||||||
|
case DEF_VIAS_PROP_CUTSIZE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &sizex) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for CUTSIZE.\n");
|
||||||
|
/* To do: Get cut size from DRC ruleset */
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &sizey) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for CUTSIZE.\n");
|
||||||
|
/* To do: Get cut size from DRC ruleset */
|
||||||
|
}
|
||||||
|
generated = TRUE;
|
||||||
|
break;
|
||||||
|
case DEF_VIAS_PROP_LAYERS:
|
||||||
|
blayer = LefReadLayer(f, FALSE);
|
||||||
|
clayer = LefReadLayer(f, FALSE);
|
||||||
|
tlayer = LefReadLayer(f, FALSE);
|
||||||
|
generated = TRUE;
|
||||||
|
break;
|
||||||
|
case DEF_VIAS_PROP_CUTSPACING:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &spacex) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for CUTSPACING.\n");
|
||||||
|
/* To do: Get cut spacing from DRC ruleset */
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &spacey) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for CUTSPACING.\n");
|
||||||
|
/* To do: Get cut spacing from DRC ruleset */
|
||||||
|
}
|
||||||
|
generated = TRUE;
|
||||||
|
break;
|
||||||
|
case DEF_VIAS_PROP_ENCLOSURE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &enctx) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ENCLOSURE.\n");
|
||||||
|
/* To do: Get cut enclosures from DRC ruleset */
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &encty) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ENCLOSURE.\n");
|
||||||
|
/* To do: Get cut enclosures from DRC ruleset */
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &encbx) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ENCLOSURE.\n");
|
||||||
|
/* To do: Get cut enclosures from DRC ruleset */
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &encby) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ENCLOSURE.\n");
|
||||||
|
/* To do: Get cut enclosures from DRC ruleset */
|
||||||
|
}
|
||||||
|
generated = TRUE;
|
||||||
|
break;
|
||||||
|
case DEF_VIAS_PROP_ROWCOL:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &rows) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ROWCOL.\n");
|
||||||
|
rows = 1;
|
||||||
|
}
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
if (sscanf(token, "%d", &cols) != 1)
|
||||||
|
{
|
||||||
|
LefError(DEF_ERROR, "Invalid syntax for ROWCOL.\n");
|
||||||
|
cols = 1;
|
||||||
|
}
|
||||||
|
generated = TRUE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1010,7 +1341,7 @@ DefReadVias(f, sname, oscale, total)
|
||||||
case DEF_VIAS_END:
|
case DEF_VIAS_END:
|
||||||
if (!LefParseEndStatement(f, sname))
|
if (!LefParseEndStatement(f, sname))
|
||||||
{
|
{
|
||||||
LefError("Vias END statement missing.\n");
|
LefError(DEF_ERROR, "Vias END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1021,7 +1352,7 @@ DefReadVias(f, sname, oscale, total)
|
||||||
if (processed == total)
|
if (processed == total)
|
||||||
TxPrintf(" Processed %d vias total.\n", processed);
|
TxPrintf(" Processed %d vias total.\n", processed);
|
||||||
else
|
else
|
||||||
LefError("Warning: Number of vias read (%d) does not match "
|
LefError(DEF_WARNING, "Number of vias read (%d) does not match "
|
||||||
"the number declared (%d).\n", processed, total);
|
"the number declared (%d).\n", processed, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1061,7 +1392,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
CellDef *defMacro;
|
CellDef *defMacro;
|
||||||
CellUse *defUse;
|
CellUse *defUse;
|
||||||
Transform t;
|
Transform t;
|
||||||
char *token;
|
char *token, *dptr;
|
||||||
char usename[512];
|
char usename[512];
|
||||||
int keyword, subkey, values;
|
int keyword, subkey, values;
|
||||||
int processed = 0;
|
int processed = 0;
|
||||||
|
|
@ -1093,7 +1424,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
|
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in COMPONENT "
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in COMPONENT "
|
||||||
"definition; ignoring.\n", token);
|
"definition; ignoring.\n", token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -1111,10 +1442,27 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (sscanf(token, "%511s", usename) != 1)
|
if (sscanf(token, "%511s", usename) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad component statement: Need use and macro names\n");
|
LefError(DEF_ERROR, "Bad component statement: Need "
|
||||||
|
"use and macro names\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Does use name contain brackets? If so, this can */
|
||||||
|
/* interfere with magic's use of arrays. */
|
||||||
|
|
||||||
|
/* NOTE: It is not clear that this needs to be */
|
||||||
|
/* done during DEF read. The only confusion comes */
|
||||||
|
/* from the arrays being parsed by ExtFlat when */
|
||||||
|
/* doing ext2spice. */
|
||||||
|
|
||||||
|
dptr = strchr(usename, '[');
|
||||||
|
if (dptr != NULL) {
|
||||||
|
*dptr = '_';
|
||||||
|
dptr = strchr(dptr + 1, ']');
|
||||||
|
if (dptr != NULL) *dptr = '_';
|
||||||
|
}
|
||||||
|
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
|
|
||||||
/* Find the corresponding macro definition */
|
/* Find the corresponding macro definition */
|
||||||
|
|
@ -1129,8 +1477,8 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
defMacro->cd_flags &= ~CDNOTFOUND;
|
defMacro->cd_flags &= ~CDNOTFOUND;
|
||||||
if (!DBCellRead(defMacro, (char *)NULL, TRUE, NULL))
|
if (!DBCellRead(defMacro, (char *)NULL, TRUE, NULL))
|
||||||
{
|
{
|
||||||
LefError("Cell %s is not defined. Maybe you have not "
|
LefError(DEF_ERROR, "Cell %s is not defined. Maybe you "
|
||||||
"read the corresponding LEF file?\n",
|
"have not read the corresponding LEF file?\n",
|
||||||
token);
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
DBCellDeleteDef(defMacro);
|
DBCellDeleteDef(defMacro);
|
||||||
|
|
@ -1163,7 +1511,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
subkey = Lookup(token, property_keys);
|
subkey = Lookup(token, property_keys);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown component property \"%s\" in "
|
LefError(DEF_INFO, "Unknown component property \"%s\" in "
|
||||||
"COMPONENT definition; ignoring.\n", token);
|
"COMPONENT definition; ignoring.\n", token);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1198,7 +1546,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
case DEF_COMP_END:
|
case DEF_COMP_END:
|
||||||
if (!LefParseEndStatement(f, sname))
|
if (!LefParseEndStatement(f, sname))
|
||||||
{
|
{
|
||||||
LefError("Component END statement missing.\n");
|
LefError(DEF_ERROR, "Component END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1216,7 +1564,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
||||||
if (processed == total)
|
if (processed == total)
|
||||||
TxPrintf(" Processed %d subcell instances total.\n", processed);
|
TxPrintf(" Processed %d subcell instances total.\n", processed);
|
||||||
else
|
else
|
||||||
LefError("Warning: Number of subcells read (%d) does not match "
|
LefError(DEF_WARNING, "Number of subcells read (%d) does not match "
|
||||||
"the number declared (%d).\n", processed, total);
|
"the number declared (%d).\n", processed, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1330,7 +1678,7 @@ DefRead(inName)
|
||||||
keyword = Lookup(token, sections);
|
keyword = Lookup(token, sections);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in DEF file; ignoring.\n", token);
|
LefError(DEF_INFO, "Unknown keyword \"%s\" in DEF file; ignoring.\n", token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1346,7 +1694,7 @@ DefRead(inName)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (strcmp(token, DBTechName))
|
if (strcmp(token, DBTechName))
|
||||||
{
|
{
|
||||||
LefError("Warning: DEF technology name \"%s\" does not"
|
LefError(DEF_WARNING, "DEF technology name \"%s\" does not"
|
||||||
" match current magic technology name \"%s\"\n",
|
" match current magic technology name \"%s\"\n",
|
||||||
token, DBTechName);
|
token, DBTechName);
|
||||||
}
|
}
|
||||||
|
|
@ -1366,8 +1714,8 @@ DefRead(inName)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (sscanf(token, "%d", &dscale) != 1)
|
if (sscanf(token, "%d", &dscale) != 1)
|
||||||
{
|
{
|
||||||
LefError("Invalid syntax for UNITS statement.\n");
|
LefError(DEF_ERROR, "Invalid syntax for UNITS statement.\n");
|
||||||
LefError("Assuming default value of 100\n");
|
LefError(DEF_INFO, "Assuming default value of 100\n");
|
||||||
dscale = 100;
|
dscale = 100;
|
||||||
}
|
}
|
||||||
/* We don't care if the scale is 100, 200, 1000, or 2000. */
|
/* We don't care if the scale is 100, 200, 1000, or 2000. */
|
||||||
|
|
@ -1453,7 +1801,7 @@ DefRead(inName)
|
||||||
case DEF_END:
|
case DEF_END:
|
||||||
if (!LefParseEndStatement(token, "DESIGN"))
|
if (!LefParseEndStatement(token, "DESIGN"))
|
||||||
{
|
{
|
||||||
LefError("END statement out of context.\n");
|
LefError(DEF_ERROR, "END statement out of context.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1461,7 +1809,7 @@ DefRead(inName)
|
||||||
if (keyword == DEF_END) break;
|
if (keyword == DEF_END) break;
|
||||||
}
|
}
|
||||||
TxPrintf("DEF read: Processed %d lines.\n", lefCurrentLine);
|
TxPrintf("DEF read: Processed %d lines.\n", lefCurrentLine);
|
||||||
LefError(NULL); /* print statement of errors, if any, and reset */
|
LefError(DEF_SUMMARY, NULL); /* print statement of errors, if any, and reset */
|
||||||
|
|
||||||
/* Cleanup */
|
/* Cleanup */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,10 +84,11 @@ char *defGetType(); /* Forward declaration */
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
defWriteHeader(def, f, oscale)
|
defWriteHeader(def, f, oscale, units)
|
||||||
CellDef *def; /* Def for which to generate DEF output */
|
CellDef *def; /* Def for which to generate DEF output */
|
||||||
FILE *f; /* Output to this file */
|
FILE *f; /* Output to this file */
|
||||||
float oscale;
|
float oscale;
|
||||||
|
int units; /* Units for UNITS; could be derived from oscale */
|
||||||
{
|
{
|
||||||
TileType type;
|
TileType type;
|
||||||
|
|
||||||
|
|
@ -113,10 +114,10 @@ defWriteHeader(def, f, oscale)
|
||||||
/* technology). */
|
/* technology). */
|
||||||
fprintf(f, " TECHNOLOGY %s ;\n", DBTechName);
|
fprintf(f, " TECHNOLOGY %s ;\n", DBTechName);
|
||||||
|
|
||||||
/* As I understand it, this refers to the scalefactor of the GDS */
|
/* The DEF scalefactor (conversion to microns) is always 1000 */
|
||||||
/* file output. Magic does all GDS in nanometers, so the LEF */
|
/* (nanometers) unless overridden on the command line. */
|
||||||
/* scalefactor (conversion to microns) is always 1000. */
|
|
||||||
fprintf(f, " UNITS DISTANCE MICRONS 1000 ;\n");
|
fprintf(f, " UNITS DISTANCE MICRONS %d ;\n", units);
|
||||||
|
|
||||||
/* Die area, taken from the cell def bounding box. */
|
/* Die area, taken from the cell def bounding box. */
|
||||||
fprintf(f, " DIEAREA ( %.10g %.10g ) ( %.10g %.10g ) ;\n",
|
fprintf(f, " DIEAREA ( %.10g %.10g ) ( %.10g %.10g ) ;\n",
|
||||||
|
|
@ -1820,6 +1821,7 @@ defComponentFunc(cellUse, defdata)
|
||||||
{
|
{
|
||||||
FILE *f = defdata->f;
|
FILE *f = defdata->f;
|
||||||
float oscale = defdata->scale;
|
float oscale = defdata->scale;
|
||||||
|
char *nameroot;
|
||||||
|
|
||||||
/* Ignore any cellUse that does not have an identifier string. */
|
/* Ignore any cellUse that does not have an identifier string. */
|
||||||
if (cellUse->cu_id == NULL) return 0;
|
if (cellUse->cu_id == NULL) return 0;
|
||||||
|
|
@ -1830,8 +1832,17 @@ defComponentFunc(cellUse, defdata)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* In case the cd_name contains a path component (it's not supposed to), */
|
||||||
|
/* remove it. */
|
||||||
|
|
||||||
|
nameroot = strrchr(cellUse->cu_def->cd_name, '/');
|
||||||
|
if (nameroot != NULL)
|
||||||
|
nameroot++;
|
||||||
|
else
|
||||||
|
nameroot = cellUse->cu_def->cd_name;
|
||||||
|
|
||||||
fprintf(f, " - %s %s\n + PLACED ( %.10g %.10g ) %s ;\n",
|
fprintf(f, " - %s %s\n + PLACED ( %.10g %.10g ) %s ;\n",
|
||||||
cellUse->cu_id, cellUse->cu_def->cd_name,
|
cellUse->cu_id, nameroot,
|
||||||
(float)cellUse->cu_bbox.r_xbot * oscale,
|
(float)cellUse->cu_bbox.r_xbot * oscale,
|
||||||
(float)cellUse->cu_bbox.r_ybot * oscale,
|
(float)cellUse->cu_bbox.r_ybot * oscale,
|
||||||
defTransPos(&cellUse->cu_transform));
|
defTransPos(&cellUse->cu_transform));
|
||||||
|
|
@ -1864,10 +1875,10 @@ defMakeInverseLayerMap()
|
||||||
TileType i;
|
TileType i;
|
||||||
char *lefname;
|
char *lefname;
|
||||||
|
|
||||||
lefMagicToLefLayer = (LefMapping *)mallocMagic(DBNumUserLayers
|
lefMagicToLefLayer = (LefMapping *)mallocMagic(DBNumTypes
|
||||||
* sizeof(LefMapping));
|
* sizeof(LefMapping));
|
||||||
memset(lefMagicToLefLayer, 0, sizeof(LefMapping) * TT_TECHDEPBASE);
|
memset(lefMagicToLefLayer, 0, sizeof(LefMapping) * TT_TECHDEPBASE);
|
||||||
for (i = TT_TECHDEPBASE; i < DBNumUserLayers; i++)
|
for (i = TT_TECHDEPBASE; i < DBNumTypes; i++)
|
||||||
{
|
{
|
||||||
lefname = defGetType(i, &lefl);
|
lefname = defGetType(i, &lefl);
|
||||||
lefMagicToLefLayer[i].lefName = lefname;
|
lefMagicToLefLayer[i].lefName = lefname;
|
||||||
|
|
@ -1916,23 +1927,28 @@ defMakeInverseLayerMap()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
DefWriteCell(def, outName, allSpecial)
|
DefWriteCell(def, outName, allSpecial, units)
|
||||||
CellDef *def; /* Cell being written */
|
CellDef *def; /* Cell being written */
|
||||||
char *outName; /* Name of output file, or NULL. */
|
char *outName; /* Name of output file, or NULL. */
|
||||||
bool allSpecial; /* Treat all nets as SPECIALNETS? */
|
bool allSpecial; /* Treat all nets as SPECIALNETS? */
|
||||||
|
int units; /* Force units to this value (default 1000) */
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
NetCount nets;
|
NetCount nets;
|
||||||
int total;
|
int total;
|
||||||
float scale = CIFGetOutputScale(1); /* Note that "1" here corresponds
|
float scale;
|
||||||
* to "1000" in the header UNITS line
|
|
||||||
*/
|
|
||||||
LefMapping *lefMagicToLefLayer;
|
LefMapping *lefMagicToLefLayer;
|
||||||
int i;
|
int i;
|
||||||
lefLayer *lefl;
|
lefLayer *lefl;
|
||||||
HashEntry *he;
|
HashEntry *he;
|
||||||
|
|
||||||
|
/* Note that "1" corresponds to "1000" in the header UNITS line, */
|
||||||
|
/* or units of nanometers. 10 = centimicrons, 1000 = microns. */
|
||||||
|
|
||||||
|
scale = CIFGetOutputScale(1000 / units);
|
||||||
|
|
||||||
f = lefFileOpen(def, outName, ".def", "w", &filename);
|
f = lefFileOpen(def, outName, ".def", "w", &filename);
|
||||||
|
|
||||||
TxPrintf("Generating DEF output %s for cell %s:\n", filename, def->cd_name);
|
TxPrintf("Generating DEF output %s for cell %s:\n", filename, def->cd_name);
|
||||||
|
|
@ -1949,7 +1965,7 @@ DefWriteCell(def, outName, allSpecial)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
defWriteHeader(def, f, scale);
|
defWriteHeader(def, f, scale, units);
|
||||||
|
|
||||||
lefMagicToLefLayer = defMakeInverseLayerMap();
|
lefMagicToLefLayer = defMakeInverseLayerMap();
|
||||||
|
|
||||||
|
|
|
||||||
23
lef/lefCmd.c
23
lef/lefCmd.c
|
|
@ -61,7 +61,7 @@ CmdLef(w, cmd)
|
||||||
MagWindow *w;
|
MagWindow *w;
|
||||||
TxCommand *cmd;
|
TxCommand *cmd;
|
||||||
{
|
{
|
||||||
int option, i, cargs;
|
int option, i, cargs, units = 1000; /* Default nanometers */
|
||||||
char **msg, *namep;
|
char **msg, *namep;
|
||||||
CellUse *selectedUse;
|
CellUse *selectedUse;
|
||||||
CellDef *selectedDef;
|
CellDef *selectedDef;
|
||||||
|
|
@ -219,6 +219,25 @@ CmdLef(w, cmd)
|
||||||
else
|
else
|
||||||
TxPrintf("The \"-hide\" option is only for lef write\n");
|
TxPrintf("The \"-hide\" option is only for lef write\n");
|
||||||
}
|
}
|
||||||
|
else if (!strncmp(cmd->tx_argv[i], "-units", 5))
|
||||||
|
{
|
||||||
|
if (is_lef)
|
||||||
|
TxPrintf("The \"-units\" option is only for def write\n");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
cargs--;
|
||||||
|
if ((cmd->tx_argc < i) || (!StrIsInt(cmd->tx_argv[i])))
|
||||||
|
{
|
||||||
|
TxPrintf("The \"-units\" option requires an argument.\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
units = atoi(cmd->tx_argv[i]);
|
||||||
|
// To do: Check range of units
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else goto wrongNumArgs;
|
else goto wrongNumArgs;
|
||||||
cargs--;
|
cargs--;
|
||||||
}
|
}
|
||||||
|
|
@ -236,7 +255,7 @@ CmdLef(w, cmd)
|
||||||
else
|
else
|
||||||
namep = cmd->tx_argv[2];
|
namep = cmd->tx_argv[2];
|
||||||
if (!is_lef)
|
if (!is_lef)
|
||||||
DefWriteCell(selectedUse->cu_def, namep, allSpecial);
|
DefWriteCell(selectedUse->cu_def, namep, allSpecial, units);
|
||||||
else
|
else
|
||||||
LefWriteCell(selectedUse->cu_def, namep, selectedUse->cu_def
|
LefWriteCell(selectedUse->cu_def, namep, selectedUse->cu_def
|
||||||
== EditRootDef, lefTech, lefHide);
|
== EditRootDef, lefTech, lefHide);
|
||||||
|
|
|
||||||
16
lef/lefInt.h
16
lef/lefInt.h
|
|
@ -126,12 +126,24 @@ LinkedRect *LefReadGeometry();
|
||||||
void LefEstimate();
|
void LefEstimate();
|
||||||
lefLayer *LefRedefined();
|
lefLayer *LefRedefined();
|
||||||
void LefAddViaGeometry();
|
void LefAddViaGeometry();
|
||||||
|
void LefGenViaGeometry();
|
||||||
Rect *LefReadRect();
|
Rect *LefReadRect();
|
||||||
TileType LefReadLayer();
|
TileType LefReadLayer();
|
||||||
|
|
||||||
LefMapping *defMakeInverseLayerMap();
|
LefMapping *defMakeInverseLayerMap();
|
||||||
|
|
||||||
void LefError(char *, ...); /* Variable argument procedure requires */
|
void LefError(int, char *, ...); /* Variable argument procedure requires */
|
||||||
/* parameter list. */
|
/* parameter list. */
|
||||||
|
|
||||||
|
/* Definitions for type passed to LefError() */
|
||||||
|
|
||||||
|
#define LEF_ERROR 0
|
||||||
|
#define LEF_WARNING 1
|
||||||
|
#define LEF_INFO 2
|
||||||
|
#define LEF_SUMMARY 3
|
||||||
|
#define DEF_ERROR 4
|
||||||
|
#define DEF_WARNING 5
|
||||||
|
#define DEF_INFO 6
|
||||||
|
#define DEF_SUMMARY 7
|
||||||
|
|
||||||
#endif /* _LEFINT_H */
|
#endif /* _LEFINT_H */
|
||||||
|
|
|
||||||
514
lef/lefRead.c
514
lef/lefRead.c
|
|
@ -32,6 +32,7 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
#include "tiles/tile.h"
|
#include "tiles/tile.h"
|
||||||
#include "utils/hash.h"
|
#include "utils/hash.h"
|
||||||
#include "utils/undo.h"
|
#include "utils/undo.h"
|
||||||
|
#include "utils/utils.h" /* For StrDup() */
|
||||||
#include "database/database.h"
|
#include "database/database.h"
|
||||||
#include "windows/windows.h"
|
#include "windows/windows.h"
|
||||||
#include "graphics/graphics.h"
|
#include "graphics/graphics.h"
|
||||||
|
|
@ -279,11 +280,15 @@ LefNextToken(f, ignore_eol)
|
||||||
/*
|
/*
|
||||||
*------------------------------------------------------------
|
*------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* LefError --
|
* LefDefError --
|
||||||
*
|
*
|
||||||
* Print an error message (via TxError) giving the line
|
* Print an error message (via TxError) giving the line
|
||||||
* number of the input file on which the error occurred.
|
* number of the input file on which the error occurred.
|
||||||
*
|
*
|
||||||
|
* "type" is one of the following (see lef.h):
|
||||||
|
* LEF_ERROR, LEF_WARNING, LEF_INFO,
|
||||||
|
* DEF_ERROR, DEF_WARNING, DEF_INFO
|
||||||
|
*
|
||||||
* Results:
|
* Results:
|
||||||
* None.
|
* None.
|
||||||
*
|
*
|
||||||
|
|
@ -294,34 +299,126 @@ LefNextToken(f, ignore_eol)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
LefError(char *fmt, ...)
|
LefError(int type, char *fmt, ...)
|
||||||
{
|
{
|
||||||
static int errors = 0;
|
static int errors = 0, warnings = 0, messages = 0;
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
if (fmt == NULL) /* Special case: report any errors and reset */
|
char *lefdeftypes[] = {"LEF", "DEF", "techfile lef section"};
|
||||||
|
|
||||||
|
int mode, level;
|
||||||
|
char *lefdeftype;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case LEF_INFO:
|
||||||
|
mode = 0;
|
||||||
|
level = 0;
|
||||||
|
break;
|
||||||
|
case LEF_WARNING:
|
||||||
|
mode = 0;
|
||||||
|
level = 1;
|
||||||
|
break;
|
||||||
|
case LEF_ERROR:
|
||||||
|
mode = 0;
|
||||||
|
level = 2;
|
||||||
|
break;
|
||||||
|
case LEF_SUMMARY:
|
||||||
|
mode = 0;
|
||||||
|
level = -1;
|
||||||
|
break;
|
||||||
|
case DEF_INFO:
|
||||||
|
mode = 1;
|
||||||
|
level = 0;
|
||||||
|
break;
|
||||||
|
case DEF_WARNING:
|
||||||
|
mode = 1;
|
||||||
|
level = 1;
|
||||||
|
break;
|
||||||
|
case DEF_ERROR:
|
||||||
|
mode = 1;
|
||||||
|
level = 2;
|
||||||
|
break;
|
||||||
|
case DEF_SUMMARY:
|
||||||
|
mode = 1;
|
||||||
|
level = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lefdeftype = lefdeftypes[mode];
|
||||||
|
|
||||||
|
if ((fmt == NULL) || (level == -1))
|
||||||
{
|
{
|
||||||
|
/* Special case: report any errors and reset */
|
||||||
|
|
||||||
if (errors)
|
if (errors)
|
||||||
{
|
TxPrintf("%s Read: encountered %d error%s total.\n",
|
||||||
TxPrintf("LEF Read: encountered %d error%s total.\n", errors,
|
lefdeftype, errors, (errors == 1) ? "" : "s");
|
||||||
(errors == 1) ? "" : "s");
|
|
||||||
errors = 0;
|
if (warnings)
|
||||||
}
|
TxPrintf("%s Read: encountered %d warning%s total.\n",
|
||||||
|
lefdeftype, warnings, (warnings == 1) ? "" : "s");
|
||||||
|
|
||||||
|
errors = 0;
|
||||||
|
warnings = 0;
|
||||||
|
messages = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errors < LEF_MAX_ERRORS)
|
switch (level) {
|
||||||
{
|
|
||||||
TxError("LEF Read, Line %d: ", lefCurrentLine);
|
|
||||||
va_start(args, fmt);
|
|
||||||
Vfprintf(stderr, fmt, args);
|
|
||||||
va_end(args);
|
|
||||||
TxFlushErr();
|
|
||||||
}
|
|
||||||
else if (errors == LEF_MAX_ERRORS)
|
|
||||||
TxError("LEF Read: Further errors will not be reported.\n");
|
|
||||||
|
|
||||||
errors++;
|
case 2:
|
||||||
|
if (errors < LEF_MAX_ERRORS)
|
||||||
|
{
|
||||||
|
if (lefCurrentLine >= 0)
|
||||||
|
TxError("%s read, Line %d (Error): ", lefdeftype, lefCurrentLine);
|
||||||
|
else
|
||||||
|
TxError("%s read (Error): ", lefdeftype);
|
||||||
|
va_start(args, fmt);
|
||||||
|
Vfprintf(stderr, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
TxFlushErr();
|
||||||
|
}
|
||||||
|
else if (errors == LEF_MAX_ERRORS)
|
||||||
|
TxError("%s Read: Further errors will not be reported.\n",
|
||||||
|
lefdeftype);
|
||||||
|
errors++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if (warnings < LEF_MAX_ERRORS)
|
||||||
|
{
|
||||||
|
if (lefCurrentLine >= 0)
|
||||||
|
TxError("%s read, Line %d (Warning): ", lefdeftype, lefCurrentLine);
|
||||||
|
else
|
||||||
|
TxError("%s read (Warning): ", lefdeftype);
|
||||||
|
va_start(args, fmt);
|
||||||
|
Vfprintf(stderr, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
TxFlushErr();
|
||||||
|
}
|
||||||
|
else if (warnings == LEF_MAX_ERRORS)
|
||||||
|
TxError("%s read: Further warnings will not be reported.\n",
|
||||||
|
lefdeftype);
|
||||||
|
warnings++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
if (messages < LEF_MAX_ERRORS)
|
||||||
|
{
|
||||||
|
if (lefCurrentLine >= 0)
|
||||||
|
TxPrintf("%s read, Line %d (Message): ", lefdeftype, lefCurrentLine);
|
||||||
|
else
|
||||||
|
TxPrintf("%s read (Message): ", lefdeftype);
|
||||||
|
va_start(args, fmt);
|
||||||
|
Vfprintf(stdout, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
TxFlushOut();
|
||||||
|
}
|
||||||
|
else if (messages == LEF_MAX_ERRORS)
|
||||||
|
TxPrintf("%s read: Further messages will not be reported.\n",
|
||||||
|
lefdeftype);
|
||||||
|
messages++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -368,7 +465,7 @@ LefParseEndStatement(f, match)
|
||||||
token = LefNextToken(f, (match == NULL) ? FALSE : TRUE);
|
token = LefNextToken(f, (match == NULL) ? FALSE : TRUE);
|
||||||
if (token == NULL)
|
if (token == NULL)
|
||||||
{
|
{
|
||||||
LefError("Bad file read while looking for END statement\n");
|
LefError(LEF_ERROR, "Bad file read while looking for END statement\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -407,7 +504,7 @@ LefParseEndStatement(f, match)
|
||||||
* None.
|
* None.
|
||||||
*
|
*
|
||||||
* Side Effects:
|
* Side Effects:
|
||||||
* Reads input from the specified file. Prints an
|
* reads input from the specified file. Prints an
|
||||||
* error message if the expected END record cannot
|
* error message if the expected END record cannot
|
||||||
* be found.
|
* be found.
|
||||||
*
|
*
|
||||||
|
|
@ -445,7 +542,7 @@ LefSkipSection(f, section)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LefError("Section %s has no END record!\n", section);
|
LefError(LEF_ERROR, "Section %s has no END record!\n", section);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -623,7 +720,7 @@ LefReadLayers(f, obstruct, lreturn, rreturn)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (*token == ';')
|
if (*token == ';')
|
||||||
{
|
{
|
||||||
LefError("Bad Layer statement\n");
|
LefError(LEF_ERROR, "Bad Layer statement\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -670,8 +767,8 @@ LefReadLayers(f, obstruct, lreturn, rreturn)
|
||||||
}
|
}
|
||||||
if ((curlayer < 0) && ((!lefl) || (lefl->lefClass != CLASS_IGNORE)))
|
if ((curlayer < 0) && ((!lefl) || (lefl->lefClass != CLASS_IGNORE)))
|
||||||
{
|
{
|
||||||
LefError("Don't know how to parse layer \"%s\"\n", token);
|
LefError(LEF_ERROR, "Don't know how to parse layer \"%s\"\n", token);
|
||||||
LefError("Try adding this name to the LEF techfile section\n");
|
LefError(LEF_ERROR, "Try adding this name to the LEF techfile section\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return curlayer;
|
return curlayer;
|
||||||
|
|
@ -736,6 +833,7 @@ LefReadRect(f, curlayer, oscale)
|
||||||
char *token;
|
char *token;
|
||||||
float llx, lly, urx, ury;
|
float llx, lly, urx, ury;
|
||||||
static Rect paintrect;
|
static Rect paintrect;
|
||||||
|
Rect lefrect;
|
||||||
bool needMatch = FALSE;
|
bool needMatch = FALSE;
|
||||||
|
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
|
|
@ -768,16 +866,23 @@ LefReadRect(f, curlayer, oscale)
|
||||||
if (*token != ')') goto parse_error;
|
if (*token != ')') goto parse_error;
|
||||||
}
|
}
|
||||||
if (curlayer < 0)
|
if (curlayer < 0)
|
||||||
LefError("No layer defined for RECT.\n");
|
{
|
||||||
|
LefError(LEF_ERROR, "No layer defined for RECT.\n");
|
||||||
|
paintrect.r_xbot = paintrect.r_ybot = 0;
|
||||||
|
paintrect.r_xtop = paintrect.r_ytop = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Scale coordinates (microns to magic internal units) */
|
/* Scale coordinates (microns to magic internal units) */
|
||||||
/* Need to scale grid if necessary! */
|
/* Need to scale grid if necessary! */
|
||||||
|
|
||||||
paintrect.r_xbot = (int)roundf(llx / oscale);
|
lefrect.r_xbot = (int)roundf(llx / oscale);
|
||||||
paintrect.r_ybot = (int)roundf(lly / oscale);
|
lefrect.r_ybot = (int)roundf(lly / oscale);
|
||||||
paintrect.r_xtop = (int)roundf(urx / oscale);
|
lefrect.r_xtop = (int)roundf(urx / oscale);
|
||||||
paintrect.r_ytop = (int)roundf(ury / oscale);
|
lefrect.r_ytop = (int)roundf(ury / oscale);
|
||||||
|
|
||||||
|
/* Insist on non-inverted rectangles */
|
||||||
|
GeoCanonicalRect(&lefrect, &paintrect);
|
||||||
|
|
||||||
/* Diagnostic */
|
/* Diagnostic */
|
||||||
/*
|
/*
|
||||||
|
|
@ -791,7 +896,7 @@ LefReadRect(f, curlayer, oscale)
|
||||||
return (&paintrect);
|
return (&paintrect);
|
||||||
|
|
||||||
parse_error:
|
parse_error:
|
||||||
LefError("Bad port geometry: RECT requires 4 values.\n");
|
LefError(LEF_ERROR, "Bad port geometry: RECT requires 4 values.\n");
|
||||||
return (Rect *)NULL;
|
return (Rect *)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -836,7 +941,7 @@ LefReadPolygon(f, curlayer, oscale, ppoints)
|
||||||
if (token == NULL || *token == ';') break;
|
if (token == NULL || *token == ';') break;
|
||||||
if (sscanf(token, "%f", &px) != 1)
|
if (sscanf(token, "%f", &px) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad X value in polygon.\n");
|
LefError(LEF_ERROR, "Bad X value in polygon.\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -844,12 +949,12 @@ LefReadPolygon(f, curlayer, oscale, ppoints)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
if (token == NULL || *token == ';')
|
if (token == NULL || *token == ';')
|
||||||
{
|
{
|
||||||
LefError("Missing Y value in polygon point!\n");
|
LefError(LEF_ERROR, "Missing Y value in polygon point!\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sscanf(token, "%f", &py) != 1)
|
if (sscanf(token, "%f", &py) != 1)
|
||||||
{
|
{
|
||||||
LefError("Bad Y value in polygon.\n");
|
LefError(LEF_ERROR, "Bad Y value in polygon.\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -966,7 +1071,7 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
||||||
LinkedRect *newRect, *rectList;
|
LinkedRect *newRect, *rectList;
|
||||||
Point *pointList;
|
Point *pointList;
|
||||||
int points;
|
int points;
|
||||||
Rect *paintrect, *contact;
|
Rect *paintrect, *contact = NULL;
|
||||||
|
|
||||||
static char *geometry_keys[] = {
|
static char *geometry_keys[] = {
|
||||||
"LAYER",
|
"LAYER",
|
||||||
|
|
@ -987,7 +1092,8 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
||||||
keyword = Lookup(token, geometry_keys);
|
keyword = Lookup(token, geometry_keys);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in LEF file; ignoring.\n", token);
|
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
|
||||||
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1013,7 +1119,7 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
||||||
{
|
{
|
||||||
// Cut layers defined as contacts use the contact
|
// Cut layers defined as contacts use the contact
|
||||||
// dimensions, not the dimension from the LEF file
|
// dimensions, not the dimension from the LEF file
|
||||||
if (DBIsContact(curlayer) && !(GEO_RECTNULL(contact)))
|
if (DBIsContact(curlayer) && contact && !(GEO_RECTNULL(contact)))
|
||||||
{
|
{
|
||||||
paintrect->r_xbot = (paintrect->r_xbot + paintrect->r_xtop);
|
paintrect->r_xbot = (paintrect->r_xbot + paintrect->r_xtop);
|
||||||
paintrect->r_ybot = (paintrect->r_ybot + paintrect->r_ytop);
|
paintrect->r_ybot = (paintrect->r_ybot + paintrect->r_ytop);
|
||||||
|
|
@ -1082,7 +1188,8 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
||||||
case LEF_GEOMETRY_END:
|
case LEF_GEOMETRY_END:
|
||||||
if (LefParseEndStatement(f, NULL) == 0)
|
if (LefParseEndStatement(f, NULL) == 0)
|
||||||
{
|
{
|
||||||
LefError("Geometry (PORT or OBS) END statement missing.\n");
|
LefError(LEF_ERROR, "Geometry (PORT or OBS) END "
|
||||||
|
"statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1133,12 +1240,12 @@ LefReadPort(lefMacro, f, pinName, pinNum, pinDir, pinUse, oscale)
|
||||||
/* Set this label to be a port */
|
/* Set this label to be a port */
|
||||||
|
|
||||||
if (lefMacro->cd_labels == NULL)
|
if (lefMacro->cd_labels == NULL)
|
||||||
LefError("Internal error: No labels in cell!\n");
|
LefError(LEF_ERROR, "Internal error: No labels in cell!\n");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newlab = lefMacro->cd_lastLabel;
|
newlab = lefMacro->cd_lastLabel;
|
||||||
if (strcmp(newlab->lab_text, pinName))
|
if (strcmp(newlab->lab_text, pinName))
|
||||||
LefError("Internal error: Can't find the label!\n");
|
LefError(LEF_ERROR, "Internal error: Can't find the label!\n");
|
||||||
else /* Make this a port */
|
else /* Make this a port */
|
||||||
newlab->lab_flags = pinNum | pinUse | pinDir | PORT_DIR_MASK;
|
newlab->lab_flags = pinNum | pinUse | pinDir | PORT_DIR_MASK;
|
||||||
}
|
}
|
||||||
|
|
@ -1173,12 +1280,13 @@ enum lef_pin_keys {LEF_DIRECTION = 0, LEF_USE, LEF_PORT, LEF_CAPACITANCE,
|
||||||
LEF_SHAPE, LEF_NETEXPR, LEF_PIN_END};
|
LEF_SHAPE, LEF_NETEXPR, LEF_PIN_END};
|
||||||
|
|
||||||
void
|
void
|
||||||
LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
|
||||||
CellDef *lefMacro;
|
CellDef *lefMacro;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char *pinname;
|
char *pinname;
|
||||||
int pinNum;
|
int pinNum;
|
||||||
float oscale;
|
float oscale;
|
||||||
|
bool is_imported;
|
||||||
{
|
{
|
||||||
char *token;
|
char *token;
|
||||||
int keyword, subkey;
|
int keyword, subkey;
|
||||||
|
|
@ -1247,7 +1355,8 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
||||||
keyword = Lookup(token, pin_keys);
|
keyword = Lookup(token, pin_keys);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in LEF file; ignoring.\n", token);
|
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
|
||||||
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1257,7 +1366,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
subkey = Lookup(token, pin_classes);
|
subkey = Lookup(token, pin_classes);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
LefError("Improper DIRECTION statement\n");
|
LefError(LEF_ERROR, "Improper DIRECTION statement\n");
|
||||||
else
|
else
|
||||||
pinDir = lef_class_to_bitmask[subkey];
|
pinDir = lef_class_to_bitmask[subkey];
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
|
|
@ -1266,13 +1375,32 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
subkey = Lookup(token, pin_uses);
|
subkey = Lookup(token, pin_uses);
|
||||||
if (subkey < 0)
|
if (subkey < 0)
|
||||||
LefError("Improper USE statement\n");
|
LefError(LEF_ERROR, "Improper USE statement\n");
|
||||||
else
|
else
|
||||||
pinUse = lef_use_to_bitmask[subkey];
|
pinUse = lef_use_to_bitmask[subkey];
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
case LEF_PORT:
|
case LEF_PORT:
|
||||||
LefReadPort(lefMacro, f, pinname, pinNum, pinDir, pinUse, oscale);
|
if (is_imported)
|
||||||
|
{
|
||||||
|
Label *lab;
|
||||||
|
|
||||||
|
LefSkipSection(f, NULL);
|
||||||
|
/* Skip the port geometry but find the pin name and */
|
||||||
|
/* annotate with the use and direction. Note that */
|
||||||
|
/* there may be multiple instances of the label. */
|
||||||
|
for (lab = lefMacro->cd_labels; lab; lab = lab->lab_next)
|
||||||
|
{
|
||||||
|
if (!strcmp(lab->lab_text, pinname))
|
||||||
|
{
|
||||||
|
lab->lab_flags &= ~(PORT_USE_MASK | PORT_DIR_MASK |
|
||||||
|
PORT_CLASS_MASK);
|
||||||
|
lab->lab_flags = pinNum | pinUse | pinDir | PORT_DIR_MASK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LefReadPort(lefMacro, f, pinname, pinNum, pinDir, pinUse, oscale);
|
||||||
break;
|
break;
|
||||||
case LEF_CAPACITANCE:
|
case LEF_CAPACITANCE:
|
||||||
case LEF_ANTENNADIFF:
|
case LEF_ANTENNADIFF:
|
||||||
|
|
@ -1290,7 +1418,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
||||||
case LEF_PIN_END:
|
case LEF_PIN_END:
|
||||||
if (LefParseEndStatement(f, pinname) == 0)
|
if (LefParseEndStatement(f, pinname) == 0)
|
||||||
{
|
{
|
||||||
LefError("Pin END statement missing.\n");
|
LefError(LEF_ERROR, "Pin END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1384,7 +1512,7 @@ LefReadMacro(f, mname, oscale, importForeign)
|
||||||
sprintf(newname, "%250s_%d", mname, suffix);
|
sprintf(newname, "%250s_%d", mname, suffix);
|
||||||
he = HashFind(&lefDefInitHash, newname);
|
he = HashFind(&lefDefInitHash, newname);
|
||||||
}
|
}
|
||||||
LefError("Cell \"%s\" was already defined in this file. "
|
LefError(LEF_WARNING, "Cell \"%s\" was already defined in this file. "
|
||||||
"Renaming this cell \"%s\"\n", mname, newname);
|
"Renaming this cell \"%s\"\n", mname, newname);
|
||||||
lefMacro = DBCellLookDef(newname);
|
lefMacro = DBCellLookDef(newname);
|
||||||
if (lefMacro == NULL)
|
if (lefMacro == NULL)
|
||||||
|
|
@ -1424,7 +1552,8 @@ LefReadMacro(f, mname, oscale, importForeign)
|
||||||
keyword = Lookup(token, macro_keys);
|
keyword = Lookup(token, macro_keys);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in LEF file; ignoring.\n", token);
|
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
|
||||||
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1450,7 +1579,7 @@ LefReadMacro(f, mname, oscale, importForeign)
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
size_error:
|
size_error:
|
||||||
LefError("Bad macro SIZE; requires values X BY Y.\n");
|
LefError(LEF_ERROR, "Bad macro SIZE; requires values X BY Y.\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
case LEF_ORIGIN:
|
case LEF_ORIGIN:
|
||||||
|
|
@ -1469,7 +1598,7 @@ size_error:
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
origin_error:
|
origin_error:
|
||||||
LefError("Bad macro ORIGIN; requires 2 values.\n");
|
LefError(LEF_ERROR, "Bad macro ORIGIN; requires 2 values.\n");
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
case LEF_SYMMETRY:
|
case LEF_SYMMETRY:
|
||||||
|
|
@ -1501,10 +1630,7 @@ origin_error:
|
||||||
TxPrintf(" Macro defines pin %s\n", token);
|
TxPrintf(" Macro defines pin %s\n", token);
|
||||||
*/
|
*/
|
||||||
sprintf(tsave, "%.127s", token);
|
sprintf(tsave, "%.127s", token);
|
||||||
if (is_imported)
|
LefReadPin(lefMacro, f, tsave, pinNum++, oscale, is_imported);
|
||||||
LefSkipSection(f, tsave);
|
|
||||||
else
|
|
||||||
LefReadPin(lefMacro, f, tsave, pinNum++, oscale);
|
|
||||||
break;
|
break;
|
||||||
case LEF_OBS:
|
case LEF_OBS:
|
||||||
/* Diagnostic */
|
/* Diagnostic */
|
||||||
|
|
@ -1532,7 +1658,7 @@ origin_error:
|
||||||
case LEF_MACRO_END:
|
case LEF_MACRO_END:
|
||||||
if (LefParseEndStatement(f, mname) == 0)
|
if (LefParseEndStatement(f, mname) == 0)
|
||||||
{
|
{
|
||||||
LefError("Macro END statement missing.\n");
|
LefError(LEF_ERROR, "Macro END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1541,6 +1667,7 @@ origin_error:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Finish up creating the cell */
|
/* Finish up creating the cell */
|
||||||
|
DBReComputeBbox(lefMacro);
|
||||||
|
|
||||||
if (is_imported)
|
if (is_imported)
|
||||||
{
|
{
|
||||||
|
|
@ -1560,36 +1687,45 @@ origin_error:
|
||||||
{
|
{
|
||||||
DBAdjustLabelsNew(lefMacro, &TiPlaneRect, 1);
|
DBAdjustLabelsNew(lefMacro, &TiPlaneRect, 1);
|
||||||
|
|
||||||
if (!has_size)
|
if (has_size)
|
||||||
{
|
{
|
||||||
LefError(" Macro does not define size: computing from geometry\n");
|
lefMacro->cd_flags |= CDFIXEDBBOX;
|
||||||
DBReComputeBbox(lefMacro);
|
propval = (char *)mallocMagic(40);
|
||||||
|
sprintf(propval, "%d %d %d %d",
|
||||||
|
lefBBox.r_xbot, lefBBox.r_ybot,
|
||||||
|
lefBBox.r_xtop, lefBBox.r_ytop);
|
||||||
|
DBPropPut(lefMacro, "FIXED_BBOX", propval);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int reducer = DBCellFindScale(lefMacro);
|
LefError(LEF_WARNING, " Macro does not define size: "
|
||||||
|
"computing from geometry\n");
|
||||||
|
|
||||||
lefMacro->cd_bbox = lefBBox;
|
/* Set the placement bounding box property to the current bounding box */
|
||||||
lefMacro->cd_extended = lefBBox;
|
lefMacro->cd_flags |= CDFIXEDBBOX;
|
||||||
}
|
propval = (char *)mallocMagic(40);
|
||||||
|
sprintf(propval, "%d %d %d %d",
|
||||||
/* Set the placement bounding box property to the current bounding box */
|
|
||||||
lefMacro->cd_flags |= CDFIXEDBBOX;
|
|
||||||
propval = (char *)mallocMagic(40);
|
|
||||||
sprintf(propval, "%d %d %d %d",
|
|
||||||
lefMacro->cd_bbox.r_xbot,
|
lefMacro->cd_bbox.r_xbot,
|
||||||
lefMacro->cd_bbox.r_ybot,
|
lefMacro->cd_bbox.r_ybot,
|
||||||
lefMacro->cd_bbox.r_xtop,
|
lefMacro->cd_bbox.r_xtop,
|
||||||
lefMacro->cd_bbox.r_ytop);
|
lefMacro->cd_bbox.r_ytop);
|
||||||
DBPropPut(lefMacro, "FIXED_BBOX", propval);
|
DBPropPut(lefMacro, "FIXED_BBOX", propval);
|
||||||
|
DRCCheckThis(lefMacro, TT_CHECKPAINT, &lefMacro->cd_bbox);
|
||||||
DRCCheckThis(lefMacro, TT_CHECKPAINT, &lefMacro->cd_bbox);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note: When the LEF view is used to annotate an */
|
||||||
|
/* existing GDS view, then the view is not considered */
|
||||||
|
/* "abstract"; otherwise, writing GDS output gets very */
|
||||||
|
/* complicated and inefficient. */
|
||||||
|
|
||||||
/* Note: The value here is ignored, setting to "TRUE". */
|
/* Note: The value here is ignored, setting to "TRUE". */
|
||||||
/* The "extract" command only cares that the key exists. */
|
/* The "extract" command only cares that the key exists. */
|
||||||
|
/* i.e., setting it to "FALSE" would be ineffective. */
|
||||||
|
|
||||||
|
if (!is_imported)
|
||||||
|
DBPropPut(lefMacro, "LEFview", StrDup((char **)NULL, "TRUE"));
|
||||||
|
|
||||||
DBPropPut(lefMacro, "LEFview", StrDup((char **)NULL, "TRUE"));
|
|
||||||
DBWAreaChanged(lefMacro, &lefMacro->cd_bbox, DBW_ALLWINDOWS,
|
DBWAreaChanged(lefMacro, &lefMacro->cd_bbox, DBW_ALLWINDOWS,
|
||||||
&DBAllButSpaceBits);
|
&DBAllButSpaceBits);
|
||||||
}
|
}
|
||||||
|
|
@ -1597,45 +1733,23 @@ origin_error:
|
||||||
/*
|
/*
|
||||||
*------------------------------------------------------------
|
*------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* LefAddViaGeometry --
|
* LefGrowVia ---
|
||||||
*
|
*
|
||||||
* Read in geometry for a VIA section from a LEF or DEF
|
* For LEF contact types matching magic contact types, size the
|
||||||
* file.
|
* LEF contact cut to cover the minimum rectangle in the other
|
||||||
*
|
* layers that satisfies the CIF/GDS contact generation. Use
|
||||||
* Results:
|
* the "cifinput" style to determine how much the via layer
|
||||||
* None.
|
* needs to grow to make a contact area. If the "cifinput"
|
||||||
*
|
* style is not defined, then determine rules from "cifoutput".
|
||||||
* Side Effects:
|
|
||||||
* Adds to the lefLayer record for a via definition.
|
|
||||||
*
|
*
|
||||||
*------------------------------------------------------------
|
*------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void LefGrowVia(curlayer, currect, lefl)
|
||||||
LefAddViaGeometry(f, lefl, curlayer, oscale)
|
TileType curlayer;
|
||||||
FILE *f; /* LEF file being read */
|
|
||||||
lefLayer *lefl; /* pointer to via info */
|
|
||||||
TileType curlayer; /* current tile type */
|
|
||||||
float oscale; /* output scaling */
|
|
||||||
{
|
|
||||||
Rect *currect;
|
Rect *currect;
|
||||||
LinkedRect *viaLR;
|
lefLayer *lefl;
|
||||||
|
{
|
||||||
/* Rectangles for vias are read in units of 1/2 lambda */
|
|
||||||
currect = LefReadRect(f, curlayer, (oscale / 2));
|
|
||||||
if (currect == NULL) return;
|
|
||||||
|
|
||||||
/* Don't create any geometry for unknown layers! */
|
|
||||||
if (curlayer < 0) return;
|
|
||||||
|
|
||||||
/* For LEF contact types matching magic contact types, */
|
|
||||||
/* size the LEF contact cut to cover the minimum */
|
|
||||||
/* rectangle in the other layers that satisfies the */
|
|
||||||
/* CIF/GDS contact generation. Use the "cifinput" style */
|
|
||||||
/* to determine how much the via layer needs to grow to */
|
|
||||||
/* make a contact area. If the "cifinput" style is not */
|
|
||||||
/* defined, then determine rules from "cifoutput". */
|
|
||||||
|
|
||||||
if (DBIsContact(curlayer) && cifCurReadStyle != NULL)
|
if (DBIsContact(curlayer) && cifCurReadStyle != NULL)
|
||||||
{
|
{
|
||||||
int growSize;
|
int growSize;
|
||||||
|
|
@ -1692,12 +1806,12 @@ LefAddViaGeometry(f, lefl, curlayer, oscale)
|
||||||
if ((currect->r_xtop - currect->r_xbot != edgeSize) ||
|
if ((currect->r_xtop - currect->r_xbot != edgeSize) ||
|
||||||
(currect->r_ytop - currect->r_ybot != edgeSize))
|
(currect->r_ytop - currect->r_ybot != edgeSize))
|
||||||
{
|
{
|
||||||
LefError("Warning: Cut size for magic type \"%s\" (%d x %d) does "
|
LefError(LEF_WARNING, "Cut size for magic type \"%s\" (%d x %d) does "
|
||||||
"not match LEF/DEF\n",
|
"not match LEF/DEF\n",
|
||||||
DBTypeLongNameTbl[lefl->type],
|
DBTypeLongNameTbl[lefl->type],
|
||||||
edgeSize, edgeSize);
|
edgeSize, edgeSize);
|
||||||
LefError(" via cut size (%d x %d). Magic layer cut size will "
|
LefError(LEF_WARNING, "Via cut size (%d x %d). Magic layer "
|
||||||
"be used!\n",
|
"cut size will be used!\n",
|
||||||
currect->r_xtop - currect->r_xbot,
|
currect->r_xtop - currect->r_xbot,
|
||||||
currect->r_ytop - currect->r_ybot);
|
currect->r_ytop - currect->r_ybot);
|
||||||
}
|
}
|
||||||
|
|
@ -1709,6 +1823,142 @@ LefAddViaGeometry(f, lefl, curlayer, oscale)
|
||||||
currect->r_ytop = currect->r_ybot + contSize;
|
currect->r_ytop = currect->r_ybot + contSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* LefGenViaGeometry --
|
||||||
|
*
|
||||||
|
* Create geometry for a VIA section from a DEF file
|
||||||
|
* using via generation parameters.
|
||||||
|
*
|
||||||
|
* Results:
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
* Side Effects:
|
||||||
|
* Adds to the lefLayer record for a via definition.
|
||||||
|
*
|
||||||
|
*------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
LefGenViaGeometry(f, lefl, sizex, sizey, spacex, spacey,
|
||||||
|
encbx, encby, enctx, encty, rows, cols,
|
||||||
|
tlayer, clayer, blayer, oscale)
|
||||||
|
FILE *f; /* LEF file being read */
|
||||||
|
lefLayer *lefl; /* pointer to via info */
|
||||||
|
int sizex, sizey; /* cut size */
|
||||||
|
int spacex, spacey; /* cut spacing */
|
||||||
|
int encbx, encby; /* bottom enclosure of cuts */
|
||||||
|
int enctx, encty; /* top enclosure of cuts */
|
||||||
|
int rows, cols; /* number of cut rows and columns */
|
||||||
|
TileType tlayer; /* Top layer type */
|
||||||
|
TileType clayer; /* Cut layer type */
|
||||||
|
TileType blayer; /* Bottom layer type */
|
||||||
|
float oscale; /* output scaling */
|
||||||
|
{
|
||||||
|
Rect rect;
|
||||||
|
int i, j, x, y, w, h, sw, sh;
|
||||||
|
LinkedRect *viaLR;
|
||||||
|
float hscale = oscale / 2;
|
||||||
|
|
||||||
|
/* Compute top layer rect */
|
||||||
|
|
||||||
|
w = (sizex * cols) + (spacex * (cols - 1)) + 2 * enctx;
|
||||||
|
h = (sizey * rows) + (spacey * (rows - 1)) + 2 * encty;
|
||||||
|
|
||||||
|
rect.r_xtop = (int)roundf(w / oscale);
|
||||||
|
rect.r_xbot = -rect.r_xtop;
|
||||||
|
rect.r_ytop = (int)roundf(h / oscale);
|
||||||
|
rect.r_ybot = -rect.r_ytop;
|
||||||
|
|
||||||
|
/* Set via area to the top layer */
|
||||||
|
lefl->info.via.area = rect;
|
||||||
|
lefl->type = tlayer;
|
||||||
|
|
||||||
|
/* Compute bottom layer rect */
|
||||||
|
|
||||||
|
w = (sizex * cols) + (spacex * (cols - 1)) + 2 * encbx;
|
||||||
|
h = (sizey * rows) + (spacey * (rows - 1)) + 2 * encby;
|
||||||
|
|
||||||
|
rect.r_xtop = (int)roundf(w / oscale);
|
||||||
|
rect.r_xbot = -rect.r_xtop;
|
||||||
|
rect.r_ytop = (int)roundf(h / oscale);
|
||||||
|
rect.r_ybot = -rect.r_ytop;
|
||||||
|
|
||||||
|
viaLR = (LinkedRect *)mallocMagic(sizeof(LinkedRect));
|
||||||
|
viaLR->r_next = lefl->info.via.lr;
|
||||||
|
lefl->info.via.lr = viaLR;
|
||||||
|
viaLR->r_type = blayer;
|
||||||
|
viaLR->r_r = rect;
|
||||||
|
|
||||||
|
w = (sizex * cols) + (spacex * (cols - 1));
|
||||||
|
h = (sizey * rows) + (spacey * (rows - 1));
|
||||||
|
x = -w / 2;
|
||||||
|
y = -h / 2;
|
||||||
|
|
||||||
|
for (i = 0; i < cols; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < rows; j++)
|
||||||
|
{
|
||||||
|
rect.r_xbot = (int)roundf(x / hscale);
|
||||||
|
rect.r_ybot = (int)roundf(y / hscale);
|
||||||
|
rect.r_xtop = rect.r_xbot + (int)roundf(sizex / hscale);
|
||||||
|
rect.r_ytop = rect.r_ybot + (int)roundf(sizey / hscale);
|
||||||
|
|
||||||
|
/* Expand via to the size used by magic */
|
||||||
|
LefGrowVia(clayer, &rect, lefl);
|
||||||
|
|
||||||
|
viaLR = (LinkedRect *)mallocMagic(sizeof(LinkedRect));
|
||||||
|
viaLR->r_next = lefl->info.via.lr;
|
||||||
|
lefl->info.via.lr = viaLR;
|
||||||
|
viaLR->r_type = clayer;
|
||||||
|
viaLR->r_r = rect;
|
||||||
|
|
||||||
|
y += sizey + spacey;
|
||||||
|
}
|
||||||
|
x += sizex + spacex;
|
||||||
|
y = -h / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* LefAddViaGeometry --
|
||||||
|
*
|
||||||
|
* Read in geometry for a VIA section from a LEF or DEF
|
||||||
|
* file.
|
||||||
|
*
|
||||||
|
* Results:
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
* Side Effects:
|
||||||
|
* Adds to the lefLayer record for a via definition.
|
||||||
|
*
|
||||||
|
*------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
LefAddViaGeometry(f, lefl, curlayer, oscale)
|
||||||
|
FILE *f; /* LEF file being read */
|
||||||
|
lefLayer *lefl; /* pointer to via info */
|
||||||
|
TileType curlayer; /* current tile type */
|
||||||
|
float oscale; /* output scaling */
|
||||||
|
{
|
||||||
|
Rect *currect;
|
||||||
|
LinkedRect *viaLR;
|
||||||
|
|
||||||
|
/* Rectangles for vias are read in units of 1/2 lambda */
|
||||||
|
currect = LefReadRect(f, curlayer, (oscale / 2));
|
||||||
|
if (currect == NULL) return;
|
||||||
|
|
||||||
|
/* Don't create any geometry for unknown layers! */
|
||||||
|
if (curlayer < 0) return;
|
||||||
|
|
||||||
|
/* Expand via to the size used by magic */
|
||||||
|
LefGrowVia(curlayer, currect, lefl);
|
||||||
|
|
||||||
if (GEO_SAMERECT(lefl->info.via.area, GeoNullRect))
|
if (GEO_SAMERECT(lefl->info.via.area, GeoNullRect))
|
||||||
{
|
{
|
||||||
|
|
@ -1760,7 +2010,7 @@ enum lef_layer_keys {LEF_LAYER_TYPE=0, LEF_LAYER_WIDTH,
|
||||||
LEF_LAYER_PROPERTY, LEF_LAYER_ACDENSITY, LEF_LAYER_DCDENSITY,
|
LEF_LAYER_PROPERTY, LEF_LAYER_ACDENSITY, LEF_LAYER_DCDENSITY,
|
||||||
LEF_LAYER_MINDENSITY, LEF_LAYER_ANTENNADIFF,
|
LEF_LAYER_MINDENSITY, LEF_LAYER_ANTENNADIFF,
|
||||||
LEF_LAYER_ANTENNAAREA, LEF_LAYER_ANTENNASIDE,
|
LEF_LAYER_ANTENNAAREA, LEF_LAYER_ANTENNASIDE,
|
||||||
LEF_VIA_DEFAULT, LEF_VIA_LAYER, LEF_VIA_RECT,
|
LEF_VIA_DEFAULT, LEF_VIA_LAYER, LEF_VIA_RECT, LEF_VIA_FOREIGN,
|
||||||
LEF_VIA_ENCLOSURE, LEF_VIA_PREFERENCLOSURE,
|
LEF_VIA_ENCLOSURE, LEF_VIA_PREFERENCLOSURE,
|
||||||
LEF_VIARULE_OVERHANG,
|
LEF_VIARULE_OVERHANG,
|
||||||
LEF_VIARULE_METALOVERHANG, LEF_VIARULE_VIA,
|
LEF_VIARULE_METALOVERHANG, LEF_VIARULE_VIA,
|
||||||
|
|
@ -1814,6 +2064,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
"DEFAULT",
|
"DEFAULT",
|
||||||
"LAYER",
|
"LAYER",
|
||||||
"RECT",
|
"RECT",
|
||||||
|
"FOREIGN",
|
||||||
"ENCLOSURE",
|
"ENCLOSURE",
|
||||||
"PREFERENCLOSURE",
|
"PREFERENCLOSURE",
|
||||||
"OVERHANG",
|
"OVERHANG",
|
||||||
|
|
@ -1838,7 +2089,8 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
keyword = Lookup(token, layer_keys);
|
keyword = Lookup(token, layer_keys);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in LEF file; ignoring.\n", token);
|
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
|
||||||
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1850,7 +2102,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
{
|
{
|
||||||
typekey = Lookup(token, layer_type_keys);
|
typekey = Lookup(token, layer_type_keys);
|
||||||
if (typekey < 0)
|
if (typekey < 0)
|
||||||
LefError("Unknown layer type \"%s\" in LEF file; "
|
LefError(LEF_WARNING, "Unknown layer type \"%s\" in LEF file; "
|
||||||
"ignoring.\n", token);
|
"ignoring.\n", token);
|
||||||
}
|
}
|
||||||
if (lefl->lefClass != typekey)
|
if (lefl->lefClass != typekey)
|
||||||
|
|
@ -1859,7 +2111,8 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
/* and so having a different TYPE is an error. */
|
/* and so having a different TYPE is an error. */
|
||||||
/* Otherwise just ignore the type. */
|
/* Otherwise just ignore the type. */
|
||||||
if (typekey == CLASS_ROUTE || typekey == CLASS_VIA)
|
if (typekey == CLASS_ROUTE || typekey == CLASS_VIA)
|
||||||
LefError("Attempt to reclassify layer %s from %s to %s\n",
|
LefError(LEF_ERROR, "Attempt to reclassify layer %s "
|
||||||
|
"from %s to %s\n",
|
||||||
lname, layer_type_keys[lefl->lefClass],
|
lname, layer_type_keys[lefl->lefClass],
|
||||||
layer_type_keys[typekey]);
|
layer_type_keys[typekey]);
|
||||||
}
|
}
|
||||||
|
|
@ -1952,6 +2205,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
|
case LEF_VIA_FOREIGN:
|
||||||
case LEF_VIARULE_VIA:
|
case LEF_VIARULE_VIA:
|
||||||
case LEF_VIA_ENCLOSURE:
|
case LEF_VIA_ENCLOSURE:
|
||||||
case LEF_VIA_PREFERENCLOSURE:
|
case LEF_VIA_PREFERENCLOSURE:
|
||||||
|
|
@ -1962,7 +2216,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
||||||
case LEF_LAYER_END:
|
case LEF_LAYER_END:
|
||||||
if (LefParseEndStatement(f, lname) == 0)
|
if (LefParseEndStatement(f, lname) == 0)
|
||||||
{
|
{
|
||||||
LefError("Layer END statement missing.\n");
|
LefError(LEF_ERROR, "Layer END statement missing.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1993,9 +2247,9 @@ enum lef_sections {LEF_VERSION = 0,
|
||||||
LEF_USEMINSPACING, LEF_CLEARANCEMEASURE,
|
LEF_USEMINSPACING, LEF_CLEARANCEMEASURE,
|
||||||
LEF_NAMESCASESENSITIVE,
|
LEF_NAMESCASESENSITIVE,
|
||||||
LEF_PROPERTYDEFS, LEF_UNITS, LEF_SECTION_LAYER,
|
LEF_PROPERTYDEFS, LEF_UNITS, LEF_SECTION_LAYER,
|
||||||
LEF_SECTION_VIA, LEF_SECTION_VIARULE,
|
LEF_SECTION_VIA, LEF_SECTION_VIARULE, LEF_SECTION_NONDEFAULTRULE,
|
||||||
LEF_SECTION_SPACING, LEF_SECTION_SITE, LEF_PROPERTY,
|
LEF_NOWIREEXTENSIONATPIN, LEF_SECTION_SPACING, LEF_SECTION_SITE,
|
||||||
LEF_NOISETABLE, LEF_CORRECTIONTABLE, LEF_IRDROP,
|
LEF_PROPERTY, LEF_NOISETABLE, LEF_CORRECTIONTABLE, LEF_IRDROP,
|
||||||
LEF_ARRAY, LEF_SECTION_TIMING, LEF_EXTENSION, LEF_MACRO,
|
LEF_ARRAY, LEF_SECTION_TIMING, LEF_EXTENSION, LEF_MACRO,
|
||||||
LEF_END};
|
LEF_END};
|
||||||
|
|
||||||
|
|
@ -2026,6 +2280,8 @@ LefRead(inName, importForeign)
|
||||||
"LAYER",
|
"LAYER",
|
||||||
"VIA",
|
"VIA",
|
||||||
"VIARULE",
|
"VIARULE",
|
||||||
|
"NONDEFAULTRULE",
|
||||||
|
"NOWIREEXTENSIONATPIN",
|
||||||
"SPACING",
|
"SPACING",
|
||||||
"SITE",
|
"SITE",
|
||||||
"PROPERTY",
|
"PROPERTY",
|
||||||
|
|
@ -2066,13 +2322,15 @@ LefRead(inName, importForeign)
|
||||||
HashInit(&LefCellTable, 32, HT_STRINGKEYS);
|
HashInit(&LefCellTable, 32, HT_STRINGKEYS);
|
||||||
HashInit(&lefDefInitHash, 32, HT_STRINGKEYS);
|
HashInit(&lefDefInitHash, 32, HT_STRINGKEYS);
|
||||||
oscale = CIFGetOutputScale(1000);
|
oscale = CIFGetOutputScale(1000);
|
||||||
|
lefCurrentLine = 0;
|
||||||
|
|
||||||
while ((token = LefNextToken(f, TRUE)) != NULL)
|
while ((token = LefNextToken(f, TRUE)) != NULL)
|
||||||
{
|
{
|
||||||
keyword = Lookup(token, sections);
|
keyword = Lookup(token, sections);
|
||||||
if (keyword < 0)
|
if (keyword < 0)
|
||||||
{
|
{
|
||||||
LefError("Unknown keyword \"%s\" in LEF file; ignoring.\n", token);
|
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
|
||||||
|
token);
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -2086,6 +2344,7 @@ LefRead(inName, importForeign)
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
case LEF_NAMESCASESENSITIVE:
|
case LEF_NAMESCASESENSITIVE:
|
||||||
|
case LEF_NOWIREEXTENSIONATPIN:
|
||||||
LefEndStatement(f);
|
LefEndStatement(f);
|
||||||
break;
|
break;
|
||||||
case LEF_PROPERTYDEFS:
|
case LEF_PROPERTYDEFS:
|
||||||
|
|
@ -2123,7 +2382,7 @@ LefRead(inName, importForeign)
|
||||||
LefSkipSection(f, tsave);
|
LefSkipSection(f, tsave);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LefError("Warning: Cut type \"%s\" redefined.\n", token);
|
LefError(LEF_WARNING, "Cut type \"%s\" redefined.\n", token);
|
||||||
lefl = LefRedefined(lefl, token);
|
lefl = LefRedefined(lefl, token);
|
||||||
LefReadLayerSection(f, tsave, keyword, lefl);
|
LefReadLayerSection(f, tsave, keyword, lefl);
|
||||||
}
|
}
|
||||||
|
|
@ -2147,7 +2406,7 @@ LefRead(inName, importForeign)
|
||||||
}
|
}
|
||||||
else if (DBIsContact(mtype) && (keyword == LEF_SECTION_LAYER))
|
else if (DBIsContact(mtype) && (keyword == LEF_SECTION_LAYER))
|
||||||
{
|
{
|
||||||
LefError("Layer %s maps to a magic contact layer; "
|
LefError(LEF_ERROR, "Layer %s maps to a magic contact layer; "
|
||||||
"must be defined in lef section of techfile\n",
|
"must be defined in lef section of techfile\n",
|
||||||
token);
|
token);
|
||||||
LefSkipSection(f, tsave);
|
LefSkipSection(f, tsave);
|
||||||
|
|
@ -2155,7 +2414,7 @@ LefRead(inName, importForeign)
|
||||||
}
|
}
|
||||||
else if (!DBIsContact(mtype) && (keyword != LEF_SECTION_LAYER))
|
else if (!DBIsContact(mtype) && (keyword != LEF_SECTION_LAYER))
|
||||||
{
|
{
|
||||||
LefError("Via %s maps to a non-contact magic layer; "
|
LefError(LEF_ERROR, "Via %s maps to a non-contact magic layer; "
|
||||||
"must be defined in lef section of techfile\n",
|
"must be defined in lef section of techfile\n",
|
||||||
token);
|
token);
|
||||||
LefSkipSection(f, tsave);
|
LefSkipSection(f, tsave);
|
||||||
|
|
@ -2178,7 +2437,8 @@ LefRead(inName, importForeign)
|
||||||
lefl = (lefLayer *)HashGetValue(he);
|
lefl = (lefLayer *)HashGetValue(he);
|
||||||
if (lefl && lefl->type < 0)
|
if (lefl && lefl->type < 0)
|
||||||
{
|
{
|
||||||
LefError("Layer %s is only defined for obstructions!\n", token);
|
LefError(LEF_ERROR, "Layer %s is only defined for "
|
||||||
|
"obstructions!\n", token);
|
||||||
LefSkipSection(f, tsave);
|
LefSkipSection(f, tsave);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -2186,12 +2446,18 @@ LefRead(inName, importForeign)
|
||||||
LefReadLayerSection(f, tsave, keyword, lefl);
|
LefReadLayerSection(f, tsave, keyword, lefl);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LEF_SECTION_NONDEFAULTRULE:
|
||||||
|
token = LefNextToken(f, TRUE);
|
||||||
|
LefError(LEF_INFO, "Defines non-default rule %s (ignored)\n", token);
|
||||||
|
sprintf(tsave, "%.127s", token);
|
||||||
|
LefSkipSection(f, tsave);
|
||||||
|
break;
|
||||||
case LEF_SECTION_SPACING:
|
case LEF_SECTION_SPACING:
|
||||||
LefSkipSection(f, sections[LEF_SECTION_SPACING]);
|
LefSkipSection(f, sections[LEF_SECTION_SPACING]);
|
||||||
break;
|
break;
|
||||||
case LEF_SECTION_SITE:
|
case LEF_SECTION_SITE:
|
||||||
token = LefNextToken(f, TRUE);
|
token = LefNextToken(f, TRUE);
|
||||||
TxPrintf("LEF file: Defines site %s (ignored)\n", token);
|
LefError(LEF_INFO, "Defines site %s (ignored)\n", token);
|
||||||
sprintf(tsave, "%.127s", token);
|
sprintf(tsave, "%.127s", token);
|
||||||
LefSkipSection(f, tsave);
|
LefSkipSection(f, tsave);
|
||||||
break;
|
break;
|
||||||
|
|
@ -2228,7 +2494,7 @@ LefRead(inName, importForeign)
|
||||||
case LEF_END:
|
case LEF_END:
|
||||||
if (LefParseEndStatement(f, "LIBRARY") == 0)
|
if (LefParseEndStatement(f, "LIBRARY") == 0)
|
||||||
{
|
{
|
||||||
LefError("END statement out of context.\n");
|
LefError(LEF_ERROR, "END statement out of context.\n");
|
||||||
keyword = -1;
|
keyword = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -2236,7 +2502,7 @@ LefRead(inName, importForeign)
|
||||||
if (keyword == LEF_END) break;
|
if (keyword == LEF_END) break;
|
||||||
}
|
}
|
||||||
TxPrintf("LEF read: Processed %d lines.\n", lefCurrentLine);
|
TxPrintf("LEF read: Processed %d lines.\n", lefCurrentLine);
|
||||||
LefError(NULL); /* print statement of errors, if any */
|
LefError(LEF_SUMMARY, NULL); /* print statement of errors, if any */
|
||||||
|
|
||||||
/* Cleanup */
|
/* Cleanup */
|
||||||
HashKill(&LefCellTable);
|
HashKill(&LefCellTable);
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,7 @@ LefTechInit()
|
||||||
HashKill(&LefInfo);
|
HashKill(&LefInfo);
|
||||||
}
|
}
|
||||||
HashInit(&LefInfo, 32, HT_STRINGKEYS);
|
HashInit(&LefInfo, 32, HT_STRINGKEYS);
|
||||||
|
lefCurrentLine = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -252,17 +253,17 @@ LefTechLine(sectionName, argc, argv)
|
||||||
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
LefError("Bad magic layer type \"%s\" in LEF layer definition.\n", argv[1]);
|
TechError("Bad magic layer type \"%s\" in LEF layer definition.\n", argv[1]);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if ((i == 2) && (option != LEFTECH_OBS))
|
else if ((i == 2) && (option != LEFTECH_OBS))
|
||||||
{
|
{
|
||||||
LefError("Can only define multiple types for via obstruction layers.\n");
|
TechError("Can only define multiple types for via obstruction layers.\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (i > 2)
|
else if (i > 2)
|
||||||
{
|
{
|
||||||
LefError("Too many types in LEF layer definition.\n");
|
TechError("Too many types in LEF layer definition.\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -741,18 +741,18 @@ lefWriteMacro(def, f, scale, hide)
|
||||||
propvalue = (char *)DBPropGet(def, "LEFclass", &propfound);
|
propvalue = (char *)DBPropGet(def, "LEFclass", &propfound);
|
||||||
if (propfound)
|
if (propfound)
|
||||||
{
|
{
|
||||||
fprintf(f, " CLASS %s\n", propvalue);
|
fprintf(f, " CLASS %s ;\n", propvalue);
|
||||||
class = propvalue;
|
class = propvalue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Needs a class of some kind. Use BLOCK as default if not defined */
|
/* Needs a class of some kind. Use BLOCK as default if not defined */
|
||||||
fprintf(f, " CLASS BLOCK\n");
|
fprintf(f, " CLASS BLOCK ;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
propvalue = (char *)DBPropGet(def, "LEFsource", &propfound);
|
propvalue = (char *)DBPropGet(def, "LEFsource", &propfound);
|
||||||
if (propfound)
|
if (propfound)
|
||||||
fprintf(f, " SOURCE %s\n", propvalue);
|
fprintf(f, " SOURCE %s ;\n", propvalue);
|
||||||
|
|
||||||
fprintf(f, " FOREIGN %s ;\n", def->cd_name);
|
fprintf(f, " FOREIGN %s ;\n", def->cd_name);
|
||||||
|
|
||||||
|
|
@ -787,7 +787,7 @@ lefWriteMacro(def, f, scale, hide)
|
||||||
|
|
||||||
propvalue = (char *)DBPropGet(def, "LEFsymmetry", &propfound);
|
propvalue = (char *)DBPropGet(def, "LEFsymmetry", &propfound);
|
||||||
if (propfound)
|
if (propfound)
|
||||||
fprintf(f, " SYMMETRY %s\n", propvalue);
|
fprintf(f, " SYMMETRY %s ;\n", propvalue);
|
||||||
|
|
||||||
/* Generate cell for yanking obstructions */
|
/* Generate cell for yanking obstructions */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,13 @@ lispFrame.o: lispFrame.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
||||||
lispTrace.o: lispTrace.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
lispTrace.o: lispTrace.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../textio/txcommands.h ../textio/textio.h \
|
../utils/geometry.h ../textio/txcommands.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
|
lispMagic.o: lispMagic.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
||||||
|
../utils/geometry.h ../textio/txcommands.h lispargs.h ../utils/geofast.h \
|
||||||
|
../textio/textio.h ../utils/malloc.h ../tiles/tile.h ../utils/hash.h \
|
||||||
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../select/select.h
|
||||||
lispArith.o: lispArith.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
lispArith.o: lispArith.c ../lisp/lisp.h lispInt.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../textio/txcommands.h lispargs.h ../textio/textio.h \
|
../utils/geometry.h ../textio/txcommands.h lispargs.h ../textio/textio.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
|
|
|
||||||
105
mzrouter/Depend
105
mzrouter/Depend
|
|
@ -1,100 +1,135 @@
|
||||||
mzBlock.o: mzBlock.c ../utils/magic.h ../utils/geometry.h \
|
mzBlock.o: mzBlock.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
||||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzDebug.o: mzDebug.c ../utils/magic.h ../utils/signals.h \
|
mzDebug.o: mzDebug.c ../utils/magic.h ../utils/signals.h \
|
||||||
../textio/textio.h ../utils/hash.h ../utils/geometry.h ../tiles/tile.h \
|
../textio/textio.h ../utils/hash.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../database/database.h ../utils/malloc.h ../utils/list.h ../utils/heap.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/list.h ../utils/heap.h \
|
||||||
../mzrouter/mzrouter.h ../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzrouter.h ../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzEstimate.o: mzEstimate.c ../utils/magic.h ../utils/geometry.h \
|
mzEstimate.o: mzEstimate.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
||||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzXtndDown.o: mzXtndDown.c ../utils/magic.h ../utils/geometry.h \
|
mzXtndDown.o: mzXtndDown.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzXtndLeft.o: mzXtndLeft.c ../utils/magic.h ../utils/geometry.h \
|
mzXtndLeft.o: mzXtndLeft.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzXtndRght.o: mzXtndRght.c ../utils/magic.h ../utils/geometry.h \
|
mzXtndRght.o: mzXtndRght.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzXtndUp.o: mzXtndUp.c ../utils/magic.h ../utils/geometry.h \
|
mzXtndUp.o: mzXtndUp.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzHint.o: mzHint.c ../utils/magic.h ../utils/geometry.h \
|
mzHint.o: mzHint.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
||||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzInit.o: mzInit.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
mzInit.o: mzInit.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../drc/drc.h ../select/select.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/signals.h ../textio/textio.h ../windows/windows.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../debug/debug.h ../utils/undo.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/malloc.h ../utils/list.h ../utils/heap.h \
|
../select/select.h ../utils/signals.h ../textio/textio.h \
|
||||||
../mzrouter/mzrouter.h ../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
|
../debug/debug.h ../utils/undo.h ../textio/txcommands.h \
|
||||||
|
../utils/malloc.h ../utils/list.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzNumLine.o: mzNumLine.c ../utils/magic.h ../utils/geometry.h \
|
mzNumLine.o: mzNumLine.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/malloc.h \
|
||||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzMain.o: mzMain.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
mzMain.o: mzMain.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../drc/drc.h ../select/select.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/signals.h ../textio/textio.h ../windows/windows.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../debug/debug.h ../utils/undo.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/malloc.h ../utils/main.h \
|
../select/select.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/geofast.h ../utils/list.h ../utils/heap.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
|
../debug/debug.h ../utils/undo.h ../textio/txcommands.h \
|
||||||
|
../utils/malloc.h ../utils/main.h ../utils/list.h ../utils/heap.h \
|
||||||
../utils/touchingtypes.h ../mzrouter/mzrouter.h ../utils/list.h \
|
../utils/touchingtypes.h ../mzrouter/mzrouter.h ../utils/list.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzSearch.o: mzSearch.c ../utils/magic.h ../utils/geometry.h \
|
mzSearch.o: mzSearch.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/malloc.h ../utils/list.h ../debug/debug.h ../utils/styles.h \
|
../utils/malloc.h ../utils/list.h ../debug/debug.h ../utils/styles.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../mzrouter/mzrouter.h \
|
../windows/windows.h ../dbwind/dbwind.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzStart.o: mzStart.c ../utils/magic.h ../utils/geometry.h \
|
mzStart.o: mzStart.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzSubrs.o: mzSubrs.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
mzSubrs.o: mzSubrs.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../drc/drc.h ../select/select.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/signals.h ../textio/textio.h ../windows/windows.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../debug/debug.h ../utils/undo.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h ../drc/drc.h \
|
||||||
../textio/txcommands.h ../utils/malloc.h ../utils/main.h \
|
../select/select.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/geofast.h ../utils/list.h ../utils/touchingtypes.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
../utils/heap.h ../mzrouter/mzrouter.h ../mzrouter/mzInternal.h \
|
../debug/debug.h ../utils/undo.h ../textio/txcommands.h \
|
||||||
../mzrouter/mzDebug.h
|
../utils/malloc.h ../utils/main.h ../utils/list.h \
|
||||||
|
../utils/touchingtypes.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzTech.o: mzTech.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
mzTech.o: mzTech.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/signals.h ../textio/textio.h ../wiring/wiring.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/utils.h ../utils/tech.h ../utils/malloc.h ../utils/list.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
|
../wiring/wiring.h ../utils/tech.h ../utils/malloc.h ../utils/list.h \
|
||||||
../windows/windows.h ../utils/main.h ../mzrouter/mzrouter.h \
|
../windows/windows.h ../utils/main.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzTestCmd.o: mzTestCmd.c ../utils/magic.h ../utils/geometry.h \
|
mzTestCmd.o: mzTestCmd.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/signals.h ../textio/textio.h ../irouter/irouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/utils.h ../commands/commands.h ../utils/styles.h \
|
../irouter/irouter.h ../graphics/graphics.h ../windows/windows.h \
|
||||||
|
../dbwind/dbwind.h ../dbwind/dbwtech.h ../textio/txcommands.h \
|
||||||
|
../utils/main.h ../commands/commands.h ../utils/styles.h \
|
||||||
../utils/malloc.h ../utils/list.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
../utils/malloc.h ../utils/list.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
mzWalk.o: mzWalk.c ../utils/magic.h ../utils/geometry.h \
|
mzWalk.o: mzWalk.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/signals.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../textio/textio.h \
|
||||||
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
../utils/list.h ../debug/debug.h ../mzrouter/mzrouter.h \
|
||||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||||
|
|
|
||||||
|
|
@ -1,46 +1,68 @@
|
||||||
NMbutton.o: NMbutton.c ../utils/magic.h ../utils/geometry.h \
|
NMbutton.o: NMbutton.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../textio/txcommands.h ../netmenu/nmInt.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../netmenu/netmenu.h ../utils/styles.h ../utils/main.h
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
|
../netmenu/nmInt.h ../netmenu/netmenu.h ../utils/styles.h \
|
||||||
|
../utils/main.h
|
||||||
NMcmdAK.o: NMcmdAK.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
NMcmdAK.o: NMcmdAK.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../textio/txcommands.h ../netmenu/nmInt.h ../netmenu/netmenu.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/main.h ../textio/textio.h ../utils/malloc.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../windows/windows.h ../textio/txcommands.h ../netmenu/nmInt.h \
|
||||||
|
../netmenu/netmenu.h ../utils/main.h ../textio/textio.h \
|
||||||
|
../utils/malloc.h
|
||||||
NMcmdLZ.o: NMcmdLZ.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
NMcmdLZ.o: NMcmdLZ.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../textio/txcommands.h ../netmenu/nmInt.h ../netmenu/netmenu.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../utils/main.h ../textio/textio.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../windows/windows.h ../textio/txcommands.h ../netmenu/nmInt.h \
|
||||||
|
../netmenu/netmenu.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
|
../utils/main.h ../textio/textio.h
|
||||||
NMlabel.o: NMlabel.c ../utils/magic.h ../utils/geometry.h \
|
NMlabel.o: NMlabel.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/utils.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||||
../netmenu/nmInt.h ../textio/textio.h ../textio/txcommands.h \
|
../netmenu/nmInt.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
../commands/commands.h ../utils/styles.h ../utils/malloc.h
|
../commands/commands.h ../utils/styles.h ../utils/malloc.h
|
||||||
NMmain.o: NMmain.c ../utils/magic.h ../utils/geometry.h \
|
NMmain.o: NMmain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../graphics/glyphs.h \
|
../windows/windows.h ../graphics/graphics.h ../graphics/glyphs.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../dbwind/dbwind.h ../textio/textio.h ../utils/styles.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/txcommands.h ../netmenu/nmInt.h ../netmenu/netmenu.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/undo.h
|
../bplane/bplaneInt.h ../dbwind/dbwind.h ../textio/textio.h \
|
||||||
|
../utils/styles.h ../textio/txcommands.h ../netmenu/nmInt.h \
|
||||||
|
../netmenu/netmenu.h ../utils/undo.h
|
||||||
NMnetlist.o: NMnetlist.c ../utils/magic.h ../utils/utils.h \
|
NMnetlist.o: NMnetlist.c ../utils/magic.h ../utils/utils.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../textio/textio.h ../netmenu/nmInt.h ../utils/undo.h ../utils/malloc.h \
|
../textio/textio.h ../netmenu/nmInt.h ../utils/undo.h ../utils/malloc.h \
|
||||||
../netmenu/netmenu.h
|
../netmenu/netmenu.h
|
||||||
NMshowpt.o: NMshowpt.c ../utils/magic.h ../utils/geometry.h \
|
NMshowpt.o: NMshowpt.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/styles.h ../utils/main.h ../utils/malloc.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../utils/main.h ../utils/malloc.h
|
||||||
NMshowcell.o: NMshowcell.c ../utils/magic.h ../utils/geometry.h \
|
NMshowcell.o: NMshowcell.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/styles.h ../textio/textio.h ../utils/main.h ../netmenu/nmInt.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h ../utils/main.h \
|
||||||
|
../netmenu/nmInt.h
|
||||||
NMundo.o: NMundo.c ../utils/magic.h ../utils/geometry.h \
|
NMundo.o: NMundo.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../netmenu/netmenu.h ../netmenu/nmInt.h \
|
../windows/windows.h ../netmenu/netmenu.h ../netmenu/nmInt.h \
|
||||||
../utils/undo.h ../utils/utils.h
|
../utils/undo.h ../utils/utils.h
|
||||||
NMwiring.o: NMwiring.c ../utils/magic.h ../utils/geometry.h \
|
NMwiring.o: NMwiring.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../netmenu/netmenu.h ../netmenu/nmInt.h ../textio/textio.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/styles.h ../drc/drc.h ../utils/malloc.h ../router/router.h \
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/utils.h
|
../utils/main.h ../netmenu/netmenu.h ../netmenu/nmInt.h \
|
||||||
|
../textio/textio.h ../utils/styles.h ../drc/drc.h ../utils/malloc.h \
|
||||||
|
../router/router.h
|
||||||
|
|
|
||||||
61
plot/Depend
61
plot/Depend
|
|
@ -1,41 +1,58 @@
|
||||||
plotCmd.o: plotCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
plotCmd.o: plotCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../textio/txcommands.h ../plow/plow.h ../select/select.h \
|
../utils/main.h ../textio/txcommands.h ../plow/plow.h ../select/select.h \
|
||||||
../commands/commands.h ../plot/plotInt.h
|
../commands/commands.h ../plot/plotInt.h
|
||||||
plotGremln.o: plotGremln.c ../utils/magic.h ../utils/geometry.h \
|
plotGremln.o: plotGremln.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../utils/utils.h ../windows/windows.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../commands/commands.h ../dbwind/dbwind.h ../textio/textio.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../utils/malloc.h \
|
||||||
|
../windows/windows.h ../commands/commands.h ../dbwind/dbwind.h \
|
||||||
|
../textio/textio.h
|
||||||
plotHP.o: plotHP.c ../utils/malloc.h ../plot/plotInt.h ../utils/magic.h \
|
plotHP.o: plotHP.c ../utils/malloc.h ../plot/plotInt.h ../utils/magic.h \
|
||||||
../utils/geometry.h
|
../utils/geometry.h
|
||||||
plotPS.o: plotPS.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
plotPS.o: plotPS.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/tech.h ../utils/malloc.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/utils.h ../windows/windows.h ../commands/commands.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../dbwind/dbwind.h ../textio/textio.h
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/tech.h ../utils/malloc.h ../windows/windows.h \
|
||||||
|
../commands/commands.h ../dbwind/dbwind.h ../textio/textio.h
|
||||||
plotMain.o: plotMain.c ../utils/magic.h ../utils/geometry.h \
|
plotMain.o: plotMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../plot/plotInt.h ../textio/textio.h ../utils/utils.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../utils/malloc.h \
|
||||||
|
../plot/plotInt.h ../textio/textio.h
|
||||||
plotRutils.o: plotRutils.c ../utils/magic.h ../utils/geometry.h \
|
plotRutils.o: plotRutils.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../plot/plotInt.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../textio/textio.h ../utils/utils.h
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../plot/plotInt.h \
|
||||||
|
../textio/textio.h
|
||||||
plotVers.o: plotVers.c ../utils/magic.h ../utils/geometry.h \
|
plotVers.o: plotVers.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../plot/plotInt.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../plot/plotInt.h \
|
||||||
../windows/windows.h ../commands/commands.h ../textio/textio.h \
|
../windows/windows.h ../commands/commands.h ../textio/textio.h \
|
||||||
../utils/utils.h ../utils/tech.h ../utils/signals.h ../dbwind/dbwind.h \
|
../utils/tech.h ../utils/signals.h ../dbwind/dbwind.h ../cif/cif.h
|
||||||
../cif/cif.h
|
|
||||||
plotPixels.o: plotPixels.c ../utils/magic.h ../utils/geometry.h \
|
plotPixels.o: plotPixels.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../dbwind/dbwtech.h ../utils/malloc.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../dbwind/dbwtech.h ../utils/malloc.h \
|
||||||
../plot/plotInt.h ../windows/windows.h ../commands/commands.h \
|
../plot/plotInt.h ../windows/windows.h ../commands/commands.h \
|
||||||
../textio/textio.h ../utils/utils.h ../utils/tech.h ../utils/signals.h \
|
../textio/textio.h ../utils/tech.h ../utils/signals.h ../utils/styles.h \
|
||||||
../utils/styles.h ../graphics/graphics.h ../dbwind/dbwind.h
|
../graphics/graphics.h ../dbwind/dbwind.h
|
||||||
plotPNM.o: plotPNM.c ../utils/magic.h ../utils/geometry.h \
|
plotPNM.o: plotPNM.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../utils/malloc.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/utils.h ../utils/styles.h ../windows/windows.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwtech.h ../dbwind/dbwind.h \
|
../bplane/bplaneInt.h ../utils/tech.h ../utils/malloc.h \
|
||||||
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
../utils/styles.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
../utils/signals.h ../plot/plotInt.h
|
../dbwind/dbwtech.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
|
../commands/commands.h ../textio/textio.h ../utils/signals.h \
|
||||||
|
../plot/plotInt.h
|
||||||
|
|
|
||||||
|
|
@ -196,6 +196,7 @@ PlotFreeRaster(raster)
|
||||||
* have been created with PlotNewRaster.
|
* have been created with PlotNewRaster.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
if (raster == NULL) return;
|
||||||
freeMagic((char *) raster->ras_bits);
|
freeMagic((char *) raster->ras_bits);
|
||||||
freeMagic((char *) raster);
|
freeMagic((char *) raster);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1084,7 +1084,7 @@ PlotVersatec(scx, layers, xMask, user_scale)
|
||||||
Raster *raster = NULL;
|
Raster *raster = NULL;
|
||||||
|
|
||||||
/* CMYK color separated raster buffers. */
|
/* CMYK color separated raster buffers. */
|
||||||
Raster *kRaster, *cRaster, *mRaster, *yRaster;
|
Raster *kRaster = NULL, *cRaster = NULL, *mRaster = NULL, *yRaster = NULL;
|
||||||
|
|
||||||
haveColorMessage = FALSE;
|
haveColorMessage = FALSE;
|
||||||
GeoTransRect(&scx->scx_trans, &scx->scx_area, &rootClip);
|
GeoTransRect(&scx->scx_trans, &scx->scx_area, &rootClip);
|
||||||
|
|
|
||||||
90
plow/Depend
90
plow/Depend
|
|
@ -1,50 +1,84 @@
|
||||||
PlowCmd.o: PlowCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
PlowCmd.o: PlowCmd.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../textio/txcommands.h ../plow/plow.h ../select/select.h
|
../utils/main.h ../textio/txcommands.h ../plow/plow.h ../select/select.h
|
||||||
PlowJogs.o: PlowJogs.c ../utils/magic.h ../utils/geometry.h \
|
PlowJogs.o: PlowJogs.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/malloc.h ../debug/debug.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../plow/plow.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../utils/malloc.h ../debug/debug.h
|
||||||
PlowMain.o: PlowMain.c ../utils/magic.h ../utils/geometry.h \
|
PlowMain.o: PlowMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../debug/debug.h ../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/styles.h ../utils/malloc.h ../utils/signals.h ../utils/main.h \
|
../bplane/bplaneInt.h ../utils/undo.h ../debug/debug.h ../plow/plow.h \
|
||||||
../select/select.h ../graphics/graphics.h
|
../plow/plowInt.h ../plow/plowDebugInt.h ../textio/textio.h \
|
||||||
|
../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h ../utils/styles.h \
|
||||||
|
../utils/malloc.h ../utils/signals.h ../utils/main.h ../select/select.h \
|
||||||
|
../graphics/graphics.h
|
||||||
PlowQueue.o: PlowQueue.c ../utils/magic.h ../utils/geometry.h \
|
PlowQueue.o: PlowQueue.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../debug/debug.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plowInt.h ../plow/plowDebugInt.h ../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../debug/debug.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../utils/malloc.h
|
||||||
PlowRandom.o: PlowRandom.c ../utils/magic.h ../utils/geometry.h \
|
PlowRandom.o: PlowRandom.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plowDebugInt.h ../textio/textio.h ../utils/undo.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../extract/extract.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../plow/plowInt.h ../plow/plowDebugInt.h \
|
||||||
|
../textio/textio.h ../utils/undo.h ../utils/signals.h \
|
||||||
|
../extract/extract.h
|
||||||
PlowRules1.o: PlowRules1.c ../utils/magic.h ../utils/geometry.h \
|
PlowRules1.o: PlowRules1.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h ../drc/drc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../plow/plow.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../drc/drc.h
|
||||||
PlowRules2.o: PlowRules2.c ../utils/magic.h ../utils/geometry.h \
|
PlowRules2.o: PlowRules2.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h ../drc/drc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../plow/plow.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../drc/drc.h
|
||||||
PlowRules3.o: PlowRules3.c ../utils/magic.h ../utils/geometry.h \
|
PlowRules3.o: PlowRules3.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h ../drc/drc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../plow/plow.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../drc/drc.h
|
||||||
PlowSearch.o: PlowSearch.c ../utils/magic.h ../utils/geometry.h \
|
PlowSearch.o: PlowSearch.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plowDebugInt.h ../utils/stack.h ../textio/textio.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../plow/plowInt.h ../plow/plowDebugInt.h \
|
||||||
|
../utils/stack.h ../textio/textio.h
|
||||||
PlowTech.o: PlowTech.c ../utils/magic.h ../utils/geometry.h \
|
PlowTech.o: PlowTech.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/utils.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/malloc.h ../plow/plowInt.h ../plow/plowDebugInt.h ../drc/drc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../plow/plowInt.h \
|
||||||
|
../plow/plowDebugInt.h ../drc/drc.h
|
||||||
PlowTest.o: PlowTest.c ../utils/magic.h ../utils/styles.h \
|
PlowTest.o: PlowTest.c ../utils/magic.h ../utils/styles.h \
|
||||||
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../utils/undo.h ../database/database.h ../windows/windows.h \
|
../utils/undo.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/geofast.h ../bplane/bplaneInt.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/main.h \
|
../graphics/graphics.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
../commands/commands.h ../drc/drc.h ../debug/debug.h ../plow/plowInt.h \
|
../commands/commands.h ../drc/drc.h ../debug/debug.h ../plow/plowInt.h \
|
||||||
../plow/plowDebugInt.h ../textio/textio.h ../textio/txcommands.h
|
../plow/plowDebugInt.h ../textio/textio.h ../textio/txcommands.h
|
||||||
PlowWidth.o: PlowWidth.c ../utils/magic.h ../utils/geometry.h \
|
PlowWidth.o: PlowWidth.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../plow/plowDebugInt.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../plow/plowInt.h ../plow/plowDebugInt.h
|
||||||
PlowYank.o: PlowYank.c ../utils/magic.h ../utils/geometry.h \
|
PlowYank.o: PlowYank.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/undo.h ../debug/debug.h ../plow/plow.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../debug/debug.h ../plow/plow.h \
|
||||||
../plow/plowInt.h ../plow/plowDebugInt.h ../textio/textio.h \
|
../plow/plowInt.h ../plow/plowDebugInt.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h
|
../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h
|
||||||
|
|
|
||||||
73
resis/Depend
73
resis/Depend
|
|
@ -1,81 +1,110 @@
|
||||||
ResMain.o: ResMain.c ../utils/magic.h ../utils/geometry.h \
|
ResMain.o: ResMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResJunct.o: ResJunct.c ../utils/magic.h ../utils/geometry.h \
|
ResJunct.o: ResJunct.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../utils/malloc.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../utils/malloc.h \
|
||||||
../textio/textio.h ../extract/extract.h ../extract/extractInt.h \
|
../textio/textio.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
../extract/extDebugInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/stack.h ../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
../utils/stack.h ../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
||||||
ResMakeRes.o: ResMakeRes.c ../utils/magic.h ../utils/geometry.h \
|
ResMakeRes.o: ResMakeRes.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResSimple.o: ResSimple.c ../utils/magic.h ../utils/geometry.h \
|
ResSimple.o: ResSimple.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h ../utils/heap.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResPrint.o: ResPrint.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ResPrint.o: ResPrint.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/utils.h ../cif/cif.h \
|
../windows/windows.h ../dbwind/dbwind.h ../cif/cif.h ../utils/tech.h \
|
||||||
../utils/tech.h ../textio/txcommands.h ../utils/stack.h \
|
../textio/txcommands.h ../utils/stack.h ../utils/styles.h \
|
||||||
../utils/styles.h ../resis/resis.h
|
../resis/resis.h
|
||||||
ResReadSim.o: ResReadSim.c ../utils/magic.h ../utils/geometry.h \
|
ResReadSim.o: ResReadSim.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/utils.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResConDCS.o: ResConDCS.c ../utils/magic.h ../utils/geometry.h \
|
ResConDCS.o: ResConDCS.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../utils/signals.h ../windows/windows.h ../dbwind/dbwind.h \
|
../utils/signals.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
||||||
ResRex.o: ResRex.c ../tcltk/tclmagic.h ../utils/magic.h \
|
ResRex.o: ResRex.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../utils/undo.h ../database/database.h ../utils/malloc.h \
|
../utils/undo.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../bplane/bplaneInt.h ../utils/malloc.h \
|
||||||
../textio/textio.h ../extract/extract.h ../extract/extractInt.h \
|
../textio/textio.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
../extract/extDebugInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/utils.h ../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
||||||
ResBasic.o: ResBasic.c ../utils/magic.h ../utils/geometry.h \
|
ResBasic.o: ResBasic.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResMerge.o: ResMerge.c ../utils/magic.h ../utils/geometry.h \
|
ResMerge.o: ResMerge.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../resis/resis.h
|
../resis/resis.h
|
||||||
ResChecks.o: ResChecks.c ../utils/magic.h ../utils/geometry.h \
|
ResChecks.o: ResChecks.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/utils.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../utils/stack.h ../resis/resis.h
|
../textio/txcommands.h ../utils/stack.h ../resis/resis.h
|
||||||
ResFract.o: ResFract.c ../utils/magic.h ../utils/geometry.h \
|
ResFract.o: ResFract.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../textio/txcommands.h ../tiles/tile.h ../utils/signals.h \
|
../textio/txcommands.h ../tiles/tile.h ../utils/signals.h \
|
||||||
../utils/hash.h ../database/database.h ../database/databaseInt.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/malloc.h ../windows/windows.h ../utils/main.h
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../database/databaseInt.h ../utils/malloc.h ../windows/windows.h \
|
||||||
|
../utils/main.h
|
||||||
ResUtils.o: ResUtils.c ../utils/magic.h ../utils/geometry.h \
|
ResUtils.o: ResUtils.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../resis/resis.h
|
../textio/txcommands.h ../resis/resis.h
|
||||||
ResDebug.o: ResDebug.c ../utils/magic.h ../utils/geometry.h \
|
ResDebug.o: ResDebug.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/utils.h ../utils/tech.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||||
../textio/txcommands.h ../utils/stack.h ../resis/resis.h
|
../textio/txcommands.h ../utils/stack.h ../resis/resis.h
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,35 @@
|
||||||
rtrCmd.o: rtrCmd.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/styles.h \
|
rtrCmd.o: rtrCmd.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/styles.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/main.h ../textio/txcommands.h ../select/select.h \
|
../utils/main.h ../textio/txcommands.h ../select/select.h \
|
||||||
../commands/commands.h ../utils/heap.h ../router/router.h \
|
../commands/commands.h ../utils/heap.h ../router/router.h \
|
||||||
../utils/netlist.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
../utils/netlist.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h
|
../grouter/grouter.h ../grouter/grouteDebug.h
|
||||||
rtrMain.o: rtrMain.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
rtrMain.o: rtrMain.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h ../gcr/gcr.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/signals.h ../router/rtrDcmpose.h ../netmenu/netmenu.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../bplane/bplaneInt.h ../gcr/gcr.h ../windows/windows.h \
|
||||||
../utils/netlist.h ../textio/textio.h ../utils/runstats.h
|
../dbwind/dbwind.h ../utils/main.h ../utils/signals.h \
|
||||||
|
../router/rtrDcmpose.h ../netmenu/netmenu.h ../router/router.h \
|
||||||
|
../grouter/grouter.h ../grouter/grouteDebug.h ../utils/netlist.h \
|
||||||
|
../textio/textio.h ../utils/runstats.h
|
||||||
rtrDcmpose.o: rtrDcmpose.c ../utils/magic.h ../textio/textio.h \
|
rtrDcmpose.o: rtrDcmpose.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
../dbwind/dbwind.h ../utils/heap.h ../utils/undo.h ../router/router.h \
|
../dbwind/dbwind.h ../utils/heap.h ../utils/undo.h ../router/router.h \
|
||||||
../router/rtrDcmpose.h ../gcr/gcr.h ../grouter/grouter.h \
|
../router/rtrDcmpose.h ../gcr/gcr.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../utils/styles.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../utils/styles.h \
|
||||||
../utils/malloc.h ../netmenu/netmenu.h ../debug/debug.h
|
../utils/malloc.h ../netmenu/netmenu.h ../debug/debug.h
|
||||||
rtrFdback.o: rtrFdback.c ../utils/magic.h ../utils/geometry.h \
|
rtrFdback.o: rtrFdback.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../utils/main.h ../utils/utils.h ../gcr/gcr.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h ../gcr/gcr.h \
|
||||||
../router/router.h ../utils/heap.h ../grouter/grouter.h \
|
../router/router.h ../utils/heap.h ../grouter/grouter.h \
|
||||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
../dbwind/dbwind.h ../utils/malloc.h
|
../dbwind/dbwind.h ../utils/malloc.h
|
||||||
|
|
@ -28,41 +37,60 @@ rtrHazards.o: rtrHazards.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../gcr/gcr.h ../utils/malloc.h
|
../tiles/tile.h ../gcr/gcr.h ../utils/malloc.h
|
||||||
rtrChannel.o: rtrChannel.c ../utils/magic.h ../utils/geometry.h \
|
rtrChannel.o: rtrChannel.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
../utils/geofast.h ../utils/hash.h ../utils/heap.h ../tiles/tile.h \
|
||||||
../database/database.h ../gcr/gcr.h ../windows/windows.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../gcr/gcr.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/signals.h ../utils/main.h ../router/router.h \
|
../dbwind/dbwind.h ../utils/signals.h ../utils/main.h ../router/router.h \
|
||||||
../router/rtrDcmpose.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../router/rtrDcmpose.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||||
../textio/textio.h ../utils/styles.h
|
../textio/textio.h ../utils/styles.h
|
||||||
rtrPaint.o: rtrPaint.c ../utils/magic.h ../utils/geometry.h \
|
rtrPaint.o: rtrPaint.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../gcr/gcr.h ../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../grouter/grouteDebug.h ../windows/windows.h ../dbwind/dbwind.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/main.h
|
../bplane/bplaneInt.h ../gcr/gcr.h ../utils/signals.h ../router/router.h \
|
||||||
|
../grouter/grouter.h ../grouter/grouteDebug.h ../windows/windows.h \
|
||||||
|
../dbwind/dbwind.h ../utils/main.h
|
||||||
rtrPin.o: rtrPin.c ../utils/magic.h ../utils/geometry.h ../utils/styles.h \
|
rtrPin.o: rtrPin.c ../utils/magic.h ../utils/geometry.h ../utils/styles.h \
|
||||||
../utils/hash.h ../utils/heap.h ../debug/debug.h ../tiles/tile.h \
|
../utils/hash.h ../utils/heap.h ../debug/debug.h ../tiles/tile.h \
|
||||||
../database/database.h ../gcr/gcr.h ../windows/windows.h ../utils/main.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../gcr/gcr.h ../windows/windows.h ../utils/main.h \
|
||||||
../dbwind/dbwind.h ../utils/signals.h ../router/router.h \
|
../dbwind/dbwind.h ../utils/signals.h ../router/router.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h
|
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h
|
||||||
rtrSide.o: rtrSide.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
rtrSide.o: rtrSide.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../utils/malloc.h ../debug/debug.h ../tiles/tile.h \
|
../utils/heap.h ../utils/malloc.h ../debug/debug.h ../tiles/tile.h \
|
||||||
../database/database.h ../router/router.h ../gcr/gcr.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../router/router.h ../gcr/gcr.h \
|
||||||
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h \
|
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h \
|
||||||
../windows/windows.h ../utils/main.h ../utils/signals.h
|
../windows/windows.h ../utils/main.h ../utils/signals.h
|
||||||
rtrStem.o: rtrStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
rtrStem.o: rtrStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../tiles/tile.h ../database/database.h ../windows/windows.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../router/router.h ../gcr/gcr.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/heap.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../utils/netlist.h ../textio/textio.h ../utils/main.h ../utils/malloc.h \
|
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||||
../debug/debug.h ../utils/signals.h ../utils/maxrect.h
|
../router/router.h ../gcr/gcr.h ../utils/heap.h ../grouter/grouter.h \
|
||||||
|
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||||
|
../utils/main.h ../utils/malloc.h ../debug/debug.h ../utils/signals.h \
|
||||||
|
../utils/maxrect.h
|
||||||
rtrTech.o: rtrTech.c ../utils/magic.h ../utils/utils.h \
|
rtrTech.o: rtrTech.c ../utils/magic.h ../utils/utils.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../textio/textio.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../router/router.h
|
../windows/windows.h ../dbwind/dbwind.h ../router/router.h
|
||||||
rtrVia.o: rtrVia.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
rtrVia.o: rtrVia.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../utils/heap.h ../database/database.h \
|
../utils/hash.h ../utils/heap.h ../database/database.h \
|
||||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../netmenu/netmenu.h ../textio/textio.h ../utils/styles.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/malloc.h ../gcr/gcr.h ../router/router.h ../router/routerInt.h
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
|
../utils/main.h ../netmenu/netmenu.h ../textio/textio.h \
|
||||||
|
../utils/styles.h ../utils/malloc.h ../gcr/gcr.h ../router/router.h \
|
||||||
|
../router/routerInt.h
|
||||||
rtrTravers.o: rtrTravers.c ../utils/magic.h ../utils/geometry.h \
|
rtrTravers.o: rtrTravers.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../utils/signals.h ../utils/malloc.h ../router/router.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../windows/windows.h ../utils/main.h ../gcr/gcr.h ../router/routerInt.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/signals.h ../utils/malloc.h \
|
||||||
|
../router/router.h ../windows/windows.h ../utils/main.h ../gcr/gcr.h \
|
||||||
|
../router/routerInt.h
|
||||||
|
|
|
||||||
|
|
@ -310,6 +310,7 @@ RtrChannelObstacles(use, ch)
|
||||||
scx.scx_area.r_ytop += w * RtrGridSpacing + down;
|
scx.scx_area.r_ytop += w * RtrGridSpacing + down;
|
||||||
scx.scx_use = use;
|
scx.scx_use = use;
|
||||||
scx.scx_trans = GeoIdentityTransform;
|
scx.scx_trans = GeoIdentityTransform;
|
||||||
|
TTMaskZero(&allObs);
|
||||||
TTMaskSetMask3(&allObs, &RtrMetalObstacles, &RtrPolyObstacles);
|
TTMaskSetMask3(&allObs, &RtrMetalObstacles, &RtrPolyObstacles);
|
||||||
(void) DBTreeSrTiles(&scx, &allObs, 0, rtrChannelObstacleMark, (ClientData) ch);
|
(void) DBTreeSrTiles(&scx, &allObs, 0, rtrChannelObstacleMark, (ClientData) ch);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ ${DEPEND_FILE}:
|
||||||
# Original Depend file generating line:
|
# Original Depend file generating line:
|
||||||
# ${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} ${DEPEND_FLAG} ${SRCS} > ${DEPEND_FILE}
|
# ${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} ${DEPEND_FLAG} ${SRCS} > ${DEPEND_FILE}
|
||||||
|
|
||||||
.c.o:
|
.c.o: ../database/database.h
|
||||||
@echo --- compiling ${MODULE}/$*.o
|
@echo --- compiling ${MODULE}/$*.o
|
||||||
${RM} $*.o
|
${RM} $*.o
|
||||||
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} -c $*.c
|
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} -c $*.c
|
||||||
|
|
@ -47,10 +47,6 @@ ${DESTDIR}${BINDIR}/${MODULE}${EXEEXT}: ${MODULE}${EXEEXT}
|
||||||
${RM} ${DESTDIR}${BINDIR}/${MODULE}${EXEEXT}
|
${RM} ${DESTDIR}${BINDIR}/${MODULE}${EXEEXT}
|
||||||
${CP} ${MODULE}${EXEEXT} ${DESTDIR}${BINDIR}
|
${CP} ${MODULE}${EXEEXT} ${DESTDIR}${BINDIR}
|
||||||
|
|
||||||
../database/database.h: ../database/database.h.in
|
|
||||||
@echo --- making header file database/database.h
|
|
||||||
${SCRIPTS}/makedbh ../database/database.h.in ../database/database.h
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
${RM} ${CLEANS}
|
${RM} ${CLEANS}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| /* end confdefs.h. */
|
| /* end confdefs.h. */
|
||||||
| #include <ac_nonexistent.h>
|
| #include <ac_nonexistent.h>
|
||||||
configure:3476: result: gcc -E
|
configure:3476: result: gcc -E
|
||||||
|
|
@ -146,7 +146,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| /* end confdefs.h. */
|
| /* end confdefs.h. */
|
||||||
| #include <ac_nonexistent.h>
|
| #include <ac_nonexistent.h>
|
||||||
configure:3596: checking for g++
|
configure:3596: checking for g++
|
||||||
|
|
@ -302,7 +302,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| #define STDC_HEADERS 1
|
| #define STDC_HEADERS 1
|
||||||
| #define HAVE_SYS_TYPES_H 1
|
| #define HAVE_SYS_TYPES_H 1
|
||||||
| #define HAVE_SYS_STAT_H 1
|
| #define HAVE_SYS_STAT_H 1
|
||||||
|
|
@ -343,7 +343,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| #define STDC_HEADERS 1
|
| #define STDC_HEADERS 1
|
||||||
| #define HAVE_SYS_TYPES_H 1
|
| #define HAVE_SYS_TYPES_H 1
|
||||||
| #define HAVE_SYS_STAT_H 1
|
| #define HAVE_SYS_STAT_H 1
|
||||||
|
|
@ -433,7 +433,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| #define STDC_HEADERS 1
|
| #define STDC_HEADERS 1
|
||||||
| #define HAVE_SYS_TYPES_H 1
|
| #define HAVE_SYS_TYPES_H 1
|
||||||
| #define HAVE_SYS_STAT_H 1
|
| #define HAVE_SYS_STAT_H 1
|
||||||
|
|
@ -506,7 +506,7 @@ configure: failed program was:
|
||||||
| #define PACKAGE_BUGREPORT ""
|
| #define PACKAGE_BUGREPORT ""
|
||||||
| #define PACKAGE_URL ""
|
| #define PACKAGE_URL ""
|
||||||
| #define MAGIC_VERSION "8.2"
|
| #define MAGIC_VERSION "8.2"
|
||||||
| #define MAGIC_REVISION "53"
|
| #define MAGIC_REVISION "101"
|
||||||
| #define STDC_HEADERS 1
|
| #define STDC_HEADERS 1
|
||||||
| #define HAVE_SYS_TYPES_H 1
|
| #define HAVE_SYS_TYPES_H 1
|
||||||
| #define HAVE_SYS_STAT_H 1
|
| #define HAVE_SYS_STAT_H 1
|
||||||
|
|
@ -634,7 +634,7 @@ configure:7575: checking for cairo_user_to_device in -lcairo
|
||||||
configure:7600: gcc -o conftest -g -lm conftest.c -lcairo -lGLU -lGL >&5
|
configure:7600: gcc -o conftest -g -lm conftest.c -lcairo -lGLU -lGL >&5
|
||||||
configure:7600: $? = 0
|
configure:7600: $? = 0
|
||||||
configure:7609: result: yes
|
configure:7609: result: yes
|
||||||
configure:8414: creating ./config.status
|
configure:8417: creating ./config.status
|
||||||
|
|
||||||
## ---------------------- ##
|
## ---------------------- ##
|
||||||
## Running config.status. ##
|
## Running config.status. ##
|
||||||
|
|
@ -759,7 +759,7 @@ CPPFLAGS=''
|
||||||
CSH='/bin/csh'
|
CSH='/bin/csh'
|
||||||
CXX='g++'
|
CXX='g++'
|
||||||
CXXFLAGS='-g -O2'
|
CXXFLAGS='-g -O2'
|
||||||
DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"53\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1'
|
DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"101\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1'
|
||||||
DEPEND_FLAG='-MM'
|
DEPEND_FLAG='-MM'
|
||||||
ECHO_C=''
|
ECHO_C=''
|
||||||
ECHO_N='printf'
|
ECHO_N='printf'
|
||||||
|
|
@ -784,7 +784,7 @@ LIB_SPECS=' -L/usr/lib64 -ltkstub8.6 -L/usr/lib64 -ltclstub8.6'
|
||||||
LIB_SPECS_NOSTUB=' -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6'
|
LIB_SPECS_NOSTUB=' -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6'
|
||||||
LTLIBOBJS=''
|
LTLIBOBJS=''
|
||||||
M4='/bin/m4'
|
M4='/bin/m4'
|
||||||
MAGIC_REVISION='53'
|
MAGIC_REVISION='101'
|
||||||
MAGIC_VERSION='8.2'
|
MAGIC_VERSION='8.2'
|
||||||
MCPP='${MAGICDIR}/scripts/preproc.py'
|
MCPP='${MAGICDIR}/scripts/preproc.py'
|
||||||
OA=''
|
OA=''
|
||||||
|
|
@ -886,7 +886,7 @@ unused=' readline lisp'
|
||||||
#define PACKAGE_BUGREPORT ""
|
#define PACKAGE_BUGREPORT ""
|
||||||
#define PACKAGE_URL ""
|
#define PACKAGE_URL ""
|
||||||
#define MAGIC_VERSION "8.2"
|
#define MAGIC_VERSION "8.2"
|
||||||
#define MAGIC_REVISION "53"
|
#define MAGIC_REVISION "101"
|
||||||
#define STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
#define HAVE_SYS_TYPES_H 1
|
#define HAVE_SYS_TYPES_H 1
|
||||||
#define HAVE_SYS_STAT_H 1
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
|
||||||
|
|
@ -427,7 +427,7 @@ Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
This config.status script is free software; the Free Software Foundation
|
This config.status script is free software; the Free Software Foundation
|
||||||
gives unlimited permission to copy, distribute and modify it."
|
gives unlimited permission to copy, distribute and modify it."
|
||||||
|
|
||||||
ac_pwd='/home/tim/gitsrc/magic-8.2/scripts'
|
ac_pwd='/home/tim/gitsrc/magic/scripts'
|
||||||
srcdir='..'
|
srcdir='..'
|
||||||
INSTALL='/bin/install -c'
|
INSTALL='/bin/install -c'
|
||||||
test -n "$AWK" || AWK=awk
|
test -n "$AWK" || AWK=awk
|
||||||
|
|
@ -588,7 +588,7 @@ S["INSTALL_TARGET"]="install-tcl"
|
||||||
S["ALL_TARGET"]="tcl"
|
S["ALL_TARGET"]="tcl"
|
||||||
S["OA_LIBS"]=""
|
S["OA_LIBS"]=""
|
||||||
S["OA"]=""
|
S["OA"]=""
|
||||||
S["MAGIC_REVISION"]="53"
|
S["MAGIC_REVISION"]="101"
|
||||||
S["MAGIC_VERSION"]="8.2"
|
S["MAGIC_VERSION"]="8.2"
|
||||||
S["SCPP"]="gcc -E -x c"
|
S["SCPP"]="gcc -E -x c"
|
||||||
S["MCPP"]="${MAGICDIR}/scripts/preproc.py"
|
S["MCPP"]="${MAGICDIR}/scripts/preproc.py"
|
||||||
|
|
@ -676,11 +676,11 @@ S["ECHO_T"]=""
|
||||||
S["ECHO_N"]="-n"
|
S["ECHO_N"]="-n"
|
||||||
S["ECHO_C"]=""
|
S["ECHO_C"]=""
|
||||||
S["DEFS"]="-DPACKAGE_NAME=\\\"\\\" -DPACKAGE_TARNAME=\\\"\\\" -DPACKAGE_VERSION=\\\"\\\" -DPACKAGE_STRING=\\\"\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\" -DMAGIC_VERSION="\
|
S["DEFS"]="-DPACKAGE_NAME=\\\"\\\" -DPACKAGE_TARNAME=\\\"\\\" -DPACKAGE_VERSION=\\\"\\\" -DPACKAGE_STRING=\\\"\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\" -DMAGIC_VERSION="\
|
||||||
"\\\"8.2\\\" -DMAGIC_REVISION=\\\"53\\\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHA"\
|
"\\\"8.2\\\" -DMAGIC_REVISION=\\\"101\\\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DH"\
|
||||||
"VE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_U"\
|
"AVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_"\
|
||||||
"NSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE"\
|
"UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAV"\
|
||||||
"_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHA"\
|
"E_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DH"\
|
||||||
"VE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1"
|
"AVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1"
|
||||||
S["mandir"]="${datarootdir}/man"
|
S["mandir"]="${datarootdir}/man"
|
||||||
S["localedir"]="${datarootdir}/locale"
|
S["localedir"]="${datarootdir}/locale"
|
||||||
S["libdir"]="${exec_prefix}/lib"
|
S["libdir"]="${exec_prefix}/lib"
|
||||||
|
|
|
||||||
|
|
@ -62,16 +62,16 @@ LIB_SPECS_NOSTUB = -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6
|
||||||
WISH_EXE = /usr/bin/wish
|
WISH_EXE = /usr/bin/wish
|
||||||
TCL_LIB_DIR = /usr/lib
|
TCL_LIB_DIR = /usr/lib
|
||||||
MAGIC_VERSION = 8.2
|
MAGIC_VERSION = 8.2
|
||||||
MAGIC_REVISION = 53
|
MAGIC_REVISION = 101
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CPP = gcc -E
|
CPP = gcc -E
|
||||||
CXX = g++
|
CXX = g++
|
||||||
|
|
||||||
CPPFLAGS = -I. -I${MAGICDIR}
|
CPPFLAGS = -I. -I${MAGICDIR}
|
||||||
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DUSE_TCL_STUBS -DUSE_TK_STUBS -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"53\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DUSE_TCL_STUBS -DUSE_TK_STUBS -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"101\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
DFLAGS += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
||||||
DFLAGS_NOSTUB = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"53\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
DFLAGS_NOSTUB = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"101\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS_NOSTUB += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
DFLAGS_NOSTUB += -DSHDLIB_EXT=\".so\" -DNDEBUG
|
||||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,42 @@
|
||||||
selCreate.o: selCreate.c ../utils/magic.h ../utils/malloc.h \
|
selCreate.o: selCreate.c ../utils/magic.h ../utils/malloc.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/undo.h ../commands/commands.h ../select/selInt.h \
|
../utils/undo.h ../commands/commands.h ../select/selInt.h \
|
||||||
../select/select.h ../drc/drc.h ../utils/main.h ../utils/signals.h
|
../select/select.h ../drc/drc.h ../utils/main.h ../utils/signals.h
|
||||||
selDisplay.o: selDisplay.c ../utils/magic.h ../utils/geometry.h \
|
selDisplay.o: selDisplay.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/styles.h ../textio/textio.h ../utils/signals.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
|
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||||
|
../utils/signals.h
|
||||||
selEnum.o: selEnum.c ../utils/magic.h ../utils/geometry.h \
|
selEnum.o: selEnum.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../windows/windows.h ../utils/main.h ../select/select.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../select/selInt.h ../utils/malloc.h ../textio/textio.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h \
|
||||||
|
../select/select.h ../select/selInt.h ../utils/malloc.h \
|
||||||
|
../textio/textio.h
|
||||||
selOps.o: selOps.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
selOps.o: selOps.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../dbwind/dbwind.h ../utils/main.h ../select/select.h ../select/selInt.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../textio/textio.h ../utils/undo.h ../plow/plow.h ../utils/malloc.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../drc/drc.h
|
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||||
|
../select/select.h ../select/selInt.h ../textio/textio.h ../utils/undo.h \
|
||||||
|
../plow/plow.h ../utils/malloc.h ../drc/drc.h
|
||||||
selUndo.o: selUndo.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
selUndo.o: selUndo.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/undo.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../commands/commands.h ../textio/textio.h ../select/select.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../select/selInt.h
|
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||||
|
../utils/undo.h ../commands/commands.h ../textio/textio.h \
|
||||||
|
../select/select.h ../select/selInt.h
|
||||||
selUnselect.o: selUnselect.c ../utils/magic.h ../utils/geometry.h \
|
selUnselect.o: selUnselect.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../commands/commands.h ../utils/main.h ../select/select.h \
|
../commands/commands.h ../utils/main.h ../select/select.h \
|
||||||
../select/selInt.h ../utils/malloc.h ../textio/textio.h
|
../select/selInt.h ../utils/malloc.h ../textio/textio.h
|
||||||
|
|
|
||||||
|
|
@ -1232,8 +1232,8 @@ selACPaintFunc2(tile, selACarg)
|
||||||
Rect rrect, orect;
|
Rect rrect, orect;
|
||||||
int np, i, j;
|
int np, i, j;
|
||||||
|
|
||||||
ttype = (selACarg->ttype & TT_SIDE) ? ((ttype & TT_RIGHTMASK) >> 14) :
|
ttype = (selACarg->ttype & TT_SIDE) ? ((selACarg->ttype & TT_RIGHTMASK) >> 14) :
|
||||||
ttype & TT_LEFTMASK;
|
selACarg->ttype & TT_LEFTMASK;
|
||||||
|
|
||||||
if (type & TT_DIAGONAL)
|
if (type & TT_DIAGONAL)
|
||||||
rtype = (type & TT_SIDE) ? SplitRightType(tile) :
|
rtype = (type & TT_SIDE) ? SplitRightType(tile) :
|
||||||
|
|
|
||||||
12
sim/Depend
12
sim/Depend
|
|
@ -1,19 +1,25 @@
|
||||||
SimDBstuff.o: SimDBstuff.c ../utils/magic.h ../utils/geometry.h \
|
SimDBstuff.o: SimDBstuff.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../database/databaseInt.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../database/databaseInt.h ../textio/textio.h \
|
||||||
../utils/signals.h ../utils/malloc.h ../extract/extractInt.h \
|
../utils/signals.h ../utils/malloc.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../sim/sim.h ../windows/windows.h \
|
../extract/extDebugInt.h ../sim/sim.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../commands/commands.h ../textio/txcommands.h \
|
../dbwind/dbwind.h ../commands/commands.h ../textio/txcommands.h \
|
||||||
../utils/styles.h ../graphics/graphics.h
|
../utils/styles.h ../graphics/graphics.h
|
||||||
SimSelect.o: SimSelect.c ../tcltk/tclmagic.h ../utils/magic.h \
|
SimSelect.o: SimSelect.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||||
../utils/undo.h ../commands/commands.h ../select/selInt.h \
|
../utils/undo.h ../commands/commands.h ../select/selInt.h \
|
||||||
../utils/main.h ../utils/malloc.h ../utils/signals.h ../sim/sim.h
|
../utils/main.h ../utils/malloc.h ../utils/signals.h ../sim/sim.h
|
||||||
SimRsim.o: SimRsim.c
|
SimRsim.o: SimRsim.c
|
||||||
SimExtract.o: SimExtract.c ../tcltk/tclmagic.h ../utils/magic.h \
|
SimExtract.o: SimExtract.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h ../textio/textio.h \
|
||||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../sim/sim.h
|
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../sim/sim.h
|
||||||
|
|
|
||||||
10
tcltk/Depend
10
tcltk/Depend
|
|
@ -1,6 +1,8 @@
|
||||||
tclmagic.o: tclmagic.c ../tcltk/tclmagic.h ../utils/main.h \
|
tclmagic.o: tclmagic.c ../tcltk/tclmagic.h ../utils/main.h \
|
||||||
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
||||||
../database/database.h ../tiles/tile.h ../utils/hash.h ../utils/dqueue.h \
|
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../commands/commands.h ../utils/utils.h ../textio/textio.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/txcommands.h ../utils/signals.h ../graphics/graphics.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/malloc.h ../dbwind/dbwind.h
|
../bplane/bplaneInt.h ../utils/dqueue.h ../commands/commands.h \
|
||||||
|
../textio/textio.h ../textio/txcommands.h ../utils/signals.h \
|
||||||
|
../graphics/graphics.h ../utils/malloc.h ../dbwind/dbwind.h
|
||||||
|
|
|
||||||
|
|
@ -655,11 +655,11 @@ proc magic::tool {{type next}} {
|
||||||
macro Button1 "magic::trackwire %W pick"
|
macro Button1 "magic::trackwire %W pick"
|
||||||
macro Button2 "magic::trackwire %W done"
|
macro Button2 "magic::trackwire %W done"
|
||||||
macro Button3 "magic::trackwire %W cancel"
|
macro Button3 "magic::trackwire %W cancel"
|
||||||
macro Shift_Button1 "wire incr type"
|
macro Shift_Button1 "wire incr type ; wire show"
|
||||||
macro Shift_Button2 "wire switch"
|
macro Shift_Button2 "wire switch"
|
||||||
macro Shift_Button3 "wire decr type"
|
macro Shift_Button3 "wire decr type ; wire show"
|
||||||
macro Button4 "wire incr width"
|
macro Button4 "wire incr width ; wire show"
|
||||||
macro Button5 "wire decr width"
|
macro Button5 "wire decr width ; wire show"
|
||||||
|
|
||||||
}
|
}
|
||||||
netlist {
|
netlist {
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,27 @@
|
||||||
txCommands.o: txCommands.c ../utils/magsgtty.h ../utils/magic.h \
|
txCommands.o: txCommands.c ../tcltk/tclmagic.h ../utils/magsgtty.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
../utils/magic.h ../textio/textio.h ../utils/geometry.h \
|
||||||
../textio/textioInt.h ../utils/macros.h ../utils/hash.h \
|
../textio/txcommands.h ../textio/textioInt.h ../utils/macros.h \
|
||||||
../windows/windows.h ../tiles/tile.h ../database/database.h \
|
../utils/hash.h ../windows/windows.h ../tiles/tile.h \
|
||||||
../dbwind/dbwind.h ../drc/drc.h ../utils/signals.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../dbwind/dbwind.h ../drc/drc.h ../utils/signals.h \
|
||||||
../graphics/graphics.h ../utils/dqueue.h ../utils/malloc.h \
|
../graphics/graphics.h ../utils/dqueue.h ../utils/malloc.h \
|
||||||
../utils/utils.h ../lisp/lisp.h
|
../lisp/lisp.h
|
||||||
txInput.o: txInput.c ../utils/magsgtty.h ../utils/magic.h ../utils/main.h \
|
txInput.o: txInput.c ../utils/magsgtty.h ../utils/magic.h ../utils/main.h \
|
||||||
../windows/windows.h ../utils/geometry.h ../database/database.h \
|
../windows/windows.h ../utils/geometry.h ../database/database.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../textio/textio.h \
|
../tiles/tile.h ../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../textio/txcommands.h ../textio/textioInt.h ../utils/dqueue.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/macros.h ../graphics/graphics.h ../database/databaseInt.h \
|
../bplane/bplaneInt.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
../cif/CIFint.h ../cif/CIFread.h
|
../textio/textioInt.h ../utils/dqueue.h ../utils/macros.h \
|
||||||
|
../graphics/graphics.h ../database/databaseInt.h ../cif/CIFint.h \
|
||||||
|
../cif/CIFread.h
|
||||||
txMain.o: txMain.c ../utils/magsgtty.h ../utils/magic.h \
|
txMain.o: txMain.c ../utils/magsgtty.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
||||||
../textio/textioInt.h ../windows/windows.h ../tiles/tile.h \
|
../textio/textioInt.h ../windows/windows.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../dbwind/dbwind.h
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../dbwind/dbwind.h
|
||||||
txMore.o: txMore.c ../utils/magic.h
|
txMore.o: txMore.c ../utils/magic.h
|
||||||
txOutput.o: txOutput.c ../utils/magsgtty.h ../utils/magic.h \
|
txOutput.o: txOutput.c ../utils/magsgtty.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
tile.o: tile.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
tile.o: tile.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
||||||
../tiles/tile.h
|
../tiles/tile.h
|
||||||
search.o: search.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h
|
search.o: search.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h
|
||||||
search2.o: search2.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
|
||||||
../utils/signals.h
|
|
||||||
|
|
|
||||||
72
utils/Depend
72
utils/Depend
|
|
@ -3,8 +3,10 @@ child.o: child.c ../utils/utils.h ../utils/magic.h ../utils/malloc.h
|
||||||
dqueue.o: dqueue.c ../utils/magic.h ../utils/dqueue.h ../utils/malloc.h
|
dqueue.o: dqueue.c ../utils/magic.h ../utils/dqueue.h ../utils/malloc.h
|
||||||
finddisp.o: finddisp.c ../utils/magic.h ../utils/utils.h
|
finddisp.o: finddisp.c ../utils/magic.h ../utils/utils.h
|
||||||
flock.o: flock.c ../utils/magic.h ../utils/hash.h ../utils/geometry.h \
|
flock.o: flock.c ../utils/magic.h ../utils/hash.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../database/database.h ../windows/windows.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/malloc.h
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../windows/windows.h ../utils/malloc.h
|
||||||
flsbuf.o: flsbuf.c
|
flsbuf.o: flsbuf.c
|
||||||
fraction.o: fraction.c ../utils/magic.h ../utils/geometry.h
|
fraction.o: fraction.c ../utils/magic.h ../utils/geometry.h
|
||||||
geometry.o: geometry.c ../utils/magic.h ../utils/geometry.h \
|
geometry.o: geometry.c ../utils/magic.h ../utils/geometry.h \
|
||||||
|
|
@ -13,36 +15,48 @@ getrect.o: getrect.c ../utils/magic.h ../utils/geometry.h
|
||||||
hash.o: hash.c ../utils/magic.h ../utils/hash.h ../utils/malloc.h
|
hash.o: hash.c ../utils/magic.h ../utils/hash.h ../utils/malloc.h
|
||||||
heap.o: heap.c ../utils/magic.h ../utils/geometry.h ../utils/heap.h \
|
heap.o: heap.c ../utils/magic.h ../utils/geometry.h ../utils/heap.h \
|
||||||
../utils/utils.h ../utils/malloc.h
|
../utils/utils.h ../utils/malloc.h
|
||||||
|
ihash.o: ihash.c ../utils/magic.h ../utils/malloc.h ../utils/utils.h \
|
||||||
|
../utils/ihash.h
|
||||||
list.o: list.c ../utils/magic.h ../utils/utils.h ../utils/malloc.h \
|
list.o: list.c ../utils/magic.h ../utils/utils.h ../utils/malloc.h \
|
||||||
../utils/list.h
|
../utils/list.h
|
||||||
lookup.o: lookup.c ../utils/magic.h ../utils/utils.h
|
lookup.o: lookup.c ../utils/magic.h ../utils/utils.h
|
||||||
lookupany.o: lookupany.c
|
lookupany.o: lookupany.c
|
||||||
lookupfull.o: lookupfull.c ../utils/magic.h
|
lookupfull.o: lookupfull.c ../utils/magic.h
|
||||||
macros.o: macros.c ../utils/magic.h ../utils/utils.h ../utils/hash.h \
|
macros.o: macros.c ../utils/magic.h ../utils/main.h ../windows/windows.h \
|
||||||
../utils/malloc.h ../utils/macros.h ../windows/windows.h \
|
|
||||||
../utils/geometry.h
|
|
||||||
main.o: main.c ../utils/main.h ../windows/windows.h ../utils/magic.h \
|
|
||||||
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../utils/malloc.h ../utils/magsgtty.h ../utils/macros.h \
|
../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../textio/textio.h ../textio/txcommands.h ../utils/tech.h ../drc/drc.h \
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../graphics/graphics.h ../dbwind/dbwind.h ../commands/commands.h \
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/macros.h
|
||||||
../utils/signals.h ../utils/utils.h ../utils/runstats.h ../cif/cif.h \
|
main.o: main.c ../tcltk/tclmagic.h ../utils/main.h ../windows/windows.h \
|
||||||
../router/router.h ../lef/lef.h ../extract/extract.h ../utils/undo.h \
|
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
||||||
../netmenu/netmenu.h ../plow/plow.h ../utils/paths.h ../wiring/wiring.h \
|
../tiles/tile.h ../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../plot/plot.h ../sim/sim.h ../utils/list.h ../mzrouter/mzrouter.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../lisp/lisp.h ../graphics/wind3d.h
|
../bplane/bplaneInt.h ../utils/malloc.h ../utils/magsgtty.h \
|
||||||
|
../utils/macros.h ../textio/textio.h ../textio/txcommands.h \
|
||||||
|
../utils/tech.h ../drc/drc.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||||
|
../commands/commands.h ../utils/signals.h ../utils/runstats.h \
|
||||||
|
../cif/cif.h ../router/router.h ../lef/lef.h ../extract/extract.h \
|
||||||
|
../utils/undo.h ../netmenu/netmenu.h ../plow/plow.h ../utils/paths.h \
|
||||||
|
../wiring/wiring.h ../plot/plot.h ../sim/sim.h ../utils/list.h \
|
||||||
|
../mzrouter/mzrouter.h ../lisp/lisp.h ../graphics/wind3d.h
|
||||||
malloc.o: malloc.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h
|
malloc.o: malloc.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/malloc.h
|
||||||
match.o: match.c ../utils/magic.h ../textio/textio.h
|
match.o: match.c ../utils/magic.h ../textio/textio.h
|
||||||
maxrect.o: maxrect.c ../utils/maxrect.h ../database/database.h \
|
maxrect.o: maxrect.c ../utils/maxrect.h ../database/database.h \
|
||||||
../tiles/tile.h ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
../tiles/tile.h ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/malloc.h
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/malloc.h
|
||||||
netlist.o: netlist.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
netlist.o: netlist.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||||
../utils/netlist.h ../utils/signals.h ../textio/textio.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/malloc.h ../utils/styles.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/netlist.h ../utils/signals.h \
|
||||||
|
../textio/textio.h ../utils/malloc.h ../utils/styles.h
|
||||||
niceabort.o: niceabort.c ../utils/magic.h ../textio/textio.h \
|
niceabort.o: niceabort.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/utils.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../windows/windows.h ../utils/main.h
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../windows/windows.h ../utils/main.h
|
||||||
parser.o: parser.c ../utils/magic.h ../textio/textio.h
|
parser.o: parser.c ../utils/magic.h ../textio/textio.h
|
||||||
path.o: path.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/hash.h \
|
path.o: path.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/hash.h \
|
||||||
../utils/malloc.h ../utils/utils.h
|
../utils/malloc.h ../utils/utils.h
|
||||||
|
|
@ -52,22 +66,34 @@ port.o: port.c ../utils/magic.h ../utils/hash.h ../utils/malloc.h
|
||||||
printstuff.o: printstuff.c ../utils/magic.h ../utils/geometry.h
|
printstuff.o: printstuff.c ../utils/magic.h ../utils/geometry.h
|
||||||
signals.o: signals.c ../utils/main.h ../windows/windows.h \
|
signals.o: signals.c ../utils/main.h ../windows/windows.h \
|
||||||
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../utils/magsgtty.h ../textio/textio.h \
|
../tiles/tile.h ../utils/hash.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/magsgtty.h ../textio/textio.h \
|
||||||
../utils/signals.h ../graphics/graphics.h
|
../utils/signals.h ../graphics/graphics.h
|
||||||
stack.o: stack.c ../utils/magic.h ../utils/utils.h ../utils/stack.h \
|
stack.o: stack.c ../utils/magic.h ../utils/utils.h ../utils/stack.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
strdup.o: strdup.c ../utils/magic.h ../utils/malloc.h
|
strdup.o: strdup.c ../utils/magic.h ../utils/malloc.h
|
||||||
runstats.o: runstats.c ../utils/magic.h ../utils/runstats.h
|
runstats.o: runstats.c ../utils/magic.h ../utils/runstats.h
|
||||||
set.o: set.c ../utils/magic.h ../utils/utils.h ../utils/geometry.h \
|
set.o: set.c ../utils/magic.h ../utils/utils.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/list.h
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/list.h
|
||||||
show.o: show.c ../utils/magic.h ../utils/geometry.h ../windows/windows.h \
|
show.o: show.c ../utils/magic.h ../utils/geometry.h ../windows/windows.h \
|
||||||
../graphics/graphics.h ../utils/hash.h ../tiles/tile.h \
|
../graphics/graphics.h ../utils/hash.h ../tiles/tile.h \
|
||||||
../database/database.h ../dbwind/dbwind.h
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
tech.o: tech.c ../utils/magic.h ../utils/geometry.h ../utils/utils.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../dbwind/dbwind.h
|
||||||
|
tech.o: tech.c ../database/database.h ../tiles/tile.h ../utils/magic.h \
|
||||||
|
../utils/geometry.h ../utils/hash.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../utils/tech.h ../textio/textio.h ../windows/windows.h \
|
../utils/tech.h ../textio/textio.h ../windows/windows.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
touchtypes.o: touchtypes.c ../utils/magic.h ../utils/geometry.h \
|
touchtypes.o: touchtypes.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h \
|
||||||
|
../bplane/bplaneInt.h
|
||||||
undo.o: undo.c ../utils/magic.h ../utils/utils.h ../utils/malloc.h \
|
undo.o: undo.c ../utils/magic.h ../utils/utils.h ../utils/malloc.h \
|
||||||
../utils/undo.h
|
../utils/undo.h
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,35 @@
|
||||||
windClient.o: windClient.c ../utils/magic.h ../textio/textio.h \
|
windClient.o: windClient.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
||||||
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/main.h ../utils/macros.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/utils.h ../utils/malloc.h ../graphics/graphics.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../utils/styles.h ../textio/txcommands.h ../utils/undo.h
|
../bplane/bplaneInt.h ../utils/main.h ../utils/macros.h \
|
||||||
|
../utils/malloc.h ../graphics/graphics.h ../utils/styles.h \
|
||||||
|
../textio/txcommands.h ../utils/undo.h
|
||||||
windCmdAM.o: windCmdAM.c ../tcltk/tclmagic.h ../utils/magic.h \
|
windCmdAM.o: windCmdAM.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../windows/windows.h \
|
../textio/textio.h ../utils/geometry.h ../windows/windows.h \
|
||||||
../utils/malloc.h ../utils/runstats.h ../utils/macros.h ../utils/hash.h \
|
../utils/malloc.h ../utils/runstats.h ../utils/macros.h ../utils/hash.h \
|
||||||
../utils/signals.h ../graphics/graphics.h ../utils/styles.h \
|
../utils/signals.h ../graphics/graphics.h ../utils/styles.h \
|
||||||
../textio/txcommands.h ../graphics/glyphs.h ../windows/windInt.h \
|
../textio/txcommands.h ../graphics/glyphs.h ../windows/windInt.h \
|
||||||
../tiles/tile.h ../database/database.h ../dbwind/dbwind.h \
|
../tiles/tile.h ../database/database.h ../bplane/bplane.h \
|
||||||
../utils/utils.h
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../dbwind/dbwind.h ../cif/cif.h
|
||||||
windCmdNR.o: windCmdNR.c ../utils/magic.h ../textio/textio.h \
|
windCmdNR.o: windCmdNR.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
||||||
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/main.h ../utils/tech.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
../utils/runstats.h ../utils/undo.h ../utils/utils.h \
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
../graphics/graphics.h ../textio/txcommands.h ../dbwind/dbwind.h
|
../bplane/bplaneInt.h ../utils/main.h ../utils/tech.h \
|
||||||
|
../utils/runstats.h ../utils/undo.h ../graphics/graphics.h \
|
||||||
|
../textio/txcommands.h ../dbwind/dbwind.h
|
||||||
windCmdSZ.o: windCmdSZ.c ../tcltk/tclmagic.h ../utils/magic.h \
|
windCmdSZ.o: windCmdSZ.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../tiles/tile.h \
|
../textio/textio.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.h \
|
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.h \
|
||||||
../utils/undo.h ../utils/utils.h ../utils/signals.h \
|
../utils/undo.h ../utils/utils.h ../utils/signals.h \
|
||||||
../textio/txcommands.h ../utils/hash.h ../database/database.h \
|
../textio/txcommands.h ../utils/hash.h ../database/database.h \
|
||||||
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
|
../bplane/bpEnum.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../dbwind/dbwind.h ../graphics/graphics.h
|
../dbwind/dbwind.h ../graphics/graphics.h
|
||||||
windSend.o: windSend.c ../tcltk/tclmagic.h ../utils/magic.h \
|
windSend.o: windSend.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../textio/textio.h ../utils/geometry.h ../windows/windows.h \
|
../textio/textio.h ../utils/geometry.h ../windows/windows.h \
|
||||||
|
|
@ -34,17 +42,24 @@ windDisp.o: windDisp.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||||
../utils/utils.h ../textio/textio.h ../utils/geometry.h \
|
../utils/utils.h ../textio/textio.h ../utils/geometry.h \
|
||||||
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.h \
|
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.h \
|
||||||
../graphics/graphics.h ../utils/styles.h ../tiles/tile.h ../utils/hash.h \
|
../graphics/graphics.h ../utils/styles.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/undo.h ../utils/signals.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/undo.h ../utils/signals.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
windMain.o: windMain.c ../utils/magic.h ../utils/geometry.h \
|
windMain.o: windMain.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.h \
|
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.h \
|
||||||
../utils/stack.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
../utils/stack.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../textio/textio.h ../graphics/graphics.h ../utils/malloc.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/utils.h ../textio/txcommands.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../textio/textio.h ../graphics/graphics.h \
|
||||||
|
../utils/malloc.h ../textio/txcommands.h
|
||||||
windMove.o: windMove.c ../utils/magic.h ../textio/textio.h \
|
windMove.o: windMove.c ../utils/magic.h ../textio/textio.h \
|
||||||
../utils/geometry.h ../windows/windows.h ../graphics/graphics.h \
|
../utils/geometry.h ../windows/windows.h ../graphics/graphics.h \
|
||||||
../graphics/glyphs.h ../windows/windInt.h ../tiles/tile.h \
|
../graphics/glyphs.h ../windows/windInt.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../utils/malloc.h
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
|
../utils/malloc.h
|
||||||
windSearch.o: windSearch.c ../utils/magic.h ../utils/geometry.h \
|
windSearch.o: windSearch.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.h
|
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.h
|
||||||
windTrans.o: windTrans.c ../utils/magic.h ../utils/geometry.h \
|
windTrans.o: windTrans.c ../utils/magic.h ../utils/geometry.h \
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,19 @@
|
||||||
wireOps.o: wireOps.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
wireOps.o: wireOps.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||||
../utils/hash.h ../database/database.h ../select/select.h \
|
../utils/hash.h ../database/database.h ../bplane/bplane.h \
|
||||||
../textio/textio.h ../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h \
|
../bplane/bpOpaque.h ../utils/ihash.h ../bplane/bpEnum.h \
|
||||||
../utils/main.h ../wiring/wiring.h ../wiring/wireInt.h \
|
../utils/utils.h ../utils/geofast.h ../bplane/bplaneInt.h \
|
||||||
../textio/txcommands.h ../utils/styles.h
|
../select/select.h ../textio/textio.h ../windows/windows.h \
|
||||||
|
../dbwind/dbwind.h ../drc/drc.h ../utils/main.h ../wiring/wiring.h \
|
||||||
|
../wiring/wireInt.h ../textio/txcommands.h ../utils/styles.h
|
||||||
wireTech.o: wireTech.c ../utils/magic.h ../utils/utils.h \
|
wireTech.o: wireTech.c ../utils/magic.h ../utils/utils.h \
|
||||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||||
../database/database.h ../utils/tech.h ../wiring/wiring.h \
|
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.h \
|
||||||
|
../utils/ihash.h ../bplane/bpEnum.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../wiring/wiring.h \
|
||||||
../utils/malloc.h
|
../utils/malloc.h
|
||||||
wireUndo.o: wireUndo.c ../utils/magic.h ../utils/geometry.h \
|
wireUndo.o: wireUndo.c ../utils/magic.h ../utils/geometry.h \
|
||||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||||
../wiring/wiring.h ../wiring/wireInt.h ../textio/textio.h \
|
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||||
../utils/undo.h
|
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.h \
|
||||||
|
../bplane/bplaneInt.h ../utils/tech.h ../wiring/wiring.h \
|
||||||
|
../wiring/wireInt.h ../textio/textio.h ../utils/undo.h
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
extern TileType WireType;
|
extern TileType WireType;
|
||||||
extern int WireWidth;
|
extern int WireWidth;
|
||||||
extern int WireLastDir;
|
extern int WireLastDir;
|
||||||
|
extern int WireUnits;
|
||||||
|
|
||||||
/* Undo procedure: */
|
/* Undo procedure: */
|
||||||
|
|
||||||
|
|
|
||||||
244
wiring/wireOps.c
244
wiring/wireOps.c
|
|
@ -301,6 +301,7 @@ WireAddLeg(rect, point, direction)
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
Point cursorPos;
|
Point cursorPos;
|
||||||
TileTypeBitMask mask;
|
TileTypeBitMask mask;
|
||||||
|
int hwidth = WireWidth / 2;
|
||||||
|
|
||||||
if (WireType == 0)
|
if (WireType == 0)
|
||||||
{
|
{
|
||||||
|
|
@ -372,20 +373,34 @@ WireAddLeg(rect, point, direction)
|
||||||
|
|
||||||
if (direction == WIRE_HORIZONTAL)
|
if (direction == WIRE_HORIZONTAL)
|
||||||
{
|
{
|
||||||
|
/* If the rect height is not the same as WireWidth, then center */
|
||||||
|
/* the new wire segment on the rect. */
|
||||||
|
|
||||||
|
if (rect->r_ytop - rect->r_ybot != WireWidth)
|
||||||
|
{
|
||||||
|
int rmid = (rect->r_ytop + rect->r_ybot) / 2;
|
||||||
|
rect->r_ybot = rmid - hwidth;
|
||||||
|
rect->r_ytop = rect->r_ybot + WireWidth;
|
||||||
|
|
||||||
|
rmid = (rect->r_xtop + rect->r_xbot) / 2;
|
||||||
|
rect->r_xbot = rmid - hwidth;
|
||||||
|
rect->r_xtop = rect->r_xbot + WireWidth;
|
||||||
|
}
|
||||||
|
|
||||||
/* The new leg will be horizontal. First compute its span in
|
/* The new leg will be horizontal. First compute its span in
|
||||||
* x, then its span in y.
|
* x, then its span in y.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (point->p_x > rect->r_xtop)
|
if (point->p_x > rect->r_xtop)
|
||||||
{
|
{
|
||||||
new.r_xbot = rect->r_xtop;
|
new.r_xbot = rect->r_xbot;
|
||||||
new.r_xtop = point->p_x;
|
new.r_xtop = point->p_x + hwidth;
|
||||||
WireLastDir = GEO_EAST;
|
WireLastDir = GEO_EAST;
|
||||||
}
|
}
|
||||||
else if (point->p_x < rect->r_xbot)
|
else if (point->p_x < rect->r_xbot)
|
||||||
{
|
{
|
||||||
new.r_xtop = rect->r_xbot;
|
new.r_xtop = rect->r_xtop;
|
||||||
new.r_xbot = point->p_x;
|
new.r_xbot = point->p_x - hwidth;
|
||||||
WireLastDir = GEO_WEST;
|
WireLastDir = GEO_WEST;
|
||||||
}
|
}
|
||||||
else return; /* Nothing to paint! */
|
else return; /* Nothing to paint! */
|
||||||
|
|
@ -395,7 +410,7 @@ WireAddLeg(rect, point, direction)
|
||||||
* the wires so there's no real choice.
|
* the wires so there's no real choice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
new.r_ybot = point->p_y - WireWidth/2;
|
new.r_ybot = point->p_y - hwidth;
|
||||||
if (new.r_ybot < rect->r_ybot)
|
if (new.r_ybot < rect->r_ybot)
|
||||||
new.r_ybot = rect->r_ybot;
|
new.r_ybot = rect->r_ybot;
|
||||||
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
||||||
|
|
@ -404,20 +419,34 @@ WireAddLeg(rect, point, direction)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* If the rect width is not the same as WireWidth, then center */
|
||||||
|
/* the new wire segment on the rect. */
|
||||||
|
|
||||||
|
if (rect->r_xtop - rect->r_xbot != WireWidth)
|
||||||
|
{
|
||||||
|
int rmid = (rect->r_xtop + rect->r_xbot) / 2;
|
||||||
|
rect->r_xbot = rmid - hwidth;
|
||||||
|
rect->r_xtop = rect->r_xbot + WireWidth;
|
||||||
|
|
||||||
|
rmid = (rect->r_ytop + rect->r_ybot) / 2;
|
||||||
|
rect->r_ybot = rmid - hwidth;
|
||||||
|
rect->r_ytop = rect->r_ybot + WireWidth;
|
||||||
|
}
|
||||||
|
|
||||||
/* The new wire segment is vertical. See comments above (this
|
/* The new wire segment is vertical. See comments above (this
|
||||||
* code is just like what's up there).
|
* code is just like what's up there).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (point->p_y > rect->r_ytop)
|
if (point->p_y > rect->r_ytop)
|
||||||
{
|
{
|
||||||
new.r_ybot = rect->r_ytop;
|
new.r_ybot = rect->r_ybot;
|
||||||
new.r_ytop = point->p_y;
|
new.r_ytop = point->p_y + hwidth;
|
||||||
WireLastDir = GEO_NORTH;
|
WireLastDir = GEO_NORTH;
|
||||||
}
|
}
|
||||||
else if (point->p_y < rect->r_ybot)
|
else if (point->p_y < rect->r_ybot)
|
||||||
{
|
{
|
||||||
new.r_ytop = rect->r_ybot;
|
new.r_ytop = rect->r_ytop;
|
||||||
new.r_ybot = point->p_y;
|
new.r_ybot = point->p_y - hwidth;
|
||||||
WireLastDir = GEO_SOUTH;
|
WireLastDir = GEO_SOUTH;
|
||||||
}
|
}
|
||||||
else return; /* Nothing to paint! */
|
else return; /* Nothing to paint! */
|
||||||
|
|
@ -453,7 +482,7 @@ WireAddLeg(rect, point, direction)
|
||||||
SelectChunk(&scx, WireType, 0, &leg, FALSE);
|
SelectChunk(&scx, WireType, 0, &leg, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make the box a square at the tip of the new are just painted. */
|
/* Make the box a square at the tip of the new area just painted. */
|
||||||
|
|
||||||
switch (WireLastDir)
|
switch (WireLastDir)
|
||||||
{
|
{
|
||||||
|
|
@ -517,6 +546,7 @@ WireShowLeg()
|
||||||
int direction = WIRE_CHOOSE;
|
int direction = WIRE_CHOOSE;
|
||||||
int delx, dely;
|
int delx, dely;
|
||||||
MagWindow *w;
|
MagWindow *w;
|
||||||
|
int hwidth = WireWidth / 2;
|
||||||
|
|
||||||
if (WireType == 0) return;
|
if (WireType == 0) return;
|
||||||
|
|
||||||
|
|
@ -557,20 +587,32 @@ WireShowLeg()
|
||||||
|
|
||||||
if (direction == WIRE_HORIZONTAL)
|
if (direction == WIRE_HORIZONTAL)
|
||||||
{
|
{
|
||||||
|
/* Correct for different width between wire and rect. */
|
||||||
|
if (rect->r_ytop - rect->r_ybot != WireWidth)
|
||||||
|
{
|
||||||
|
int rmid = (rect->r_ytop + rect->r_ybot) / 2;
|
||||||
|
rect->r_ybot = rmid - hwidth;
|
||||||
|
rect->r_ytop = rect->r_ybot + WireWidth;
|
||||||
|
|
||||||
|
rmid = (rect->r_xtop + rect->r_xbot) / 2;
|
||||||
|
rect->r_xbot = rmid - hwidth;
|
||||||
|
rect->r_xtop = rect->r_xbot + WireWidth;
|
||||||
|
}
|
||||||
|
|
||||||
/* The new leg will be horizontal. First compute its span in
|
/* The new leg will be horizontal. First compute its span in
|
||||||
* x, then its span in y.
|
* x, then its span in y.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (point->p_x > rect->r_xtop)
|
if (point->p_x > rect->r_xtop)
|
||||||
{
|
{
|
||||||
new.r_xbot = rect->r_xtop;
|
new.r_xbot = rect->r_xbot;
|
||||||
new.r_xtop = point->p_x;
|
new.r_xtop = point->p_x + hwidth;
|
||||||
WireLastDir = GEO_EAST;
|
WireLastDir = GEO_EAST;
|
||||||
}
|
}
|
||||||
else if (point->p_x < rect->r_xbot)
|
else if (point->p_x < rect->r_xbot)
|
||||||
{
|
{
|
||||||
new.r_xtop = rect->r_xbot;
|
new.r_xtop = rect->r_xtop;
|
||||||
new.r_xbot = point->p_x;
|
new.r_xbot = point->p_x - hwidth;
|
||||||
WireLastDir = GEO_WEST;
|
WireLastDir = GEO_WEST;
|
||||||
}
|
}
|
||||||
else return; /* Nothing to paint! */
|
else return; /* Nothing to paint! */
|
||||||
|
|
@ -580,7 +622,7 @@ WireShowLeg()
|
||||||
* the wires so there's no real choice.
|
* the wires so there's no real choice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
new.r_ybot = point->p_y - WireWidth/2;
|
new.r_ybot = point->p_y - hwidth;
|
||||||
if (new.r_ybot < rect->r_ybot)
|
if (new.r_ybot < rect->r_ybot)
|
||||||
new.r_ybot = rect->r_ybot;
|
new.r_ybot = rect->r_ybot;
|
||||||
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
||||||
|
|
@ -589,25 +631,37 @@ WireShowLeg()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* Correct for different width between wire and rect. */
|
||||||
|
if (rect->r_xtop - rect->r_xbot != WireWidth)
|
||||||
|
{
|
||||||
|
int rmid = (rect->r_xtop + rect->r_xbot) / 2;
|
||||||
|
rect->r_xbot = rmid - hwidth;
|
||||||
|
rect->r_xtop = rect->r_xbot + WireWidth;
|
||||||
|
|
||||||
|
rmid = (rect->r_ytop + rect->r_ybot) / 2;
|
||||||
|
rect->r_ybot = rmid - hwidth;
|
||||||
|
rect->r_ytop = rect->r_ybot + WireWidth;
|
||||||
|
}
|
||||||
|
|
||||||
/* The new wire segment is vertical. See comments above (this
|
/* The new wire segment is vertical. See comments above (this
|
||||||
* code is just like what's up there).
|
* code is just like what's up there).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (point->p_y > rect->r_ytop)
|
if (point->p_y > rect->r_ytop)
|
||||||
{
|
{
|
||||||
new.r_ybot = rect->r_ytop;
|
new.r_ybot = rect->r_ybot;
|
||||||
new.r_ytop = point->p_y;
|
new.r_ytop = point->p_y + hwidth;
|
||||||
WireLastDir = GEO_NORTH;
|
WireLastDir = GEO_NORTH;
|
||||||
}
|
}
|
||||||
else if (point->p_y < rect->r_ybot)
|
else if (point->p_y < rect->r_ybot)
|
||||||
{
|
{
|
||||||
new.r_ytop = rect->r_ybot;
|
new.r_ytop = rect->r_ytop;
|
||||||
new.r_ybot = point->p_y;
|
new.r_ybot = point->p_y - hwidth;
|
||||||
WireLastDir = GEO_SOUTH;
|
WireLastDir = GEO_SOUTH;
|
||||||
}
|
}
|
||||||
else return; /* Nothing to paint! */
|
else return; /* Nothing to paint! */
|
||||||
|
|
||||||
new.r_xbot = point->p_x - WireWidth/2;
|
new.r_xbot = point->p_x - hwidth;
|
||||||
if (new.r_xbot < rect->r_xbot)
|
if (new.r_xbot < rect->r_xbot)
|
||||||
new.r_xbot = rect->r_xbot;
|
new.r_xbot = rect->r_xbot;
|
||||||
if (new.r_xbot > rect->r_xtop - WireWidth)
|
if (new.r_xbot > rect->r_xtop - WireWidth)
|
||||||
|
|
@ -652,6 +706,9 @@ WireShowLeg()
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define WIRING_CONTACT_UP 1
|
||||||
|
#define WIRING_CONTACT_DOWN 0
|
||||||
|
|
||||||
void
|
void
|
||||||
WireAddContact(newType, newWidth)
|
WireAddContact(newType, newWidth)
|
||||||
TileType newType; /* New type of material to use for wiring.
|
TileType newType; /* New type of material to use for wiring.
|
||||||
|
|
@ -669,7 +726,9 @@ WireAddContact(newType, newWidth)
|
||||||
CellDef *boxRootDef;
|
CellDef *boxRootDef;
|
||||||
TileType oldType;
|
TileType oldType;
|
||||||
TileTypeBitMask mask, allmask;
|
TileTypeBitMask mask, allmask;
|
||||||
int oldOverlap, newOverlap, i, totalSize, oldDir;
|
int conSurround1, conSurround2, conExtend1, conExtend2, conSize;
|
||||||
|
int oldOverlap, newOverlap;
|
||||||
|
int i, totalSize, oldDir, updown;
|
||||||
Contact *contact;
|
Contact *contact;
|
||||||
SearchContext scx;
|
SearchContext scx;
|
||||||
|
|
||||||
|
|
@ -713,19 +772,43 @@ WireAddContact(newType, newWidth)
|
||||||
if ((contact->con_layer1 == oldType) &&
|
if ((contact->con_layer1 == oldType) &&
|
||||||
(contact->con_layer2 == WireType))
|
(contact->con_layer2 == WireType))
|
||||||
{
|
{
|
||||||
oldOverlap = contact->con_surround1;
|
conSurround1 = contact->con_surround1 / WireUnits;
|
||||||
newOverlap = contact->con_surround2;
|
if ((contact->con_surround1 % WireUnits) != 0) conSurround1++;
|
||||||
|
conSurround2 = contact->con_surround2 / WireUnits;
|
||||||
|
if ((contact->con_surround2 % WireUnits) != 0) conSurround2++;
|
||||||
|
conExtend1 = contact->con_extend1 / WireUnits;
|
||||||
|
if ((contact->con_extend1 % WireUnits) != 0) conExtend1++;
|
||||||
|
conExtend2 = contact->con_extend2 / WireUnits;
|
||||||
|
if ((contact->con_extend2 % WireUnits) != 0) conExtend2++;
|
||||||
|
conSize = contact->con_size / WireUnits;
|
||||||
|
if ((contact->con_size % WireUnits) != 0) conSize++;
|
||||||
|
|
||||||
|
oldOverlap = conSurround1;
|
||||||
|
newOverlap = conSurround2;
|
||||||
|
updown = WIRING_CONTACT_UP;
|
||||||
goto gotContact;
|
goto gotContact;
|
||||||
}
|
}
|
||||||
if ((contact->con_layer2 == oldType) &&
|
if ((contact->con_layer2 == oldType) &&
|
||||||
(contact->con_layer1 == WireType))
|
(contact->con_layer1 == WireType))
|
||||||
{
|
{
|
||||||
oldOverlap = contact->con_surround2;
|
conSurround1 = contact->con_surround1 / WireUnits;
|
||||||
newOverlap = contact->con_surround1;
|
if ((contact->con_surround1 % WireUnits) != 0) conSurround1++;
|
||||||
|
conSurround2 = contact->con_surround2 / WireUnits;
|
||||||
|
if ((contact->con_surround2 % WireUnits) != 0) conSurround2++;
|
||||||
|
conExtend1 = contact->con_extend1 / WireUnits;
|
||||||
|
if ((contact->con_extend1 % WireUnits) != 0) conExtend1++;
|
||||||
|
conExtend2 = contact->con_extend2 / WireUnits;
|
||||||
|
if ((contact->con_extend2 % WireUnits) != 0) conExtend2++;
|
||||||
|
conSize = contact->con_size / WireUnits;
|
||||||
|
if ((contact->con_size % WireUnits) != 0) conSize++;
|
||||||
|
|
||||||
|
oldOverlap = conSurround2;
|
||||||
|
newOverlap = conSurround1;
|
||||||
|
updown = WIRING_CONTACT_DOWN;
|
||||||
goto gotContact;
|
goto gotContact;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TxError("Sorry, but the technology file doesn't define a contact\n");
|
TxError("The technology file doesn't define a contact\n");
|
||||||
TxError(" between \"%s\" and \"%s\".\n", DBTypeLongName(oldType),
|
TxError(" between \"%s\" and \"%s\".\n", DBTypeLongName(oldType),
|
||||||
DBTypeLongName(WireType));
|
DBTypeLongName(WireType));
|
||||||
return;
|
return;
|
||||||
|
|
@ -739,18 +822,19 @@ WireAddContact(newType, newWidth)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
gotContact:
|
gotContact:
|
||||||
totalSize = contact->con_size + 2*oldOverlap;
|
totalSize = conSize + 2 * oldOverlap;
|
||||||
|
if (totalSize < WireWidth) totalSize = WireWidth;
|
||||||
contactArea = oldLeg;
|
contactArea = oldLeg;
|
||||||
if ((contactArea.r_xtop - contactArea.r_xbot) < totalSize)
|
if ((contactArea.r_xtop - contactArea.r_xbot) < totalSize)
|
||||||
{
|
{
|
||||||
contactArea.r_xbot -= (totalSize - (contactArea.r_xtop
|
contactArea.r_xbot -= (totalSize - (contactArea.r_xtop
|
||||||
- contactArea.r_xbot))/2;
|
- contactArea.r_xbot)) / 2;
|
||||||
contactArea.r_xtop = contactArea.r_xbot + totalSize;
|
contactArea.r_xtop = contactArea.r_xbot + totalSize;
|
||||||
}
|
}
|
||||||
if ((contactArea.r_ytop - contactArea.r_ybot) < totalSize)
|
if ((contactArea.r_ytop - contactArea.r_ybot) < totalSize)
|
||||||
{
|
{
|
||||||
contactArea.r_ybot -= (totalSize - (contactArea.r_ytop
|
contactArea.r_ybot -= (totalSize - (contactArea.r_ytop
|
||||||
- contactArea.r_ybot))/2;
|
- contactArea.r_ybot)) / 2;
|
||||||
contactArea.r_ytop = contactArea.r_ybot + totalSize;
|
contactArea.r_ytop = contactArea.r_ybot + totalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -785,19 +869,105 @@ WireAddContact(newType, newWidth)
|
||||||
TTMaskSetOnlyType(&mask, contact->con_type);
|
TTMaskSetOnlyType(&mask, contact->con_type);
|
||||||
TTMaskSetOnlyType(&allmask, contact->con_type);
|
TTMaskSetOnlyType(&allmask, contact->con_type);
|
||||||
DBPaintValid(EditCellUse->cu_def, &tmp, &mask, 0);
|
DBPaintValid(EditCellUse->cu_def, &tmp, &mask, 0);
|
||||||
if (contact->con_surround1 != 0)
|
if (conSurround1 != 0)
|
||||||
{
|
{
|
||||||
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
||||||
TTMaskSetType(&allmask, contact->con_layer1);
|
TTMaskSetType(&allmask, contact->con_layer1);
|
||||||
GEO_EXPAND(&tmp, contact->con_surround1, &tmp2);
|
GEO_EXPAND(&tmp, conSurround1, &tmp2);
|
||||||
(void) GeoInclude(&tmp2, &editArea);
|
(void) GeoInclude(&tmp2, &editArea);
|
||||||
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||||
}
|
}
|
||||||
if (contact->con_surround2 != 0)
|
if (conSurround2 != 0)
|
||||||
{
|
{
|
||||||
TTMaskSetOnlyType(&mask, contact->con_layer2);
|
TTMaskSetOnlyType(&mask, contact->con_layer2);
|
||||||
TTMaskSetType(&allmask, contact->con_layer2);
|
TTMaskSetType(&allmask, contact->con_layer2);
|
||||||
GEO_EXPAND(&tmp, contact->con_surround2, &tmp2);
|
GEO_EXPAND(&tmp, conSurround2, &tmp2);
|
||||||
|
(void) GeoInclude(&tmp2, &editArea);
|
||||||
|
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||||
|
}
|
||||||
|
if (conExtend1 != 0)
|
||||||
|
{
|
||||||
|
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
||||||
|
TTMaskSetType(&allmask, contact->con_layer1);
|
||||||
|
tmp2 = tmp;
|
||||||
|
switch(oldDir)
|
||||||
|
{
|
||||||
|
case GEO_NORTH:
|
||||||
|
case GEO_SOUTH:
|
||||||
|
if (updown == WIRING_CONTACT_UP)
|
||||||
|
{
|
||||||
|
tmp2.r_ybot -= conExtend1;
|
||||||
|
tmp2.r_ytop += conExtend1;
|
||||||
|
tmp2.r_xbot -= conSurround1;
|
||||||
|
tmp2.r_xtop += conSurround1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tmp2.r_xbot -= conExtend1;
|
||||||
|
tmp2.r_xtop += conExtend1;
|
||||||
|
tmp2.r_ybot -= conSurround1;
|
||||||
|
tmp2.r_ytop += conSurround1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GEO_EAST:
|
||||||
|
case GEO_WEST:
|
||||||
|
if (updown == WIRING_CONTACT_UP)
|
||||||
|
{
|
||||||
|
tmp2.r_xbot -= conExtend1;
|
||||||
|
tmp2.r_xtop += conExtend1;
|
||||||
|
tmp2.r_ybot -= conSurround1;
|
||||||
|
tmp2.r_ytop += conSurround1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tmp2.r_ybot -= conExtend1;
|
||||||
|
tmp2.r_ytop += conExtend1;
|
||||||
|
tmp2.r_xbot -= conSurround1;
|
||||||
|
tmp2.r_xtop += conSurround1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
(void) GeoInclude(&tmp2, &editArea);
|
||||||
|
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||||
|
}
|
||||||
|
if (conExtend2 != 0)
|
||||||
|
{
|
||||||
|
TTMaskSetOnlyType(&mask, contact->con_layer2);
|
||||||
|
TTMaskSetType(&allmask, contact->con_layer2);
|
||||||
|
tmp2 = tmp;
|
||||||
|
switch(oldDir)
|
||||||
|
{
|
||||||
|
case GEO_NORTH:
|
||||||
|
case GEO_SOUTH:
|
||||||
|
if (updown == WIRING_CONTACT_UP)
|
||||||
|
{
|
||||||
|
tmp2.r_xbot -= conExtend2;
|
||||||
|
tmp2.r_xtop += conExtend2;
|
||||||
|
tmp2.r_ybot -= conSurround2;
|
||||||
|
tmp2.r_ytop += conSurround2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tmp2.r_ybot -= conExtend2;
|
||||||
|
tmp2.r_ytop += conExtend2;
|
||||||
|
tmp2.r_xbot -= conSurround2;
|
||||||
|
tmp2.r_xtop += conSurround2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GEO_EAST:
|
||||||
|
case GEO_WEST:
|
||||||
|
if (updown == WIRING_CONTACT_UP)
|
||||||
|
{
|
||||||
|
tmp2.r_ybot -= conExtend2;
|
||||||
|
tmp2.r_ytop += conExtend2;
|
||||||
|
tmp2.r_xbot -= conSurround2;
|
||||||
|
tmp2.r_xtop += conSurround2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tmp2.r_xbot -= conExtend2;
|
||||||
|
tmp2.r_xtop += conExtend2;
|
||||||
|
tmp2.r_ybot -= conSurround2;
|
||||||
|
tmp2.r_ytop += conSurround2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
(void) GeoInclude(&tmp2, &editArea);
|
(void) GeoInclude(&tmp2, &editArea);
|
||||||
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -820,15 +990,15 @@ WireAddContact(newType, newWidth)
|
||||||
scx.scx_area = tmp;
|
scx.scx_area = tmp;
|
||||||
TTMaskSetOnlyType(&mask, contact->con_type);
|
TTMaskSetOnlyType(&mask, contact->con_type);
|
||||||
SelectArea(&scx, &mask, 0);
|
SelectArea(&scx, &mask, 0);
|
||||||
if (contact->con_surround1 != 0)
|
if (conSurround1 != 0)
|
||||||
{
|
{
|
||||||
GEO_EXPAND(&tmp, contact->con_surround1, &scx.scx_area);
|
GEO_EXPAND(&tmp, conSurround1, &scx.scx_area);
|
||||||
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
||||||
SelectArea(&scx, &mask, 0);
|
SelectArea(&scx, &mask, 0);
|
||||||
}
|
}
|
||||||
if (contact->con_surround2 != 0)
|
if (conSurround2 != 0)
|
||||||
{
|
{
|
||||||
GEO_EXPAND(&tmp, contact->con_surround2, &scx.scx_area);
|
GEO_EXPAND(&tmp, conSurround2, &scx.scx_area);
|
||||||
TTMaskSetOnlyType(&mask, contact->con_layer2);
|
TTMaskSetOnlyType(&mask, contact->con_layer2);
|
||||||
SelectArea(&scx, &mask, 0);
|
SelectArea(&scx, &mask, 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
|
|
||||||
/* Linked list to store contact information collected by this module: */
|
/* Linked list to store contact information collected by this module: */
|
||||||
Contact *WireContacts;
|
Contact *WireContacts;
|
||||||
|
int WireUnits; // Units per lambda for wiring sizes
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -65,6 +66,7 @@ WireTechInit()
|
||||||
freeMagic((char *) WireContacts);
|
freeMagic((char *) WireContacts);
|
||||||
WireContacts = WireContacts->con_next;
|
WireContacts = WireContacts->con_next;
|
||||||
}
|
}
|
||||||
|
WireUnits = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -91,22 +93,41 @@ WireTechLine(sectionName, argc, argv)
|
||||||
char *argv[]; /* Pointers to fields of line. */
|
char *argv[]; /* Pointers to fields of line. */
|
||||||
{
|
{
|
||||||
Contact *new;
|
Contact *new;
|
||||||
|
int hasExtend = 0;
|
||||||
|
|
||||||
|
if (!strcmp(argv[0], "scalefactor"))
|
||||||
|
{
|
||||||
|
if (argc != 2)
|
||||||
|
{
|
||||||
|
TechError("\"scalefactor\" line must have exactly 2 arguments.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (!StrIsInt(argv[1]))
|
||||||
|
{
|
||||||
|
TechError("\"scalefactor\" argument must be an integer.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
WireUnits = atoi(argv[1]);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(argv[0], "contact") != 0)
|
if (strcmp(argv[0], "contact") != 0)
|
||||||
{
|
{
|
||||||
TechError("Unknown wiring keyword: %s. Line ignored.\n", argv[0]);
|
TechError("Unknown wiring keyword: %s. Line ignored.\n", argv[0]);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (argc != 7)
|
if ((argc != 7) && (argc != 9))
|
||||||
{
|
{
|
||||||
TechError("\"contact\" lines must have exactly 7 arguments.\n");
|
TechError("\"contact\" lines must have exactly 7 or 9 arguments.\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
if (argc == 9) hasExtend = 1;
|
||||||
|
|
||||||
new = (Contact *) mallocMagic(sizeof(Contact));
|
new = (Contact *) mallocMagic(sizeof(Contact));
|
||||||
new->con_type = DBTechNoisyNameType(argv[1]);
|
new->con_type = DBTechNoisyNameType(argv[1]);
|
||||||
new->con_layer1 = DBTechNoisyNameType(argv[3]);
|
new->con_layer1 = DBTechNoisyNameType(argv[3]);
|
||||||
new->con_layer2 = DBTechNoisyNameType(argv[5]);
|
new->con_layer2 = DBTechNoisyNameType(argv[5 + hasExtend]);
|
||||||
|
new->con_extend1 = new->con_extend2 = 0;
|
||||||
if ((new->con_type < 0) || (new->con_layer1 < 0) || (new->con_layer2 < 0))
|
if ((new->con_type < 0) || (new->con_layer1 < 0) || (new->con_layer2 < 0))
|
||||||
{
|
{
|
||||||
errorReturn:
|
errorReturn:
|
||||||
|
|
@ -116,22 +137,38 @@ WireTechLine(sectionName, argc, argv)
|
||||||
|
|
||||||
if (!StrIsInt(argv[2]))
|
if (!StrIsInt(argv[2]))
|
||||||
{
|
{
|
||||||
TechError("3rd field must be an integer.\n");
|
TechError("Contact size must be an integer.\n");
|
||||||
goto errorReturn;
|
goto errorReturn;
|
||||||
}
|
}
|
||||||
else new->con_size = atoi(argv[2]);
|
else new->con_size = atoi(argv[2]);
|
||||||
if (!StrIsInt(argv[4]))
|
if (!StrIsInt(argv[4]))
|
||||||
{
|
{
|
||||||
TechError("5th field must be an integer.\n");
|
TechError("Contact surround distance must be an integer.\n");
|
||||||
goto errorReturn;
|
goto errorReturn;
|
||||||
}
|
}
|
||||||
else new->con_surround1 = atoi(argv[4]);
|
else new->con_surround1 = atoi(argv[4]);
|
||||||
if (!StrIsInt(argv[6]))
|
if (!StrIsInt(argv[6 + hasExtend]))
|
||||||
{
|
{
|
||||||
TechError("6th field must be an integer.\n");
|
TechError("Contact surround distance must be an integer.\n");
|
||||||
goto errorReturn;
|
goto errorReturn;
|
||||||
}
|
}
|
||||||
else new->con_surround2 = atoi(argv[6]);
|
else new->con_surround2 = atoi(argv[6 + hasExtend]);
|
||||||
|
|
||||||
|
if (argc == 9)
|
||||||
|
{
|
||||||
|
if (!StrIsInt(argv[5]))
|
||||||
|
{
|
||||||
|
TechError("Contact extend distance must be an integer.\n");
|
||||||
|
goto errorReturn;
|
||||||
|
}
|
||||||
|
else new->con_extend1 = atoi(argv[5]);
|
||||||
|
if (!StrIsInt(argv[8]))
|
||||||
|
{
|
||||||
|
TechError("Contact extend distance must be an integer.\n");
|
||||||
|
goto errorReturn;
|
||||||
|
}
|
||||||
|
else new->con_extend2 = atoi(argv[8]);
|
||||||
|
}
|
||||||
|
|
||||||
new->con_next = WireContacts;
|
new->con_next = WireContacts;
|
||||||
WireContacts = new;
|
WireContacts = new;
|
||||||
|
|
@ -201,5 +238,11 @@ WireTechScale(scalen, scaled)
|
||||||
|
|
||||||
con->con_surround2 *= scaled;
|
con->con_surround2 *= scaled;
|
||||||
con->con_surround2 /= scalen;
|
con->con_surround2 /= scalen;
|
||||||
|
|
||||||
|
con->con_extend1 *= scaled;
|
||||||
|
con->con_extend1 /= scalen;
|
||||||
|
|
||||||
|
con->con_extend2 *= scaled;
|
||||||
|
con->con_extend2 /= scalen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,204 +0,0 @@
|
||||||
/*
|
|
||||||
* wireTech.c --
|
|
||||||
*
|
|
||||||
* This file contains procedures that parse the wiring sections of
|
|
||||||
* technology files.
|
|
||||||
*
|
|
||||||
* *********************************************************************
|
|
||||||
* * Copyright (C) 1985, 1990 Regents of the University of California. *
|
|
||||||
* * Permission to use, copy, modify, and distribute this *
|
|
||||||
* * software and its documentation for any purpose and without *
|
|
||||||
* * fee is hereby granted, provided that the above copyright *
|
|
||||||
* * notice appear in all copies. The University of California *
|
|
||||||
* * makes no representations about the suitability of this *
|
|
||||||
* * software for any purpose. It is provided "as is" without *
|
|
||||||
* * express or implied warranty. Export of this software outside *
|
|
||||||
* * of the United States of America may require an export license. *
|
|
||||||
* *********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char rcsid[]="$Header: /usr/cvsroot/magic-8.0/wiring/wireTech.c.new,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $";
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "utils/magic.h"
|
|
||||||
#include "utils/geometry.h"
|
|
||||||
#include "tiles/tile.h"
|
|
||||||
#include "utils/hash.h"
|
|
||||||
#include "database/database.h"
|
|
||||||
#include "tech/tech.h"
|
|
||||||
#include "wiring/wiring.h"
|
|
||||||
#include "utils/malloc.h"
|
|
||||||
|
|
||||||
/* Linked list to store contact information collected by this module: */
|
|
||||||
Contact *WireContacts;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* WireTechInit --
|
|
||||||
*
|
|
||||||
* Called once at beginning of technology file read-in to initialize
|
|
||||||
* data structures.
|
|
||||||
*
|
|
||||||
* Results:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* Side effects:
|
|
||||||
* Clears out the contact table.
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
WireTechInit()
|
|
||||||
{
|
|
||||||
Contact *contact;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
while (WireContacts != NULL)
|
|
||||||
{
|
|
||||||
freeMagic((char *) WireContacts);
|
|
||||||
WireContacts = WireContacts->con_next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* WireTechLine --
|
|
||||||
*
|
|
||||||
* This procedure is invoked by the technology module once for
|
|
||||||
* each line in the "wiring" section of the technology file.
|
|
||||||
*
|
|
||||||
* Results:
|
|
||||||
* Always returns TRUE (otherwise the technology module would
|
|
||||||
* abort Magic with a fatal error).
|
|
||||||
*
|
|
||||||
* Side effects:
|
|
||||||
* Builds up the contact table, prints error messages if necessary.
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* ARGSUSED */
|
|
||||||
bool
|
|
||||||
WireTechLine(sectionName, argc, argv)
|
|
||||||
char *sectionName; /* Name of this section (unused). */
|
|
||||||
int argc; /* Number of arguments on line. */
|
|
||||||
char *argv[]; /* Pointers to fields of line. */
|
|
||||||
{
|
|
||||||
Contact *new;
|
|
||||||
|
|
||||||
if (strcmp(argv[0], "contact") != 0)
|
|
||||||
{
|
|
||||||
TechError("Unknown wiring keyword: %s. Line ignored.\n", argv[0]);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
if (argc != 7)
|
|
||||||
{
|
|
||||||
TechError("\"contact\" lines must have exactly 7 arguments.\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
new = (Contact *) mallocMagic(sizeof(Contact));
|
|
||||||
new->con_type = DBTechNoisyNameType(argv[1]);
|
|
||||||
new->con_layer1 = DBTechNoisyNameType(argv[3]);
|
|
||||||
new->con_layer2 = DBTechNoisyNameType(argv[5]);
|
|
||||||
if ((new->con_type < 0) || (new->con_layer1 < 0) || (new->con_layer2 < 0))
|
|
||||||
{
|
|
||||||
errorReturn:
|
|
||||||
freeMagic((char *) new);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StrIsInt(argv[2]))
|
|
||||||
{
|
|
||||||
TechError("3rd field must be an integer.\n");
|
|
||||||
goto errorReturn;
|
|
||||||
}
|
|
||||||
else new->con_size = atoi(argv[2]);
|
|
||||||
if (!StrIsInt(argv[4]))
|
|
||||||
{
|
|
||||||
TechError("5th field must be an integer.\n");
|
|
||||||
goto errorReturn;
|
|
||||||
}
|
|
||||||
else new->con_surround1 = atoi(argv[4]);
|
|
||||||
if (!StrIsInt(argv[6]))
|
|
||||||
{
|
|
||||||
TechError("6th field must be an integer.\n");
|
|
||||||
goto errorReturn;
|
|
||||||
}
|
|
||||||
else new->con_surround2 = atoi(argv[6]);
|
|
||||||
|
|
||||||
new->con_next = WireContacts;
|
|
||||||
WireContacts = new;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* WireTechFinal --
|
|
||||||
*
|
|
||||||
* This procedure is called by the technology module after all the
|
|
||||||
* lines of the tech file have been read. It doesn't do anything
|
|
||||||
* right now.
|
|
||||||
*
|
|
||||||
* Results:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* Side effects:
|
|
||||||
* None.
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
WireTechFinal()
|
|
||||||
{
|
|
||||||
/* Debugging code to print info about layers: */
|
|
||||||
|
|
||||||
/*
|
|
||||||
Contact *con;
|
|
||||||
|
|
||||||
for (con = WireContacts; con != NULL; con = con->con_next)
|
|
||||||
{
|
|
||||||
TxPrintf("Contact type \"%s\", size %d connects\n",
|
|
||||||
DBTypeLongName(con->con_type), con->con_size);
|
|
||||||
TxPrintf(" \"%s\" (overlap %d) and\n",
|
|
||||||
DBTypeLongName(con->con_layer1), con->con_surround1);
|
|
||||||
TxPrintf(" \"%s\" (overlap %d)\n",
|
|
||||||
DBTypeLongName(con->con_layer2), con->con_surround2);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
*----------------------------------------------------------------------------
|
|
||||||
* WireTechScale --
|
|
||||||
*
|
|
||||||
* Change parameters of the wiring section as required when
|
|
||||||
* redefining magic's internal grid relative to the technology lambda.
|
|
||||||
*
|
|
||||||
*----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
int
|
|
||||||
WireTechScale(scalen, scaled)
|
|
||||||
int scalen, scaled;
|
|
||||||
{
|
|
||||||
Contact *con;
|
|
||||||
|
|
||||||
for (con = WireContacts; con != NULL; con = con->con_next)
|
|
||||||
{
|
|
||||||
con->con_size *= scalen;
|
|
||||||
con->con_size /= scaled;
|
|
||||||
|
|
||||||
con->con_surround1 *= scalen;
|
|
||||||
con->con_surround1 /= scaled;
|
|
||||||
|
|
||||||
con->con_surround2 *= scalen;
|
|
||||||
con->con_surround2 /= scaled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -48,10 +48,15 @@ typedef struct _Contact
|
||||||
* con_layer1 must be painted around the
|
* con_layer1 must be painted around the
|
||||||
* edge of the contact.
|
* edge of the contact.
|
||||||
*/
|
*/
|
||||||
|
int con_extend1; /* How much additional material of type
|
||||||
|
* con_layer1 must extend beyond the
|
||||||
|
* contact in the orientation of the route.
|
||||||
|
*/
|
||||||
TileType con_layer2; /* Same information for second layer that
|
TileType con_layer2; /* Same information for second layer that
|
||||||
* the contact connects.
|
* the contact connects.
|
||||||
*/
|
*/
|
||||||
int con_surround2;
|
int con_surround2;
|
||||||
|
int con_extend2;
|
||||||
|
|
||||||
ContactPtr con_next; /* Pointer to next contact record */
|
ContactPtr con_next; /* Pointer to next contact record */
|
||||||
} Contact;
|
} Contact;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue