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
|
||||
${SCRIPTS}/makedbh database/database.h.in database/database.h
|
||||
|
||||
modules:
|
||||
modules: database/database.h depend
|
||||
@echo --- making modules
|
||||
for dir in ${MODULES} ${PROGRAMS}; do \
|
||||
(cd $$dir && ${MAKE} module); done
|
||||
|
|
@ -58,6 +58,7 @@ libs:
|
|||
(cd $$dir && ${MAKE} lib); done
|
||||
|
||||
depend: database/database.h
|
||||
@echo --- making dependencies
|
||||
${RM} */Depend
|
||||
for dir in ${MODULES} ${UNUSED_MODULES} ${PROGRAMS}; do \
|
||||
(cd $$dir && ${MAKE} depend); done
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ calmaSetPosition(sname)
|
|||
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;
|
||||
}
|
||||
|
|
@ -288,6 +288,7 @@ calmaParseStructure(filename)
|
|||
int mfactor;
|
||||
off_t filepos;
|
||||
bool was_called;
|
||||
bool was_initialized;
|
||||
CellDef *def;
|
||||
|
||||
/* Make sure this is a structure; if not, let the caller know we're done */
|
||||
|
|
@ -296,7 +297,8 @@ calmaParseStructure(filename)
|
|||
return (FALSE);
|
||||
|
||||
/* 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;
|
||||
TxPrintf("Reading \"%s\".\n", strname);
|
||||
|
||||
|
|
@ -316,23 +318,23 @@ calmaParseStructure(filename)
|
|||
|
||||
if (!CalmaPostOrder)
|
||||
{
|
||||
calmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||
CalmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||
strname);
|
||||
calmaReadError("Ignoring duplicate definition\n");
|
||||
CalmaReadError("Ignoring duplicate definition\n");
|
||||
}
|
||||
calmaNextCell();
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
calmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||
CalmaReadError("Cell \"%s\" was already defined in this file.\n",
|
||||
strname);
|
||||
for (suffix = 1; HashGetValue(he) != NULL; suffix++)
|
||||
{
|
||||
(void) sprintf(newname, "%s_%d", strname, suffix);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -354,6 +356,7 @@ calmaParseStructure(filename)
|
|||
|
||||
/* Initialize the hash table for layer errors */
|
||||
HashInit(&calmaLayerHash, 32, sizeof (CalmaLayerType) / sizeof (unsigned));
|
||||
was_initialized = TRUE;
|
||||
|
||||
/* Body of structure: a sequence of elements */
|
||||
osrefs = nsrefs = 0;
|
||||
|
|
@ -434,7 +437,7 @@ calmaParseStructure(filename)
|
|||
* the appropriate cell of the database.
|
||||
*/
|
||||
|
||||
CIFPaintCurrent();
|
||||
CIFPaintCurrent(FILE_CALMA);
|
||||
}
|
||||
|
||||
DBAdjustLabelsNew(cifReadCellDef, &TiPlaneRect,
|
||||
|
|
@ -466,7 +469,7 @@ done:
|
|||
|
||||
/* Syntax error: skip to CALMA_ENDSTR */
|
||||
syntaxerror:
|
||||
HashKill(&calmaLayerHash);
|
||||
if (was_initialized == TRUE) HashKill(&calmaLayerHash);
|
||||
return (calmaSkipTo(CALMA_ENDSTR));
|
||||
}
|
||||
|
||||
|
|
@ -505,7 +508,7 @@ calmaParseElement(filename, pnsrefs, pnpaths)
|
|||
READRH(nbytes, rtype);
|
||||
if (nbytes < 0)
|
||||
{
|
||||
calmaReadError("Unexpected EOF.\n");
|
||||
CalmaReadError("Unexpected EOF.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -533,7 +536,7 @@ calmaParseElement(filename, pnsrefs, pnpaths)
|
|||
calmaElementText();
|
||||
break;
|
||||
case CALMA_NODE:
|
||||
calmaReadError("NODE elements not supported: skipping.\n");
|
||||
CalmaReadError("NODE elements not supported: skipping.\n");
|
||||
calmaSkipSet(node);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -661,10 +664,10 @@ calmaElementSref(filename)
|
|||
|
||||
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);
|
||||
calmaReadError(" and can't be used as a subcell.\n");
|
||||
calmaReadError("(Use skipped)\n");
|
||||
CalmaReadError(" and can't be used as a subcell.\n");
|
||||
CalmaReadError("(Use skipped)\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -719,12 +722,12 @@ calmaElementSref(filename)
|
|||
nref = nbytes / 8;
|
||||
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;
|
||||
}
|
||||
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[1].p_x = refarray[1].p_y = 0;
|
||||
refarray[2].p_x = refarray[2].p_y = 0;
|
||||
|
|
@ -853,8 +856,8 @@ calmaElementSref(filename)
|
|||
if (p.p_x % cols)
|
||||
{
|
||||
n = (p.p_x + (cols+1)/2) / cols;
|
||||
calmaReadError("# cols doesn't divide displacement ref pt\n");
|
||||
calmaReadError(" %d / %d -> %d\n", p.p_x, cols, n);
|
||||
CalmaReadError("# cols doesn't divide displacement ref pt\n");
|
||||
CalmaReadError(" %d / %d -> %d\n", p.p_x, cols, n);
|
||||
xsep = n;
|
||||
}
|
||||
else xsep = p.p_x / cols;
|
||||
|
|
@ -865,8 +868,8 @@ calmaElementSref(filename)
|
|||
if (p.p_y % rows)
|
||||
{
|
||||
n = (p.p_y + (rows+1)/2) / rows;
|
||||
calmaReadError("# rows doesn't divide displacement ref pt\n");
|
||||
calmaReadError(" %d / %d -> %d\n", p.p_y, rows, n);
|
||||
CalmaReadError("# rows doesn't divide displacement ref pt\n");
|
||||
CalmaReadError(" %d / %d -> %d\n", p.p_y, rows, n);
|
||||
ysep = n;
|
||||
}
|
||||
ysep = p.p_y / rows;
|
||||
|
|
|
|||
|
|
@ -110,8 +110,8 @@ calmaReadTransform(ptrans, name)
|
|||
|
||||
if (dmag != (double)((int)(dmag + 0.5)))
|
||||
{
|
||||
calmaReadError("Non-integer magnification (%g) in transform\n", dmag);
|
||||
calmaReadError("Rounding to %d.\n", (int)(dmag + 0.5));
|
||||
CalmaReadError("Non-integer magnification (%g) in transform\n", dmag);
|
||||
CalmaReadError("Rounding to %d.\n", (int)(dmag + 0.5));
|
||||
}
|
||||
GeoScaleTrans(ptrans, (int)(dmag + 0.5), &t);
|
||||
*ptrans = t;
|
||||
|
|
@ -144,13 +144,13 @@ calmaReadTransform(ptrans, name)
|
|||
case 0: case 90: case 180: case 270:
|
||||
break;
|
||||
default:
|
||||
calmaReadError("Non-Manhattan angle (%d) in transform\n", angle);
|
||||
CalmaReadError("Non-Manhattan angle (%d) in transform\n", angle);
|
||||
if (angle < 45) angle = 0;
|
||||
else if (angle < 135) angle = 90;
|
||||
else if (angle < 225) angle = 180;
|
||||
else if (angle < 315) angle = 270;
|
||||
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);
|
||||
|
||||
eof:
|
||||
calmaReadError("Unexpected EOF.\n");
|
||||
CalmaReadError("Unexpected EOF.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ calmaReadI4Record(type, pvalue)
|
|||
return (TRUE);
|
||||
|
||||
eof:
|
||||
calmaReadError("Unexpected EOF.\n");
|
||||
CalmaReadError("Unexpected EOF.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -317,7 +317,7 @@ calmaReadStringRecord(type, str)
|
|||
return (TRUE);
|
||||
|
||||
eof:
|
||||
calmaReadError("Unexpected EOF.\n");
|
||||
CalmaReadError("Unexpected EOF.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -478,7 +478,7 @@ calmaSkipExact(type)
|
|||
return (TRUE);
|
||||
|
||||
eof:
|
||||
calmaReadError("Unexpected EOF.\n");
|
||||
CalmaReadError("Unexpected EOF.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@ extern HashTable calmaDefInitHash;
|
|||
extern void calmaLayerError();
|
||||
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));
|
||||
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)
|
||||
p->p_x -= ((calmaReadScale2 - 1) >> 1);
|
||||
else
|
||||
|
|
@ -167,7 +165,7 @@ calmaReadPoint(p, iscale)
|
|||
rescale = calmaReadScale2 / FindGCF(calmaReadScale2, abs(p->p_y));
|
||||
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)
|
||||
p->p_y -= ((calmaReadScale2 - 1) >> 1);
|
||||
else
|
||||
|
|
@ -218,7 +216,7 @@ calmaElementBoundary()
|
|||
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
||||
|| !calmaReadI2Record(CALMA_DATATYPE, &dt))
|
||||
{
|
||||
calmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||
CalmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -236,7 +234,7 @@ calmaElementBoundary()
|
|||
if (!calmaReadPath(&pathheadp, (plane == NULL) ? 0 : 1))
|
||||
{
|
||||
if (plane != NULL)
|
||||
calmaReadError("Error while reading path for boundary/box; ignored.\n");
|
||||
CalmaReadError("Error while reading path for boundary/box; ignored.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +272,6 @@ calmaElementBoundary()
|
|||
}
|
||||
}
|
||||
|
||||
CIFPropRecordPath(cifReadCellDef, pathheadp, FALSE);
|
||||
rp = CIFPolyToRects(pathheadp, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
||||
CIFFreePath(pathheadp);
|
||||
|
||||
|
|
@ -300,7 +297,7 @@ calmaElementBoundary()
|
|||
rpc.r_ytop /= calmaReadScale1;
|
||||
|
||||
if ((ciftype >= 0) &&
|
||||
((cifCurReadStyle->crs_labelSticky[ciftype] != LABEL_TYPE_NONE)))
|
||||
(cifCurReadStyle->crs_labelSticky[ciftype] != LABEL_TYPE_NONE))
|
||||
{
|
||||
Label *lab;
|
||||
TileType type;
|
||||
|
|
@ -332,7 +329,7 @@ calmaElementBoundary()
|
|||
|
||||
if (cifCurReadPlanes == cifEditCellPlanes)
|
||||
{
|
||||
CIFPaintCurrent();
|
||||
CIFPaintCurrent(FILE_CALMA);
|
||||
DBReComputeBbox(cifReadCellDef);
|
||||
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
||||
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
||||
|
|
@ -386,7 +383,7 @@ calmaElementBox()
|
|||
if (!calmaReadI2Record(CALMA_LAYER, &layer)
|
||||
|| !calmaReadI2Record(CALMA_BOXTYPE, &dt))
|
||||
{
|
||||
calmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||
CalmaReadError("Missing layer or datatype in boundary/box.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -410,7 +407,7 @@ calmaElementBox()
|
|||
READRH(nbytes, rtype);
|
||||
if (nbytes < 0)
|
||||
{
|
||||
calmaReadError("EOF when reading box.\n");
|
||||
CalmaReadError("EOF when reading box.\n");
|
||||
return;
|
||||
}
|
||||
if (rtype != CALMA_XY)
|
||||
|
|
@ -423,7 +420,7 @@ calmaElementBox()
|
|||
npoints = (nbytes - CALMAHEADERLENGTH) / 8;
|
||||
if (npoints != 5)
|
||||
{
|
||||
calmaReadError("Box doesn't have 5 points.\n");
|
||||
CalmaReadError("Box doesn't have 5 points.\n");
|
||||
(void) calmaSkipBytes(nbytes - CALMAHEADERLENGTH);
|
||||
return;
|
||||
}
|
||||
|
|
@ -494,7 +491,7 @@ calmaElementPath()
|
|||
if (pathtype != CALMAPATH_SQUAREFLUSH && pathtype != CALMAPATH_SQUAREPLUS &&
|
||||
pathtype != CALMAPATH_CUSTOM)
|
||||
{
|
||||
calmaReadError("Warning: pathtype %d unsupported (ignored).\n", pathtype);
|
||||
CalmaReadError("Warning: pathtype %d unsupported (ignored).\n", pathtype);
|
||||
pathtype = CALMAPATH_SQUAREFLUSH;
|
||||
}
|
||||
|
||||
|
|
@ -508,13 +505,13 @@ calmaElementPath()
|
|||
{
|
||||
if (!calmaReadI4Record(CALMA_WIDTH, &width))
|
||||
{
|
||||
calmaReadError("Error in reading WIDTH in calmaElementPath()\n") ;
|
||||
CalmaReadError("Error in reading WIDTH in calmaElementPath()\n") ;
|
||||
return;
|
||||
}
|
||||
}
|
||||
width *= calmaReadScale1;
|
||||
if (width % calmaReadScale2 != 0)
|
||||
calmaReadError("Wire width snapped to nearest integer boundary.\n");
|
||||
CalmaReadError("Wire width snapped to nearest integer boundary.\n");
|
||||
|
||||
width /= calmaReadScale2;
|
||||
|
||||
|
|
@ -531,12 +528,12 @@ calmaElementPath()
|
|||
if (nbytes > 0 && rtype == CALMA_BGNEXTN)
|
||||
{
|
||||
if (!calmaReadI4Record(CALMA_BGNEXTN, &extend1))
|
||||
calmaReadError("Error in reading BGNEXTN in path (ignored)\n") ;
|
||||
CalmaReadError("Error in reading BGNEXTN in path (ignored)\n") ;
|
||||
else
|
||||
{
|
||||
extend1 *= calmaReadScale1;
|
||||
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 /= calmaReadScale2;
|
||||
}
|
||||
|
|
@ -546,12 +543,12 @@ calmaElementPath()
|
|||
if (nbytes > 0 && rtype == CALMA_ENDEXTN)
|
||||
{
|
||||
if (!calmaReadI4Record(CALMA_ENDEXTN, &extend2))
|
||||
calmaReadError("Error in reading ENDEXTN in path (ignored)\n") ;
|
||||
CalmaReadError("Error in reading ENDEXTN in path (ignored)\n") ;
|
||||
else
|
||||
{
|
||||
extend2 *= calmaReadScale1;
|
||||
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 /= calmaReadScale2;
|
||||
}
|
||||
|
|
@ -561,7 +558,7 @@ calmaElementPath()
|
|||
savescale = calmaReadScale1;
|
||||
if (!calmaReadPath(&pathheadp, 2))
|
||||
{
|
||||
calmaReadError("Improper path; ignored.\n");
|
||||
CalmaReadError("Improper path; ignored.\n");
|
||||
return;
|
||||
}
|
||||
if (savescale != calmaReadScale1)
|
||||
|
|
@ -652,14 +649,14 @@ calmaElementPath()
|
|||
}
|
||||
}
|
||||
|
||||
CIFPropRecordPath(cifReadCellDef, pathheadp, TRUE);
|
||||
CIFPropRecordPath(cifReadCellDef, pathheadp, TRUE, "path");
|
||||
CIFPaintWirePath(pathheadp, width,
|
||||
(pathtype == CALMAPATH_SQUAREFLUSH || pathtype == CALMAPATH_CUSTOM) ?
|
||||
FALSE : TRUE, plane, CIFPaintTable, (PaintUndoInfo *)NULL);
|
||||
|
||||
if (cifCurReadPlanes == cifEditCellPlanes)
|
||||
{
|
||||
CIFPaintCurrent();
|
||||
CIFPaintCurrent(FILE_CALMA);
|
||||
DBReComputeBbox(cifReadCellDef);
|
||||
DRCCheckThis(cifReadCellDef, TT_CHECKPAINT, &cifReadCellDef->cd_bbox);
|
||||
DBWAreaChanged(cifReadCellDef, &cifReadCellDef->cd_bbox,
|
||||
|
|
@ -715,7 +712,7 @@ calmaElementText()
|
|||
cifnum = CIFCalmaLayerToCifLayer(layer, textt, cifCurReadStyle);
|
||||
if (cifnum < 0)
|
||||
{
|
||||
if(cifCurReadStyle->crs_flags & CRF_IGNORE_UNKNOWNLAYER_LABELS)
|
||||
if (cifCurReadStyle->crs_flags & CRF_IGNORE_UNKNOWNLAYER_LABELS)
|
||||
type = -1;
|
||||
else {
|
||||
calmaLayerError("Label on unknown layer/datatype", layer, textt);
|
||||
|
|
@ -728,7 +725,7 @@ calmaElementText()
|
|||
angle = 0;
|
||||
|
||||
/* Default size is 1um */
|
||||
size = (int)((800 * cifCurReadStyle->crs_multiplier)
|
||||
size = (int)((1000 * cifCurReadStyle->crs_multiplier)
|
||||
/ cifCurReadStyle->crs_scaleFactor);
|
||||
/* Default position is bottom-right (but what the spec calls "top-left"!) */
|
||||
pos = GEO_SOUTHEAST;
|
||||
|
|
@ -775,6 +772,31 @@ calmaElementText()
|
|||
else if (nbytes > 0 && rtype != CALMA_STRANS)
|
||||
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);
|
||||
if (nbytes > 0 && rtype == CALMA_STRANS)
|
||||
{
|
||||
|
|
@ -785,9 +807,10 @@ calmaElementText()
|
|||
if (nbytes > 0 && rtype == CALMA_MAG)
|
||||
{
|
||||
calmaReadR8(&dval);
|
||||
|
||||
/* Assume that MAG is the label size in microns */
|
||||
/* "size" is the label size in 8 * (database units) */
|
||||
size = (int)((dval * 800 * cifCurReadStyle->crs_multiplier)
|
||||
/* "size" is the label size in 10 * (database units) */
|
||||
size = (int)((dval * 1000 * cifCurReadStyle->crs_multiplier)
|
||||
/ cifCurReadStyle->crs_scaleFactor);
|
||||
}
|
||||
else
|
||||
|
|
@ -817,7 +840,7 @@ calmaElementText()
|
|||
nbytes -= CALMAHEADERLENGTH;
|
||||
if (nbytes < 8)
|
||||
{
|
||||
calmaReadError("Not enough bytes in point record.\n");
|
||||
CalmaReadError("Not enough bytes in point record.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -867,15 +890,15 @@ calmaElementText()
|
|||
}
|
||||
}
|
||||
if (changed) {
|
||||
calmaReadError("Warning: improper characters fixed in label '%s'\n",
|
||||
CalmaReadError("Warning: improper characters fixed in label '%s'\n",
|
||||
savstring);
|
||||
if (!algmsg) {
|
||||
algmsg = TRUE;
|
||||
calmaReadError(" (algorithm used: trailing <CR> dropped, "
|
||||
CalmaReadError(" (algorithm used: trailing <CR> dropped, "
|
||||
"<CR> and ' ' 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -885,13 +908,19 @@ calmaElementText()
|
|||
/* Place the label */
|
||||
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_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)
|
||||
{
|
||||
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,
|
||||
r.r_ll.p_x * cifCurReadStyle->crs_scaleFactor,
|
||||
r.r_ll.p_y * cifCurReadStyle->crs_scaleFactor, layer, textt);
|
||||
|
|
@ -1007,7 +1036,7 @@ calmaReadPath(pathheadpp, iscale)
|
|||
READRH(nbytes, rtype);
|
||||
if (nbytes < 0)
|
||||
{
|
||||
calmaReadError("EOF when reading path.\n");
|
||||
CalmaReadError("EOF when reading path.\n");
|
||||
return (FALSE);
|
||||
}
|
||||
if (rtype != CALMA_XY)
|
||||
|
|
@ -1034,7 +1063,7 @@ calmaReadPath(pathheadpp, iscale)
|
|||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
if (feof(calmaInputFile))
|
||||
|
|
@ -1112,6 +1141,6 @@ calmaLayerError(mesg, layer, dt)
|
|||
if (HashGetValue(he) == NULL)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
CIFReadCellCleanup(1);
|
||||
CIFReadCellCleanup(FILE_CALMA);
|
||||
HashKill(&calmaDefInitHash);
|
||||
UndoEnable();
|
||||
|
||||
|
|
@ -330,7 +330,7 @@ calmaParseUnits()
|
|||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* calmaReadError --
|
||||
* CalmaReadError --
|
||||
*
|
||||
* This procedure is called to print out error messages during
|
||||
* Calma file reading.
|
||||
|
|
@ -349,29 +349,35 @@ calmaParseUnits()
|
|||
|
||||
void
|
||||
/*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 *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10;
|
||||
{
|
||||
off_t filepos;
|
||||
|
||||
calmaTotalErrors++;
|
||||
if (CIFWarningLevel == CIF_WARN_NONE) return;
|
||||
|
||||
if ((calmaTotalErrors < 100) || (CIFWarningLevel != CIF_WARN_LIMIT))
|
||||
{
|
||||
filepos = ftello(calmaInputFile);
|
||||
|
||||
if (CIFWarningLevel == CIF_WARN_REDIRECT)
|
||||
{
|
||||
if (calmaErrorFile != NULL)
|
||||
{
|
||||
fprintf(calmaErrorFile, "Error while reading cell \"%s\": ",
|
||||
fprintf(calmaErrorFile, "Error while reading cell \"%s\" ",
|
||||
cifReadCellDef->cd_name);
|
||||
fprintf(calmaErrorFile, "(byte position %"DLONG_PREFIX"ld): ",
|
||||
(dlong)filepos);
|
||||
fprintf(calmaErrorFile, format, a1, a2, a3, a4, a5, a6, a7,
|
||||
a8, a9, a10);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -402,7 +408,7 @@ calmaUnexpected(wanted, got)
|
|||
int wanted; /* Type of record we wanted */
|
||||
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 (calmaTotalErrors < 100 || (CIFWarningLevel != CIF_WARN_LIMIT))
|
||||
|
|
|
|||
|
|
@ -365,9 +365,8 @@ CalmaWrite(rootDef, f)
|
|||
*/
|
||||
|
||||
bool
|
||||
calmaDumpStructure(def, cellstart, outf, calmaDefHash, filename)
|
||||
calmaDumpStructure(def, outf, calmaDefHash, filename)
|
||||
CellDef *def;
|
||||
off_t cellstart;
|
||||
FILE *outf;
|
||||
HashTable *calmaDefHash;
|
||||
char *filename;
|
||||
|
|
@ -404,6 +403,8 @@ calmaDumpStructure(def, cellstart, outf, calmaDefHash, filename)
|
|||
{
|
||||
/* Structure is defined more than once */
|
||||
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))
|
||||
{
|
||||
|
|
@ -591,10 +592,9 @@ syntaxerror:
|
|||
*/
|
||||
|
||||
void
|
||||
calmaFullDump(def, fi, cellstart, outf, filename)
|
||||
calmaFullDump(def, fi, outf, filename)
|
||||
CellDef *def;
|
||||
FILE *fi;
|
||||
off_t cellstart;
|
||||
FILE *outf;
|
||||
char *filename;
|
||||
{
|
||||
|
|
@ -657,7 +657,7 @@ calmaFullDump(def, fi, cellstart, outf, filename)
|
|||
}
|
||||
HashSetValue(he, StrDup(NULL, uniqlibname));
|
||||
|
||||
while (calmaDumpStructure(def, cellstart, outf, &calmaDefHash, filename))
|
||||
while (calmaDumpStructure(def, outf, &calmaDefHash, filename))
|
||||
if (SigInterruptPending)
|
||||
goto done;
|
||||
calmaSkipExact(CALMA_ENDLIB);
|
||||
|
|
@ -811,7 +811,7 @@ calmaProcessDef(def, outf)
|
|||
|
||||
he = HashLookOnly(&calmaLibHash, retfilename);
|
||||
if (he == NULL)
|
||||
calmaFullDump(def, fi, cellstart, outf, retfilename);
|
||||
calmaFullDump(def, fi, outf, retfilename);
|
||||
|
||||
fclose(fi);
|
||||
def->cd_flags |= CDVENDORGDS;
|
||||
|
|
@ -2755,16 +2755,17 @@ calmaOutStringRecord(type, str, f)
|
|||
/*
|
||||
* Make sure length is even.
|
||||
* 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 > CALMANAMELENGTH)
|
||||
{
|
||||
char csav;
|
||||
TxError("Warning: Cellname %s truncated ", str);
|
||||
csav = *(str + 32);
|
||||
*(str + 32) = '\0';
|
||||
TxError("to %32s (GDS format limit)\n", str);
|
||||
*(str + 32) = csav;
|
||||
TxError("to %s (GDS format limit)\n", str + len - CALMANAMELENGTH);
|
||||
locstr = str + len - CALMANAMELENGTH;
|
||||
len = CALMANAMELENGTH;
|
||||
}
|
||||
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 \
|
||||
../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 \
|
||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||
../calma/calmaInt.h ../commands/commands.h ../utils/undo.h
|
||||
CalmaRdcl.o: CalmaRdcl.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||
../calma/calmaInt.h ../calma/calma.h
|
||||
CalmaRdio.o: CalmaRdio.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||
../calma/calmaInt.h
|
||||
CalmaRdpt.o: CalmaRdpt.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../cif/CIFint.h ../cif/CIFread.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||
../calma/calmaInt.h ../calma/calma.h
|
||||
CalmaWrite.o: CalmaWrite.c ../utils/magic.h ../utils/malloc.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 \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../textio/textio.h \
|
||||
../calma/calmaInt.h ../utils/main.h ../utils/stack.h
|
||||
|
|
|
|||
|
|
@ -42,5 +42,6 @@ extern bool CalmaWrite();
|
|||
extern void CalmaReadFile();
|
||||
extern void CalmaTechInit();
|
||||
extern bool CalmaGenerateArray();
|
||||
extern void CalmaReadError();
|
||||
|
||||
#endif /* _CALMA_H */
|
||||
|
|
|
|||
|
|
@ -130,6 +130,9 @@ typedef struct
|
|||
/* Length of record header */
|
||||
#define CALMAHEADERLENGTH 4
|
||||
|
||||
/* Label types */
|
||||
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT, LABEL_TYPE_CELLID } labelType;
|
||||
|
||||
/* ------------------------- Input macros ----------------------------- */
|
||||
|
||||
/* Globals for Calma reading */
|
||||
|
|
|
|||
24
cif/CIFgen.c
24
cif/CIFgen.c
|
|
@ -3036,6 +3036,29 @@ CIFGenLayer(op, area, cellDef, temps, clientdata)
|
|||
}
|
||||
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:
|
||||
if (CIFErrorDef == NULL) break;
|
||||
|
||||
|
|
@ -3149,6 +3172,7 @@ CIFGen(cellDef, area, planes, layers, replace, genAllPlanes, clientdata)
|
|||
CIFErrorLayer = i;
|
||||
new[i] = CIFGenLayer(CIFCurStyle->cs_layers[i]->cl_ops,
|
||||
&expanded, cellDef, new, clientdata);
|
||||
|
||||
/* Clean up the non-manhattan geometry in the plane */
|
||||
if (CIFUnfracture) DBMergeNMTiles(new[i], &expanded,
|
||||
(PaintUndoInfo *)NULL);
|
||||
|
|
|
|||
|
|
@ -121,6 +121,8 @@ typedef struct cifop
|
|||
* the cell bounding box. This involves no magic type
|
||||
* layers but may itself be acted upon with grow/shrink
|
||||
* 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
|
||||
* the CIF layer, selectively picking layers.
|
||||
* CIFOP_MAXRECT - Reduce all areas to the largest internal fitting
|
||||
|
|
@ -144,9 +146,10 @@ typedef struct cifop
|
|||
#define CIFOP_ANDNOT 12
|
||||
#define CIFOP_SQUARES_G 13
|
||||
#define CIFOP_BBOX 14
|
||||
#define CIFOP_NET 15
|
||||
#define CIFOP_MAXRECT 16
|
||||
#define CIFOP_COPYUP 17
|
||||
#define CIFOP_BOUNDARY 15
|
||||
#define CIFOP_NET 16
|
||||
#define CIFOP_MAXRECT 17
|
||||
#define CIFOP_COPYUP 18
|
||||
|
||||
/* Added by Tim 10/21/2004 */
|
||||
/* The following structure is used to pass information on how to draw
|
||||
|
|
|
|||
141
cif/CIFrdcl.c
141
cif/CIFrdcl.c
|
|
@ -557,15 +557,18 @@ cifCopyPaintFunc(tile, cifCopyRec)
|
|||
*/
|
||||
|
||||
int
|
||||
CIFPaintCurrent()
|
||||
CIFPaintCurrent(filetype)
|
||||
bool filetype;
|
||||
{
|
||||
extern int cifMakeBoundaryFunc(); /* Forward declaration. */
|
||||
extern int cifPaintCurrentFunc(); /* Forward declaration. */
|
||||
|
||||
Plane *plane, *swapplane;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < cifCurReadStyle->crs_nLayers; i++)
|
||||
{
|
||||
TileType type;
|
||||
extern int cifPaintCurrentFunc(); /* Forward declaration. */
|
||||
CIFOp *op;
|
||||
|
||||
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 */
|
||||
swapplane = cifCurReadPlanes[type];
|
||||
|
|
@ -652,8 +672,8 @@ CIFPaintCurrent()
|
|||
DBSrPaintArea((Tile *) NULL, plane, &TiPlaneRect,
|
||||
&CIFSolidBits, cifPaintCurrentFunc,
|
||||
(ClientData)type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Recycle the plane, which was dynamically allocated. */
|
||||
|
||||
DBFreePaintPlane(plane);
|
||||
|
|
@ -668,9 +688,86 @@ CIFPaintCurrent()
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Below is the search function invoked for each CIF tile type
|
||||
* found for the current layer.
|
||||
*/
|
||||
/* Use CIF layer geometry to define a fixed bounding box for the current cell */
|
||||
|
||||
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
|
||||
cifPaintCurrentFunc(tile, type)
|
||||
|
|
@ -773,7 +870,7 @@ CIFParseFinish()
|
|||
* layer info.
|
||||
*/
|
||||
|
||||
CIFPaintCurrent();
|
||||
CIFPaintCurrent(FILE_CIF);
|
||||
|
||||
DBAdjustLabels(cifReadCellDef, &TiPlaneRect);
|
||||
DBReComputeBbox(cifReadCellDef);
|
||||
|
|
@ -1321,8 +1418,8 @@ CIFParseUser()
|
|||
*/
|
||||
|
||||
void
|
||||
CIFReadCellCleanup(type)
|
||||
int type; // 0 = CIF, 1 = GDS, because routine is used by both
|
||||
CIFReadCellCleanup(filetype)
|
||||
bool filetype;
|
||||
{
|
||||
HashEntry *h;
|
||||
HashSearch hs;
|
||||
|
|
@ -1332,10 +1429,10 @@ CIFReadCellCleanup(type)
|
|||
|
||||
if (cifSubcellBeingRead)
|
||||
{
|
||||
if (type == 0)
|
||||
if (filetype == FILE_CIF)
|
||||
CIFReadError("CIF ended partway through a symbol definition.\n");
|
||||
else
|
||||
calmaReadError("GDS ended partway through a symbol definition.\n");
|
||||
CalmaReadError("GDS ended partway through a symbol definition.\n");
|
||||
(void) CIFParseFinish();
|
||||
}
|
||||
|
||||
|
|
@ -1348,24 +1445,24 @@ CIFReadCellCleanup(type)
|
|||
def = (CellDef *) HashGetValue(h);
|
||||
if (def == NULL)
|
||||
{
|
||||
if (type == 0)
|
||||
if (filetype == FILE_CIF)
|
||||
CIFReadError("cell table has NULL entry (Magic error).\n");
|
||||
else
|
||||
calmaReadError("cell table has NULL entry (Magic error).\n");
|
||||
CalmaReadError("cell table has NULL entry (Magic error).\n");
|
||||
continue;
|
||||
}
|
||||
flags = def->cd_flags;
|
||||
if (!(flags & CDAVAILABLE))
|
||||
{
|
||||
if (type == 0)
|
||||
if (filetype == FILE_CIF)
|
||||
CIFReadError("cell %s was used but not defined.\n", def->cd_name);
|
||||
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;
|
||||
|
||||
if ((type == 0 && CIFNoDRCCheck == FALSE) ||
|
||||
(type == 1 && CalmaNoDRCCheck == FALSE))
|
||||
if ((filetype == FILE_CIF && CIFNoDRCCheck == FALSE) ||
|
||||
(filetype == 1 && CalmaNoDRCCheck == FALSE))
|
||||
DRCCheckThis(def, TT_CHECKPAINT, &def->cd_bbox);
|
||||
DBWAreaChanged(def, &def->cd_bbox, DBW_ALLWINDOWS, &DBAllButSpaceBits);
|
||||
DBCellSetModified(def, TRUE);
|
||||
|
|
@ -1373,7 +1470,7 @@ CIFReadCellCleanup(type)
|
|||
|
||||
/* Do geometrical processing on the top-level cell. */
|
||||
|
||||
CIFPaintCurrent();
|
||||
CIFPaintCurrent(FILE_CIF);
|
||||
DBAdjustLabels(EditCellUse->cu_def, &TiPlaneRect);
|
||||
DBReComputeBbox(EditCellUse->cu_def);
|
||||
DBWAreaChanged(EditCellUse->cu_def, &EditCellUse->cu_def->cd_bbox,
|
||||
|
|
@ -1417,7 +1514,7 @@ CIFReadCellCleanup(type)
|
|||
if (!(def->cd_flags & CDFLATTENED))
|
||||
CIFReadError("%s read error: Unresolved geometry in cell"
|
||||
" %s maps to no magic layers\n",
|
||||
(type == 0) ? "CIF" : "GDS", def->cd_name);
|
||||
(filetype == FILE_CIF) ? "CIF" : "GDS", def->cd_name);
|
||||
|
||||
#if 0
|
||||
/* Remove the cell if it has no parents, no children, and no geometry */
|
||||
|
|
@ -1430,11 +1527,11 @@ CIFReadCellCleanup(type)
|
|||
if (DBCellDeleteDef(def) == FALSE)
|
||||
{
|
||||
CIFReadError("%s read error: Unable to delete cell %s\n",
|
||||
(type == 0) ? "CIF" : "GDS", savename);
|
||||
(filetype == FILE_CIF) ? "CIF" : "GDS", savename);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (type == 0)
|
||||
if (filetype == FILE_CIF)
|
||||
TxPrintf("CIF read: Removed flattened cell %s\n", savename);
|
||||
else
|
||||
TxPrintf("GDS read: Removed flattened cell %s\n", savename);
|
||||
|
|
|
|||
|
|
@ -234,9 +234,10 @@ CIFParseFlash()
|
|||
*/
|
||||
|
||||
void
|
||||
CIFPropRecordPath(def, pathheadp, iswire)
|
||||
CIFPropRecordPath(def, pathheadp, iswire, propname)
|
||||
CellDef *def;
|
||||
CIFPath *pathheadp;
|
||||
char *propname;
|
||||
{
|
||||
extern float CIFGetOutputScale();
|
||||
CIFPath *pathp;
|
||||
|
|
@ -273,7 +274,7 @@ CIFPropRecordPath(def, pathheadp, iswire)
|
|||
|
||||
/* Reallocate pathstr to be no larger than needed to hold the path contents */
|
||||
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 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;
|
||||
else if (!strcmp(argv[2], "port"))
|
||||
calmaLabelType = LABEL_TYPE_PORT;
|
||||
else if (!strncmp(argv[2], "cell", 4))
|
||||
calmaLabelType = LABEL_TYPE_CELLID;
|
||||
else
|
||||
goto wrongNumArgs;
|
||||
}
|
||||
|
|
@ -952,6 +951,8 @@ CIFReadTechLine(sectionName, argc, argv)
|
|||
newOp->co_opcode = CIFOP_SHRINK;
|
||||
else if (strcmp(argv[0], "copyup") == 0)
|
||||
newOp->co_opcode = CIFOP_COPYUP;
|
||||
else if (strcmp(argv[0], "boundary") == 0)
|
||||
newOp->co_opcode = CIFOP_BOUNDARY;
|
||||
else
|
||||
{
|
||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||
|
|
@ -967,7 +968,6 @@ CIFReadTechLine(sectionName, argc, argv)
|
|||
if (argc != 2) goto wrongNumArgs;
|
||||
CIFParseReadLayers(argv[1], &newOp->co_cifMask);
|
||||
break;
|
||||
|
||||
case CIFOP_GROW:
|
||||
case CIFOP_GROW_G:
|
||||
case CIFOP_SHRINK:
|
||||
|
|
|
|||
|
|
@ -1660,6 +1660,6 @@ CIFReadFile(file)
|
|||
CIFReadError("no \"End\" statement.\n");
|
||||
|
||||
done:
|
||||
CIFReadCellCleanup(0);
|
||||
CIFReadCellCleanup(FILE_CIF);
|
||||
UndoEnable();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ typedef struct
|
|||
* the "crl_magicType" should be interpreted as a CIF layer.
|
||||
*/
|
||||
|
||||
#define CIFR_SIMPLE 1
|
||||
#define CIFR_TEMPLAYER 2
|
||||
#define CIFR_SIMPLE 1
|
||||
#define CIFR_TEMPLAYER 2
|
||||
|
||||
/* The following structure defines a complete CIF read-in style.
|
||||
* The constant MAXCIFRLAYERS must be less than TT_MAXTYPES, and
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ cifTechFreeStyle()
|
|||
case CIFOP_OR:
|
||||
case CIFOP_BBOX:
|
||||
case CIFOP_MAXRECT:
|
||||
case CIFOP_BOUNDARY:
|
||||
/* These options use co_client to hold a single */
|
||||
/* integer value, so it is not allocated. */
|
||||
break;
|
||||
|
|
@ -802,8 +803,7 @@ CIFTechLine(sectionName, argc, argv)
|
|||
if (CIFCurStyle->cs_status != TECH_PENDING) return TRUE;
|
||||
|
||||
newLayer = NULL;
|
||||
if ((strcmp(argv[0], "templayer") == 0)
|
||||
|| (strcmp(argv[0], "layer") == 0))
|
||||
if ((strcmp(argv[0], "templayer") == 0) || (strcmp(argv[0], "layer") == 0))
|
||||
{
|
||||
if (CIFCurStyle->cs_nLayers == MAXCIFLAYERS)
|
||||
{
|
||||
|
|
@ -1047,6 +1047,8 @@ CIFTechLine(sectionName, argc, argv)
|
|||
newOp->co_opcode = CIFOP_NET;
|
||||
else if (strcmp(argv[0], "maxrect") == 0)
|
||||
newOp->co_opcode = CIFOP_MAXRECT;
|
||||
else if (strcmp(argv[0], "boundary") == 0)
|
||||
newOp->co_opcode = CIFOP_BOUNDARY;
|
||||
else
|
||||
{
|
||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||
|
|
@ -1196,6 +1198,12 @@ bloatCheck:
|
|||
goto wrongNumArgs;
|
||||
break;
|
||||
|
||||
case CIFOP_BOUNDARY:
|
||||
/* CIFOP_BOUNDARY has no arguments */
|
||||
if (argc != 1)
|
||||
goto wrongNumArgs;
|
||||
break;
|
||||
|
||||
case CIFOP_SQUARES_G:
|
||||
case CIFOP_SQUARES:
|
||||
|
||||
|
|
@ -1752,6 +1760,7 @@ CIFTechFinal()
|
|||
{
|
||||
case CIFOP_OR:
|
||||
case CIFOP_BBOX:
|
||||
case CIFOP_BOUNDARY:
|
||||
case CIFOP_MAXRECT:
|
||||
case CIFOP_NET:
|
||||
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 */
|
||||
|
||||
/* Go through the layer operators looking for those that */
|
||||
|
|
@ -2214,6 +2241,7 @@ CIFTechOutputScale(n, d)
|
|||
{
|
||||
case CIFOP_OR:
|
||||
case CIFOP_BBOX:
|
||||
case CIFOP_BOUNDARY:
|
||||
case CIFOP_MAXRECT:
|
||||
case CIFOP_NET:
|
||||
break;
|
||||
|
|
|
|||
72
cif/Depend
72
cif/Depend
|
|
@ -1,44 +1,68 @@
|
|||
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 \
|
||||
../commands/commands.h ../windows/windows.h ../select/selInt.h \
|
||||
../utils/stack.h ../utils/malloc.h ../utils/maxrect.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 \
|
||||
../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 \
|
||||
../utils/hash.h ../database/database.h ../cif/CIFint.h ../cif/cif.h \
|
||||
../drc/drc.h ../textio/textio.h ../utils/undo.h ../utils/malloc.h \
|
||||
../utils/signals.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 \
|
||||
../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 \
|
||||
../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
|
||||
CIFrdcl.o: CIFrdcl.c ../utils/magic.h ../utils/malloc.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.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 ../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 \
|
||||
../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../cif/CIFint.h \
|
||||
../cif/CIFread.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 ../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 \
|
||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/tech.h ../textio/textio.h \
|
||||
../utils/utils.h ../cif/CIFint.h ../cif/CIFread.h ../calma/calmaInt.h \
|
||||
../utils/malloc.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../cif/CIFint.h \
|
||||
../cif/CIFread.h ../cif/cif.h ../textio/textio.h ../utils/signals.h \
|
||||
../utils/undo.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 ../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 \
|
||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
||||
../graphics/graphics.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||
../cif/CIFint.h ../textio/textio.h ../utils/undo.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 \
|
||||
../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 \
|
||||
../utils/hash.h ../database/database.h ../utils/tech.h ../utils/utils.h \
|
||||
../utils/styles.h ../cif/CIFint.h ../calma/calmaInt.h ../textio/textio.h \
|
||||
../utils/malloc.h ../cif/cif.h ../drc/drc.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/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 \
|
||||
../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 \
|
||||
../utils/undo.h ../cif/cif.h ../cif/CIFint.h ../utils/signals.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.h \
|
||||
|
|
|
|||
|
|
@ -30,6 +30,10 @@
|
|||
* 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) */
|
||||
|
||||
extern int CIFWarningLevel;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
CMWmain.o: CMWmain.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../graphics/graphics.h ../textio/textio.h ../utils/utils.h \
|
||||
../utils/styles.h ../graphics/glyphs.h ../utils/malloc.h
|
||||
../graphics/graphics.h ../textio/textio.h ../utils/styles.h \
|
||||
../graphics/glyphs.h ../utils/malloc.h
|
||||
CMWcmmnds.o: CMWcmmnds.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../graphics/graphics.h ../textio/textio.h ../utils/utils.h \
|
||||
../utils/styles.h ../utils/undo.h
|
||||
../graphics/graphics.h ../textio/textio.h ../utils/styles.h \
|
||||
../utils/undo.h
|
||||
CMWundo.o: CMWundo.c ../utils/magic.h ../utils/geometry.h \
|
||||
../graphics/graphics.h ../windows/windows.h ../cmwind/cmwind.h \
|
||||
../textio/txcommands.h ../utils/undo.h
|
||||
|
|
|
|||
|
|
@ -3802,7 +3802,7 @@ cmdDumpParseArgs(cmdName, w, cmd, dummy, scx)
|
|||
char *propvalue;
|
||||
bool found;
|
||||
|
||||
propvalue = DBPropGet(def, "FIXED_BBOX", &found);
|
||||
propvalue = (char *)DBPropGet(def, "FIXED_BBOX", &found);
|
||||
if (found)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* 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 --- */
|
||||
/* */
|
||||
|
|
@ -1015,12 +1063,13 @@ CmdPolygon(w, cmd)
|
|||
/*----------------------------------------------------------------------*/
|
||||
|
||||
Label *
|
||||
portFindLabel(editDef, port, unique)
|
||||
portFindLabel(editDef, port, unique, nonEdit)
|
||||
CellDef *editDef;
|
||||
bool unique;
|
||||
bool port;
|
||||
bool *nonEdit; // TRUE if label is not in the edit cell
|
||||
{
|
||||
bool found;
|
||||
int found;
|
||||
Label *lab, *sl;
|
||||
Rect editBox;
|
||||
|
||||
|
|
@ -1029,33 +1078,62 @@ portFindLabel(editDef, port, unique)
|
|||
*/
|
||||
|
||||
ToolGetEditBox(&editBox);
|
||||
found = FALSE;
|
||||
found = 0;
|
||||
if (nonEdit) *nonEdit = FALSE;
|
||||
lab = NULL;
|
||||
for (sl = editDef->cd_labels; sl != NULL; sl = sl->lab_next)
|
||||
{
|
||||
if (GEO_OVERLAP(&editBox, &sl->lab_rect))
|
||||
{
|
||||
if (found == TRUE)
|
||||
if (found > 0)
|
||||
{
|
||||
/* Let's do this again with the GEO_SURROUND function */
|
||||
/* 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)
|
||||
{
|
||||
if (GEO_SURROUND(&editBox, &sl->lab_rect))
|
||||
{
|
||||
if (found == TRUE && unique == TRUE) return NULL;
|
||||
if (found > 0 && unique == TRUE) return NULL;
|
||||
lab = sl;
|
||||
found = TRUE;
|
||||
found++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
/*
|
||||
|
|
@ -1121,6 +1199,7 @@ CmdPort(w, cmd)
|
|||
int i, idx, pos, type, option, argc;
|
||||
unsigned short dirmask;
|
||||
bool found;
|
||||
bool nonEdit = FALSE;
|
||||
Label *lab, *sl;
|
||||
Rect editBox, tmpArea;
|
||||
CellDef *editDef = EditCellUse->cu_def;
|
||||
|
|
@ -1254,7 +1333,7 @@ CmdPort(w, cmd)
|
|||
if (option != PORT_LAST)
|
||||
{
|
||||
if (lab == NULL)
|
||||
lab = portFindLabel(editDef, TRUE, TRUE);
|
||||
lab = portFindLabel(editDef, TRUE, TRUE, &nonEdit);
|
||||
|
||||
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 */
|
||||
switch (option)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1349,7 +1349,8 @@ Okay:
|
|||
* 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;
|
||||
p.p_x = scx.scx_use->cu_xlo;
|
||||
|
|
|
|||
|
|
@ -1348,7 +1348,7 @@ CmdWire(w, cmd)
|
|||
case DECREMENT:
|
||||
if (cmd->tx_argc != 3 && cmd->tx_argc != 4)
|
||||
goto badargs;
|
||||
if (!strcmp(cmd->tx_argv[2], "type"))
|
||||
if (!strcmp(cmd->tx_argv[2], "type") || !strcmp(cmd->tx_argv[2], "layer"))
|
||||
{
|
||||
Contact *contact;
|
||||
type = TT_SPACE;
|
||||
|
|
@ -1371,7 +1371,7 @@ CmdWire(w, cmd)
|
|||
else
|
||||
{
|
||||
width = DRCGetDefaultLayerWidth(type);
|
||||
WireAddContact(type, width);
|
||||
WireAddContact(type, (WireWidth < width) ? width : WireWidth);
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cmd->tx_argv[2], "width"))
|
||||
|
|
@ -1411,7 +1411,7 @@ CmdWire(w, cmd)
|
|||
else
|
||||
{
|
||||
width = DRCGetDefaultLayerWidth(type);
|
||||
WireAddContact(type, width);
|
||||
WireAddContact(type, (WireWidth < width) ? width : WireWidth);
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cmd->tx_argv[2], "width"))
|
||||
|
|
@ -1736,17 +1736,20 @@ CmdWriteall(w, cmd)
|
|||
int cmdWriteallFunc();
|
||||
static char *force[] = { "force", 0 };
|
||||
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]);
|
||||
return;
|
||||
flags = 0;
|
||||
if (Lookup(cmd->tx_argv[1], force) < 0)
|
||||
{
|
||||
TxError("Usage: %s [force [cellname ...]]\n", cmd->tx_argv[0]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DBUpdateStamps();
|
||||
argc = cmd->tx_argc;
|
||||
(void) DBCellSrDefs(CDMODIFIED|CDBOXESCHANGED|CDSTAMPSCHANGED,
|
||||
cmdWriteallFunc, (ClientData)cmd);
|
||||
(void) DBCellSrDefs(flags, cmdWriteallFunc, (ClientData)cmd);
|
||||
cmd->tx_argc = argc;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,62 +1,81 @@
|
|||
CmdSubrs.o: CmdSubrs.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../commands/commands.h ../textio/textio.h ../cif/cif.h ../drc/drc.h \
|
||||
../textio/txcommands.h ../utils/undo.h ../utils/macros.h ../sim/sim.h \
|
||||
../select/select.h
|
||||
CmdAB.o: CmdAB.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||
../commands/commands.h ../utils/utils.h ../textio/textio.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 ../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 \
|
||||
../utils/malloc.h ../utils/netlist.h ../select/select.h
|
||||
CmdCD.o: CmdCD.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||
../commands/commands.h ../utils/utils.h ../textio/textio.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 ../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 \
|
||||
../calma/calma.h ../utils/styles.h ../router/rtrDcmpose.h \
|
||||
../select/select.h ../utils/signals.h ../utils/malloc.h ../cif/CIFint.h \
|
||||
../cif/CIFread.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 \
|
||||
../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 \
|
||||
../textio/textio.h ../utils/macros.h ../drc/drc.h ../textio/txcommands.h \
|
||||
../extract/extract.h ../select/select.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 \
|
||||
../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/macros.h ../drc/drc.h ../textio/txcommands.h ../utils/styles.h \
|
||||
../graphics/graphics.h ../extract/extract.h ../utils/malloc.h \
|
||||
../select/select.h ../sim/sim.h ../gcr/gcr.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 \
|
||||
../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 \
|
||||
../textio/textio.h ../graphics/graphics.h ../drc/drc.h \
|
||||
../textio/txcommands.h ../utils/undo.h ../select/select.h \
|
||||
../netmenu/netmenu.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 \
|
||||
../database/database.h ../database/fonts.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/main.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
|
||||
../utils/styles.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 ../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 \
|
||||
../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 \
|
||||
../textio/txcommands.h ../utils/signals.h ../utils/undo.h \
|
||||
../select/select.h ../utils/styles.h ../wiring/wiring.h \
|
||||
../utils/netlist.h ../netmenu/netmenu.h ../utils/tech.h ../drc/drc.h
|
||||
CmdWizard.o: CmdWizard.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/malloc.h ../tiles/tile.h ../utils/hash.h ../database/database.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 ../utils/utils.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 ../commands/commands.h ../utils/runstats.h \
|
||||
../textio/textio.h ../graphics/graphics.h ../utils/signals.h \
|
||||
../textio/txcommands.h
|
||||
CmdAuto.o: CmdAuto.c ../tcltk/tclmagic.h ../utils/magic.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
|
||||
# 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_ur, scalen, scaled);
|
||||
|
||||
/* If the cell is an abstract view with a fixed bounding box, then */
|
||||
/* adjust the bounding box property to match the new scale. */
|
||||
/* If the cell is an abstract view with a fixed bounding box, then */
|
||||
/* adjust the bounding box property to match the new scale. */
|
||||
|
||||
if ((cellDef->cd_flags & CDFIXEDBBOX) != 0)
|
||||
{
|
||||
|
|
@ -1791,9 +1791,7 @@ donecell:
|
|||
DBPropPut(cellDef, "FIXED_BBOX", propval);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,8 @@ dbCopyDefFunc(use, def)
|
|||
* DBCellClearDef --
|
||||
*
|
||||
* 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:
|
||||
* None.
|
||||
|
|
@ -205,6 +206,10 @@ DBCellClearDef(cellDef)
|
|||
freeMagic((char *) lab);
|
||||
cellDef->cd_labels = (Label *) NULL;
|
||||
cellDef->cd_lastLabel = (Label *) NULL;
|
||||
|
||||
/* Remove all defined properties */
|
||||
DBPropClearAll(cellDef);
|
||||
|
||||
SigEnableInterrupts();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -700,15 +700,14 @@ dbcConnectLabelFunc(scx, lab, tpath, csa2)
|
|||
/* Check for equivalent ports. For any found, call */
|
||||
/* DBTreeSrTiles recursively on the type and area */
|
||||
/* 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)
|
||||
if (slab->lab_flags & PORT_DIR_MASK)
|
||||
/* Don't recurse, just add area to the csa2_list. */
|
||||
/* 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)
|
||||
{
|
||||
Rect newarea;
|
||||
|
|
@ -1036,36 +1035,37 @@ DBTreeCopyConnect(scx, mask, xMask, connect, area, destUse)
|
|||
else
|
||||
DBTreeSrTiles(scx, newmask, xMask, dbcConnectFunc, (ClientData) &csa2);
|
||||
|
||||
/* Check the source def for any labels belonging to this */
|
||||
/* tile area and plane, and add them to the destination. */
|
||||
/* Check the source def for any labels belonging to this */
|
||||
/* tile area and plane, and add them to the destination. */
|
||||
|
||||
/* (This code previously in dbcConnectFunc, but the change to */
|
||||
/* BPlane for cells means that the cell search cannot be run */
|
||||
/* from the top within another cell search.) */
|
||||
/* (This code previously in dbcConnectFunc, but moved to avoid */
|
||||
/* running the cell search from the top within another cell */
|
||||
/* search, which creates deep stacks and can trigger stack */
|
||||
/* overflow.) */
|
||||
|
||||
searchtype = TF_LABEL_ATTACH;
|
||||
searchtype = TF_LABEL_ATTACH;
|
||||
if (newtype & TT_DIAGONAL)
|
||||
{
|
||||
/* If the tile is split, then labels attached to the */
|
||||
/* opposite point of the triangle are NOT connected. */
|
||||
{
|
||||
/* If the tile is split, then labels attached to the */
|
||||
/* opposite point of the triangle are NOT connected. */
|
||||
|
||||
if (newtype & TT_SIDE)
|
||||
{
|
||||
if (newtype & TT_DIRECTION)
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_SW;
|
||||
else
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_NW;
|
||||
if (newtype & TT_SIDE)
|
||||
{
|
||||
if (newtype & TT_DIRECTION)
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_SW;
|
||||
else
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_NW;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (newtype & TT_DIRECTION)
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_NE;
|
||||
else
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_SE;
|
||||
if (newtype & TT_DIRECTION)
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_NE;
|
||||
else
|
||||
searchtype |= TF_LABEL_ATTACH_NOT_SE;
|
||||
}
|
||||
}
|
||||
DBTreeSrLabels(scx, newmask, xMask, NULL, searchtype,
|
||||
dbcConnectLabelFunc, (ClientData) &csa2);
|
||||
dbcConnectLabelFunc, (ClientData) &csa2);
|
||||
}
|
||||
freeMagic((char *)csa2.csa2_list);
|
||||
|
||||
|
|
|
|||
|
|
@ -1623,6 +1623,7 @@ dbReadProperties(cellDef, line, len, f, scalen, scaled)
|
|||
locbbox.r_xbot, locbbox.r_ybot,
|
||||
locbbox.r_xtop, locbbox.r_ytop);
|
||||
(void) DBPropPut(cellDef, propertyname, storedvalue);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ DBPropPut(cellDef, name, value)
|
|||
{
|
||||
HashTable *htab;
|
||||
HashEntry *entry;
|
||||
char *oldvalue;
|
||||
|
||||
/* Honor the NOEDIT flag */
|
||||
if (cellDef->cd_flags & CDNOEDIT) return;
|
||||
|
|
@ -67,6 +68,8 @@ DBPropPut(cellDef, name, value)
|
|||
htab = (HashTable *) cellDef->cd_props;
|
||||
|
||||
entry = HashFind(htab, name);
|
||||
oldvalue = (char *)HashGetValue(entry);
|
||||
if (oldvalue != NULL) freeMagic(oldvalue);
|
||||
HashSetValue(entry, value);
|
||||
}
|
||||
|
||||
|
|
|
|||
103
database/Depend
103
database/Depend
|
|
@ -1,96 +1,153 @@
|
|||
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 \
|
||||
../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 \
|
||||
../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
|
||||
DBcellcopy.o: DBcellcopy.c ../utils/magic.h ../utils/geometry.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
|
||||
DBcellname.o: DBcellname.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../windows/windows.h ../textio/textio.h ../dbwind/dbwind.h \
|
||||
../utils/main.h ../drc/drc.h
|
||||
DBcellsrch.o: DBcellsrch.c ../utils/magic.h ../utils/malloc.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 \
|
||||
../mzrouter/mzrouter.h ../utils/list.h
|
||||
DBcellsel.o: DBcellsel.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../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
|
||||
DBio.o: DBio.c ../utils/magic.h ../utils/geometry.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 ../database/fonts.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/tech.h ../textio/textio.h ../drc/drc.h \
|
||||
../utils/undo.h ../utils/malloc.h ../utils/signals.h
|
||||
DBlabel.o: DBlabel.c ../utils/magic.h ../utils/malloc.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 \
|
||||
../textio/textio.h
|
||||
DBlabel2.o: DBlabel2.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../textio/textio.h ../utils/undo.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 \
|
||||
../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 \
|
||||
../utils/malloc.h
|
||||
DBtcontact.o: DBtcontact.c ../utils/magic.h ../utils/geometry.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
|
||||
DBtechname.o: DBtechname.c ../tcltk/tclmagic.h ../utils/magic.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
|
||||
DBtpaint.o: DBtpaint.c ../utils/magic.h ../utils/geometry.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
|
||||
DBtpaint2.o: DBtpaint2.c ../utils/magic.h ../utils/geometry.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
|
||||
DBtechtype.o: DBtechtype.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/malloc.h
|
||||
DBtiles.o: DBtiles.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../database/databaseInt.h ../windows/windows.h ../textio/textio.h \
|
||||
../drc/drc.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../database/databaseInt.h ../utils/undo.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/main.h ../utils/utils.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 ../database/databaseInt.h ../utils/undo.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h ../drc/drc.h \
|
||||
../utils/signals.h
|
||||
|
|
|
|||
|
|
@ -1,41 +1,61 @@
|
|||
DBWcommands.o: DBWcommands.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/main.h \
|
||||
../commands/commands.h ../textio/textio.h ../textio/txcommands.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 ../commands/commands.h ../textio/textio.h \
|
||||
../textio/txcommands.h
|
||||
DBWdisplay.o: DBWdisplay.c ../utils/magic.h ../utils/malloc.h \
|
||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
||||
../dbwind/dbwind.h ../utils/utils.h ../dbwind/dbwtech.h \
|
||||
../utils/styles.h ../utils/main.h ../utils/tech.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../utils/styles.h ../textio/textio.h ../textio/txcommands.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 ../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 \
|
||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
||||
../dbwind/dbwind.h ../utils/utils.h ../utils/styles.h ../utils/malloc.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 \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../utils/malloc.h \
|
||||
../utils/signals.h
|
||||
DBWfdback.o: DBWfdback.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../utils/utils.h ../utils/styles.h ../utils/malloc.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 ../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 \
|
||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../textio/textio.h ../graphics/graphicsInt.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 \
|
||||
../dbwind/dbwind.h ../textio/textio.h ../graphics/graphicsInt.h
|
||||
DBWprocs.o: DBWprocs.c ../utils/main.h ../windows/windows.h \
|
||||
../utils/magic.h ../utils/geometry.h ../database/database.h \
|
||||
../tiles/tile.h ../utils/hash.h ../commands/commands.h \
|
||||
../dbwind/dbwind.h ../graphics/graphics.h ../textio/textio.h \
|
||||
../textio/txcommands.h ../utils/utils.h ../utils/undo.h \
|
||||
../graphics/glyphs.h ../utils/malloc.h ../utils/styles.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 ../commands/commands.h ../dbwind/dbwind.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 \
|
||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../textio/textio.h ../utils/main.h ../textio/txcommands.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 \
|
||||
../dbwind/dbwind.h ../textio/textio.h ../utils/main.h \
|
||||
../textio/txcommands.h
|
||||
DBWundo.o: DBWundo.c ../utils/magic.h ../utils/geometry.h \
|
||||
../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/main.h ../dbwind/dbwind.h \
|
||||
../utils/undo.h ../textio/textio.h ../commands/commands.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/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 \
|
||||
../textio/textio.h ../utils/malloc.h ../utils/utils.h
|
||||
hist.o: hist.c ../utils/magic.h ../utils/geometry.h \
|
||||
../database/database.h ../tiles/tile.h ../utils/hash.h ../utils/utils.h \
|
||||
../textio/textio.h ../debug/debug.h ../utils/malloc.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 ../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
|
||||
TCL_LIB_DIR = /usr/lib
|
||||
MAGIC_VERSION = 8.2
|
||||
MAGIC_REVISION = 53
|
||||
MAGIC_REVISION = 101
|
||||
|
||||
CC = gcc
|
||||
CPP = gcc -E
|
||||
CXX = g++
|
||||
|
||||
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_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
|
||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||
|
||||
|
|
|
|||
|
|
@ -2159,9 +2159,9 @@ drcSpacing(argc, argv)
|
|||
}
|
||||
else
|
||||
{
|
||||
runlength = distance;
|
||||
layers2 = argv[3];
|
||||
distance = atoi(argv[4]);
|
||||
runlength = distance;
|
||||
adjacency = argv[5];
|
||||
why = drcWhyDup(argv[6]);
|
||||
}
|
||||
|
|
|
|||
55
drc/Depend
55
drc/Depend
|
|
@ -1,36 +1,57 @@
|
|||
DRCarray.o: DRCarray.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../drc/drc.h \
|
||||
../windows/windows.h ../commands/commands.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 ../windows/windows.h \
|
||||
../commands/commands.h
|
||||
DRCbasic.o: DRCbasic.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../drc/drc.h \
|
||||
../utils/signals.h ../utils/maxrect.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 ../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 \
|
||||
../utils/hash.h ../database/database.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 \
|
||||
../utils/utils.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../utils/signals.h ../graphics/graphics.h ../utils/undo.h \
|
||||
../utils/malloc.h
|
||||
DRCmain.o: DRCmain.c ../utils/magic.h ../utils/malloc.h \
|
||||
../textio/textio.h ../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../drc/drc.h ../utils/undo.h
|
||||
DRCmain.o: DRCmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||
../utils/malloc.h ../textio/textio.h ../utils/geometry.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../drc/drc.h ../utils/undo.h
|
||||
DRCsubcell.o: DRCsubcell.c ../utils/magic.h ../textio/textio.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
|
||||
DRCtech.o: DRCtech.c ../tcltk/tclmagic.h ../utils/magic.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
|
||||
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 \
|
||||
../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 \
|
||||
../utils/maxrect.h
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
ext2sim.o: ext2sim.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../extflat/extflat.h ../extract/extract.h ../utils/runstats.h \
|
||||
../utils/malloc.h
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
ext2spice.o: ext2spice.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.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 \
|
||||
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.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 \
|
||||
../utils/malloc.h ../utils/geometry.h ../utils/hash.h ../utils/dqueue.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 \
|
||||
../commands/commands.h ../textio/txcommands.h ../extflat/extflat.h \
|
||||
../extflat/EFint.h ../extract/extract.h ../utils/runstats.h \
|
||||
|
|
|
|||
|
|
@ -661,6 +661,7 @@ spcdevHierVisit(hc, dev, scale)
|
|||
"base", esSpiceF);
|
||||
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -788,6 +789,7 @@ spcdevHierVisit(hc, dev, scale)
|
|||
subnode->efnode_name->efnn_hier,
|
||||
"diode_bot", esSpiceF);
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -808,6 +810,7 @@ spcdevHierVisit(hc, dev, scale)
|
|||
gate->dterm_node->efnode_name->efnn_hier,
|
||||
"diode_top", esSpiceF);
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcHierWriteParams(hc, dev, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -1514,8 +1517,8 @@ devDistJunctHierVisit(hc, dev, scale)
|
|||
return 0;
|
||||
}
|
||||
|
||||
w = (int)((float)w * scale);
|
||||
EFGetLengthAndWidth(dev, &l, &w);
|
||||
w = (int)((float)w * scale);
|
||||
|
||||
for (i = 1; i<dev->dev_nterm; i++)
|
||||
{
|
||||
|
|
@ -1552,7 +1555,8 @@ esMakePorts(hc, cdata)
|
|||
char *name, *portname, *tptr, *aptr, *locname;
|
||||
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)
|
||||
{
|
||||
|
|
@ -1579,13 +1583,11 @@ esMakePorts(hc, cdata)
|
|||
|
||||
// Find the cell for the instance
|
||||
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))
|
||||
{
|
||||
portdef = use->use_def;
|
||||
break;
|
||||
}
|
||||
use = (Use *)HashGetValue(he);
|
||||
portdef = use->use_def;
|
||||
}
|
||||
if ((aptr == NULL) || (aptr > tptr))
|
||||
*tptr = '/';
|
||||
|
|
@ -1660,13 +1662,11 @@ esMakePorts(hc, cdata)
|
|||
|
||||
// Find the cell for the instance
|
||||
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))
|
||||
{
|
||||
portdef = use->use_def;
|
||||
break;
|
||||
}
|
||||
use = (Use *)HashGetValue(he);
|
||||
portdef = use->use_def;
|
||||
}
|
||||
if ((aptr == NULL) || (aptr > tptr))
|
||||
*tptr = '/';
|
||||
|
|
@ -1747,7 +1747,7 @@ esHierVisit(hc, cdata)
|
|||
|
||||
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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1685,6 +1685,7 @@ topVisit(def, doStub)
|
|||
EFNodeName *unnumbered;
|
||||
|
||||
sname = (EFNodeName *) HashGetValue(he);
|
||||
if (sname == NULL) continue; /* Should not happen */
|
||||
snode = sname->efnn_node;
|
||||
|
||||
if (!(snode->efnode_flags & EF_PORT)) continue;
|
||||
|
|
@ -2334,6 +2335,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
|||
name, esSpiceF);
|
||||
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -2455,6 +2457,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
|||
name, esSpiceF);
|
||||
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -2472,6 +2475,7 @@ spcdevVisit(dev, hierName, scale, trans)
|
|||
name, esSpiceF);
|
||||
|
||||
fprintf(esSpiceF, " %s", EFDevTypes[dev->dev_type]);
|
||||
sdM = getCurDevMult();
|
||||
spcWriteParams(dev, hierName, scale, l, w, sdM);
|
||||
break;
|
||||
|
||||
|
|
@ -3795,8 +3799,8 @@ devDistJunctVisit(dev, hierName, scale, trans)
|
|||
return 0;
|
||||
}
|
||||
|
||||
w = (int)((float)w * scale);
|
||||
EFGetLengthAndWidth(dev, &l, &w);
|
||||
w = (int)((float)w * scale);
|
||||
|
||||
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 \
|
||||
../utils/geometry.h ../utils/hash.h ../utils/utils.h ../tiles/tile.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 \
|
||||
../utils/paths.h
|
||||
EFsym.o: EFsym.c ../utils/magic.h ../utils/geometry.h ../utils/geofast.h \
|
||||
|
|
|
|||
|
|
@ -223,8 +223,8 @@ efAdjustSubCap(def, nodeName, nodeCapAdjust)
|
|||
EFNode *node;
|
||||
HashEntry *he;
|
||||
|
||||
he = HashFind(&def->def_nodes, nodeName);
|
||||
if (nodename = (EFNodeName *) HashGetValue(he))
|
||||
he = HashLookOnly(&def->def_nodes, nodeName);
|
||||
if (he && (nodename = (EFNodeName *) HashGetValue(he)))
|
||||
{
|
||||
node = nodename->efnn_node;
|
||||
node->efnode_cap += (EFCapValue) nodeCapAdjust;
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ efReadDef(def, dosubckt, resist, noscale, toplevel)
|
|||
int argc, ac, n;
|
||||
CellDef *dbdef;
|
||||
EFCapValue cap;
|
||||
char line[1024], *argv[64], *name, *attrs;
|
||||
char line[1024], *argv[128], *name, *attrs;
|
||||
int rscale = 1; /* Multiply resistances by this */
|
||||
int cscale = 1; /* Multiply capacitances 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 \
|
||||
../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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h \
|
||||
../windows/windows.h ../dbwind/dbwind.h
|
||||
ExtBasic.o: ExtBasic.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h
|
||||
ExtCell.o: ExtCell.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.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 ../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/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
|
||||
ExtCouple.o: ExtCouple.c ../utils/magic.h ../utils/geometry.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
|
||||
ExtHard.o: ExtHard.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||
../utils/hash.h ../database/database.h ../utils/malloc.h \
|
||||
../textio/textio.h ../utils/styles.h ../debug/debug.h \
|
||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h \
|
||||
../utils/geofast.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 ../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 \
|
||||
../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 \
|
||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||
../extract/extDebugInt.h
|
||||
ExtLength.o: ExtLength.c ../utils/magic.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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../utils/main.h \
|
||||
../utils/utils.h
|
||||
../dbwind/dbwind.h ../utils/styles.h ../utils/stack.h ../utils/main.h
|
||||
ExtMain.o: ExtMain.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.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 ../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/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
|
||||
ExtNghbors.o: ExtNghbors.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/signals.h ../utils/stack.h
|
||||
ExtPerim.o: ExtPerim.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/malloc.h \
|
||||
../utils/stack.h ../debug/debug.h ../extract/extract.h \
|
||||
../extract/extractInt.h ../extract/extDebugInt.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/malloc.h \
|
||||
../textio/textio.h ../debug/debug.h ../extract/extract.h \
|
||||
../extract/extractInt.h ../extract/extDebugInt.h ../utils/signals.h
|
||||
ExtSubtree.o: ExtSubtree.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/malloc.h ../textio/textio.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 ../utils/malloc.h ../textio/textio.h \
|
||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.h
|
||||
ExtTech.o: ExtTech.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../commands/commands.h ../textio/textio.h ../textio/txcommands.h \
|
||||
../debug/debug.h ../extract/extract.h ../extract/extractInt.h \
|
||||
../extract/extDebugInt.h
|
||||
ExtTimes.o: ExtTimes.c ../utils/magic.h ../utils/utils.h \
|
||||
../utils/geometry.h ../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/malloc.h ../textio/textio.h \
|
||||
../extract/extract.h ../extract/extractInt.h ../extract/extDebugInt.h
|
||||
../database/database.h ../bplane/bplane.h ../bplane/bpOpaque.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 \
|
||||
../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 \
|
||||
../extract/extractInt.h ../extract/extDebugInt.h
|
||||
ExtInter.o: ExtInter.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../utils/styles.h
|
||||
ExtUnique.o: ExtUnique.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/styles.h ../tiles/tile.h ../utils/hash.h ../database/database.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 ../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/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
|
||||
|
|
|
|||
|
|
@ -1,28 +1,37 @@
|
|||
gaChannel.o: gaChannel.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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
|
||||
../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 \
|
||||
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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 \
|
||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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
|
||||
../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 \
|
||||
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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 \
|
||||
../utils/heap.h ../utils/undo.h ../tiles/tile.h ../database/database.h \
|
||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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 \
|
||||
../utils/list.h ../mzrouter/mzrouter.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 \
|
||||
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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 ../utils/list.h \
|
||||
../mzrouter/mzrouter.h
|
||||
gaSimple.o: gaSimple.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../router/router.h ../grouter/grouter.h ../grouter/grouteDebug.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
|
||||
gaStem.o: gaStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h \
|
||||
../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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
|
||||
../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 \
|
||||
../dbwind/dbwind.h ../utils/signals.h ../netmenu/netmenu.h ../gcr/gcr.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 \
|
||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/signals.h ../textio/textio.h ../debug/debug.h ../gcr/gcr.h \
|
||||
../router/router.h ../grouter/grouter.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 ../utils/utils.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 ../utils/signals.h ../textio/textio.h \
|
||||
../debug/debug.h ../gcr/gcr.h ../router/router.h ../grouter/grouter.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
|
||||
|
|
|
|||
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
|
||||
gcrDebug.o: gcrDebug.c ../utils/magic.h ../utils/geometry.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
|
||||
gcrEdge.o: gcrEdge.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||
../gcr/gcr.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 \
|
||||
../tiles/tile.h ../gcr/gcr.h
|
||||
gcrInit.o: gcrInit.c ../utils/magic.h ../utils/geometry.h ../utils/hash.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 \
|
||||
../gcr/gcr.h ../utils/malloc.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
|
||||
gcrShwFlgs.o: gcrShwFlgs.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/hash.h ../tiles/tile.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../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/geometry.h ../graphics/glyphs.h ../windows/windows.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 \
|
||||
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
||||
../utils/hash.h ../windows/windows.h ../graphics/graphics.h \
|
||||
../graphics/graphicsInt.h ../utils/utils.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 ../windows/windows.h ../graphics/graphics.h \
|
||||
../graphics/graphicsInt.h
|
||||
grCMap.o: grCMap.c ../utils/magic.h ../utils/malloc.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||
../utils/utils.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 ../windows/windows.h ../graphics/graphics.h \
|
||||
../graphics/graphicsInt.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 \
|
||||
../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
|
||||
grGlyphs.o: grGlyphs.c ../utils/magic.h ../utils/geometry.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
|
||||
W3Dmain.o: W3Dmain.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||
../utils/geometry.h ../windows/windows.h ../tiles/tile.h ../utils/hash.h \
|
||||
../utils/undo.h ../database/database.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/utils.h ../utils/styles.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/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 \
|
||||
../graphics/glyphs.h ../utils/malloc.h ../windows/windInt.h ../cif/cif.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 \
|
||||
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.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
|
||||
grX11su4.o: grX11su4.c ../utils/magic.h ../utils/magsgtty.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
|
||||
grTk1.o: grTk1.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 ../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 \
|
||||
../textio/txcommands.h ../utils/signals.h ../utils/utils.h ../drc/drc.h \
|
||||
../utils/macros.h grTkInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||
../textio/txcommands.h ../utils/signals.h ../drc/drc.h ../utils/macros.h \
|
||||
grTkInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||
grTk2.o: grTk2.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 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
|
||||
grTOGL1.o: grTOGL1.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 ../utils/malloc.h \
|
||||
../utils/magsgtty.h ../graphics/graphics.h ../graphics/graphicsInt.h \
|
||||
../textio/textio.h ../textio/txcommands.h ../utils/signals.h \
|
||||
../utils/utils.h ../drc/drc.h ../utils/macros.h ../graphics/grTOGLInt.h \
|
||||
../utils/paths.h ../graphics/grTkCommon.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/grTOGLInt.h ../utils/paths.h ../graphics/grTkCommon.h
|
||||
grTOGL2.o: grTOGL2.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 \
|
||||
grTOGLInt.h
|
||||
grTOGL3.o: grTOGL3.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||
../utils/geometry.h ../utils/malloc.h ../windows/windows.h \
|
||||
../graphics/graphics.h ../graphics/graphicsInt.h ../textio/textio.h \
|
||||
../utils/signals.h ../utils/utils.h ../utils/hash.h \
|
||||
../graphics/grTOGLInt.h ../graphics/grTkCommon.h ../database/fonts.h \
|
||||
../tiles/tile.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/grTOGLInt.h ../graphics/grTkCommon.h ../database/fonts.h
|
||||
grTOGL4.o: grTOGL4.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 \
|
||||
|
|
@ -108,6 +126,8 @@ grTOGL5.o: grTOGL5.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/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 \
|
||||
../graphics/graphicsInt.h ../dbwind/dbwind.h ../graphics/grTkCommon.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 \
|
||||
../textio/textio.h ../utils/signals.h ../utils/utils.h ../utils/hash.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
|
||||
grOGL4.o: grOGL4.c ../utils/magic.h ../utils/magsgtty.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 \
|
||||
../graphics/graphics.h ../windows/windows.h ../graphics/graphicsInt.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 \
|
||||
../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 \
|
||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||
../utils/malloc.h
|
||||
grouteCrss.o: grouteCrss.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||
../utils/styles.h
|
||||
grouteDens.o: grouteDens.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../grouter/grouteDebug.h ../utils/signals.h ../textio/textio.h \
|
||||
../utils/malloc.h ../utils/styles.h ../debug/debug.h
|
||||
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.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 \
|
||||
../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 \
|
||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||
../utils/malloc.h
|
||||
grouteMult.o: grouteMult.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../router/router.h ../gcr/gcr.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
|
||||
../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 ../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 \
|
||||
../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 \
|
||||
../utils/signals.h ../router/router.h ../grouter/grouter.h \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.h \
|
||||
../utils/styles.h
|
||||
groutePath.o: groutePath.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.h \
|
||||
../utils/malloc.h
|
||||
groutePen.o: groutePen.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../grouter/grouteDebug.h ../utils/signals.h ../textio/textio.h \
|
||||
../utils/malloc.h ../utils/styles.h ../utils/list.h
|
||||
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.h \
|
||||
../bplane/bpEnum.h ../utils/utils.h ../utils/geofast.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 \
|
||||
../utils/hash.h ../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/signals.h ../textio/textio.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 ../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/signals.h ../textio/textio.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 \
|
||||
../utils/netlist.h
|
||||
|
|
|
|||
|
|
@ -1,34 +1,45 @@
|
|||
irCommand.o: irCommand.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
||||
../utils/utils.h ../commands/commands.h ../utils/styles.h \
|
||||
../utils/malloc.h ../utils/list.h ../mzrouter/mzrouter.h \
|
||||
../irouter/irouter.h ../irouter/irInternal.h ../irouter/irDebug.h
|
||||
../commands/commands.h ../utils/styles.h ../utils/malloc.h \
|
||||
../utils/list.h ../mzrouter/mzrouter.h ../irouter/irouter.h \
|
||||
../irouter/irInternal.h ../irouter/irDebug.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/signals.h ../textio/textio.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 \
|
||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
||||
../mzrouter/mzrouter.h ../irouter/irDebug.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 \
|
||||
../select/select.h ../utils/signals.h ../textio/textio.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 ../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 \
|
||||
../tiles/tile.h ../database/database.h ../drc/drc.h ../textio/textio.h \
|
||||
../windows/windows.h ../utils/main.h ../dbwind/dbwind.h ../debug/debug.h \
|
||||
../utils/undo.h ../utils/signals.h ../utils/malloc.h ../utils/list.h \
|
||||
../utils/geofast.h ../utils/touchingtypes.h ../select/select.h \
|
||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
||||
../mzrouter/mzrouter.h ../irouter/irDebug.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 ../drc/drc.h \
|
||||
../textio/textio.h ../windows/windows.h ../utils/main.h \
|
||||
../dbwind/dbwind.h ../debug/debug.h ../utils/undo.h ../utils/signals.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 \
|
||||
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/signals.h ../textio/textio.h ../irouter/irouter.h \
|
||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
||||
../utils/utils.h ../commands/commands.h ../utils/styles.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 \
|
||||
../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 \
|
||||
../irouter/irInternal.h ../mzrouter/mzrouter.h ../irouter/irDebug.h
|
||||
irUtils.o: irUtils.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||
../utils/hash.h ../database/database.h ../utils/list.h \
|
||||
../mzrouter/mzrouter.h ../irouter/irouter.h ../irouter/irInternal.h \
|
||||
../irouter/irDebug.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/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 \
|
||||
../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
|
||||
lefTech.o: lefTech.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/tech.h ../utils/utils.h \
|
||||
../utils/malloc.h ../utils/stack.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
|
||||
../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/stack.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 \
|
||||
../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
|
||||
lefRead.o: lefRead.c ../tcltk/tclmagic.h ../utils/magic.h \
|
||||
../utils/geometry.h ../tiles/tile.h ../utils/hash.h ../utils/undo.h \
|
||||
../database/database.h ../windows/windows.h ../graphics/graphics.h \
|
||||
../dbwind/dbwind.h ../utils/malloc.h ../textio/textio.h ../cif/cif.h \
|
||||
../cif/CIFint.h ../lef/lefInt.h
|
||||
../utils/utils.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/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 \
|
||||
../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 \
|
||||
../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 *
|
||||
DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||
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 initial = TRUE;
|
||||
Rect locarea;
|
||||
int extend, lextend, hextend;
|
||||
float x, y, z, w;
|
||||
int routeWidth, paintWidth, saveWidth;
|
||||
TileType routeLayer, paintLayer;
|
||||
HashEntry *he;
|
||||
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)
|
||||
{
|
||||
|
|
@ -105,7 +156,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
|
||||
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;
|
||||
}
|
||||
paintLayer = routeLayer;
|
||||
|
|
@ -116,7 +167,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
token = LefNextToken(f, TRUE);
|
||||
if (sscanf(token, "%f", &w) != 1)
|
||||
{
|
||||
LefError("Bad width in special net\n");
|
||||
LefError(DEF_ERROR, "Bad width in special net\n");
|
||||
continue;
|
||||
}
|
||||
if (w != 0)
|
||||
|
|
@ -130,6 +181,141 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
paintWidth = (lefl) ? lefl->info.route.width :
|
||||
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 */
|
||||
{
|
||||
/* A '+' or ';' record ends the route */
|
||||
|
|
@ -138,7 +324,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
|
||||
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;
|
||||
}
|
||||
he = HashLookOnly(&LefInfo, token);
|
||||
|
|
@ -197,7 +383,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
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_ybot = refp.p_y - 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;
|
||||
}
|
||||
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 */
|
||||
/* residue of the via was NOT the previous route layer. */
|
||||
|
|
@ -244,7 +431,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
}
|
||||
else
|
||||
LefError("Via name \"%s\" unknown in route.\n", token);
|
||||
LefError(DEF_ERROR, "Via name \"%s\" unknown in route.\n", token);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -254,14 +441,15 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
/* Record current reference point */
|
||||
locarea.r_xbot = refp.p_x;
|
||||
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 */
|
||||
if (*token == '*')
|
||||
{
|
||||
if (valid == FALSE)
|
||||
{
|
||||
LefError("No reference point for \"*\" wildcard\n");
|
||||
LefError(DEF_ERROR, "No reference point for \"*\" wildcard\n");
|
||||
goto endCoord;
|
||||
}
|
||||
}
|
||||
|
|
@ -271,7 +459,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
else
|
||||
{
|
||||
LefError("Cannot parse X coordinate.\n");
|
||||
LefError(DEF_ERROR, "Cannot parse X coordinate.\n");
|
||||
goto endCoord;
|
||||
}
|
||||
token = LefNextToken(f, TRUE); /* read Y */
|
||||
|
|
@ -279,7 +467,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
{
|
||||
if (valid == FALSE)
|
||||
{
|
||||
LefError("No reference point for \"*\" wildcard\n");
|
||||
LefError(DEF_ERROR, "No reference point for \"*\" wildcard\n");
|
||||
freeMagic(newRoute);
|
||||
newRoute = NULL;
|
||||
goto endCoord;
|
||||
|
|
@ -291,7 +479,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
else
|
||||
{
|
||||
LefError("Cannot parse Y coordinate.\n");
|
||||
LefError(DEF_ERROR, "Cannot parse Y coordinate.\n");
|
||||
goto endCoord;
|
||||
}
|
||||
|
||||
|
|
@ -300,19 +488,19 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
/* is apparently how everyone interprets it, and is true for */
|
||||
/* 5.6 spec. */
|
||||
|
||||
z = (special) ? 0 : paintWidth;
|
||||
extend = (special) ? 0 : paintWidth;
|
||||
token = LefNextToken(f, TRUE);
|
||||
if (*token != ')')
|
||||
{
|
||||
/* non-default route extension */
|
||||
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 */
|
||||
/* to multiply up by 2 now. */
|
||||
|
||||
else
|
||||
z *= 2;
|
||||
extend = (int)roundf((2 * z) / oscale);
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
/* 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_ybot = refp.p_y;
|
||||
lextend = extend;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -341,6 +530,19 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
locarea.r_xtop = refp.p_x;
|
||||
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);
|
||||
|
||||
if (newRoute->r_r.r_xbot == newRoute->r_r.r_xtop)
|
||||
|
|
@ -350,8 +552,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
else
|
||||
{
|
||||
newRoute->r_r.r_xbot -= z;
|
||||
newRoute->r_r.r_xtop += z;
|
||||
newRoute->r_r.r_xbot -= lextend;
|
||||
newRoute->r_r.r_xtop += hextend;
|
||||
}
|
||||
|
||||
if (newRoute->r_r.r_ybot == newRoute->r_r.r_ytop)
|
||||
|
|
@ -361,8 +563,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
|||
}
|
||||
else
|
||||
{
|
||||
newRoute->r_r.r_ybot -= z;
|
||||
newRoute->r_r.r_ytop += z;
|
||||
newRoute->r_r.r_ybot -= lextend;
|
||||
newRoute->r_r.r_ytop += hextend;
|
||||
}
|
||||
|
||||
/* 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);
|
||||
if (keyword < 0)
|
||||
{
|
||||
LefError("Unknown keyword \"%s\" in NET "
|
||||
LefError(DEF_INFO, "Unknown keyword \"%s\" in NET "
|
||||
"definition; ignoring.\n", token);
|
||||
LefEndStatement(f);
|
||||
continue;
|
||||
|
|
@ -508,14 +710,16 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
|||
subkey = Lookup(token, net_property_keys);
|
||||
if (subkey < 0)
|
||||
{
|
||||
LefError("Unknown net property \"%s\" in "
|
||||
LefError(DEF_INFO, "Unknown net property \"%s\" in "
|
||||
"NET definition; ignoring.\n", token);
|
||||
continue;
|
||||
}
|
||||
switch (subkey)
|
||||
{
|
||||
case DEF_NETPROP_USE:
|
||||
/* Presently, we ignore this */
|
||||
/* Presently, we ignore this, except to */
|
||||
/* absorb the following value. */
|
||||
token = LefNextToken(f, TRUE);
|
||||
break;
|
||||
case DEF_NETPROP_ROUTED:
|
||||
case DEF_NETPROP_FIXED:
|
||||
|
|
@ -530,7 +734,7 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
|||
case DEF_NET_END:
|
||||
if (!LefParseEndStatement(f, sname))
|
||||
{
|
||||
LefError("Net END statement missing.\n");
|
||||
LefError(DEF_ERROR, "Net END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -542,7 +746,7 @@ DefReadNets(f, rootDef, sname, oscale, special, total)
|
|||
TxPrintf(" Processed %d%s nets total.\n", processed,
|
||||
(special) ? " special" : "");
|
||||
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);
|
||||
|
||||
freeMagic((char *)defLayerMap);
|
||||
|
|
@ -600,7 +804,7 @@ DefReadLocation(use, f, oscale, tptr)
|
|||
keyword = Lookup(token, orientations);
|
||||
if (keyword < 0)
|
||||
{
|
||||
LefError("Unknown macro orientation \"%s\".\n", token);
|
||||
LefError(DEF_ERROR, "Unknown macro orientation \"%s\".\n", token);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -668,7 +872,7 @@ DefReadLocation(use, f, oscale, tptr)
|
|||
return 0;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -692,7 +896,8 @@ enum def_pins_keys {DEF_PINS_START = 0, DEF_PINS_END};
|
|||
enum def_pins_prop_keys {
|
||||
DEF_PINS_PROP_NET = 0, DEF_PINS_PROP_DIR,
|
||||
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
|
||||
DefReadPins(f, rootDef, sname, oscale, total)
|
||||
|
|
@ -713,6 +918,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
Transform t;
|
||||
lefLayer *lefl;
|
||||
bool pending = FALSE;
|
||||
bool hasports = FALSE;
|
||||
|
||||
static char *pin_keys[] = {
|
||||
"-",
|
||||
|
|
@ -727,6 +933,8 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
"USE",
|
||||
"PLACED",
|
||||
"FIXED",
|
||||
"PORT",
|
||||
"SPECIAL",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -755,7 +963,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
|
||||
if (keyword < 0)
|
||||
{
|
||||
LefError("Unknown keyword \"%s\" in PINS "
|
||||
LefError(DEF_INFO, "Unknown keyword \"%s\" in PINS "
|
||||
"definition; ignoring.\n", token);
|
||||
LefEndStatement(f);
|
||||
continue;
|
||||
|
|
@ -763,13 +971,14 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
switch (keyword)
|
||||
{
|
||||
case DEF_PINS_START: /* "-" keyword */
|
||||
hasports = FALSE;
|
||||
|
||||
// Flag an error if a pin was waiting on a layer
|
||||
// specification that was never given.
|
||||
|
||||
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 */
|
||||
|
|
@ -781,7 +990,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
token = LefNextToken(f, TRUE);
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
|
@ -799,12 +1008,24 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
subkey = Lookup(token, pin_property_keys);
|
||||
if (subkey < 0)
|
||||
{
|
||||
LefError("Unknown pin property \"%s\" in "
|
||||
LefError(DEF_INFO, "Unknown pin property \"%s\" in "
|
||||
"PINS definition; ignoring.\n", token);
|
||||
continue;
|
||||
}
|
||||
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_NET:
|
||||
/* Get the net name, but ignore it */
|
||||
|
|
@ -814,7 +1035,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
token = LefNextToken(f, TRUE);
|
||||
subkey = Lookup(token, pin_classes);
|
||||
if (subkey < 0)
|
||||
LefError("Unknown pin class\n");
|
||||
LefError(DEF_ERROR, "Unknown pin class\n");
|
||||
else
|
||||
pinDir = lef_class_to_bitmask[subkey];
|
||||
break;
|
||||
|
|
@ -869,7 +1090,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
case DEF_PINS_END:
|
||||
if (!LefParseEndStatement(f, sname))
|
||||
{
|
||||
LefError("Pins END statement missing.\n");
|
||||
LefError(DEF_ERROR, "Pins END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -880,7 +1101,7 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
if (processed == total)
|
||||
TxPrintf(" Processed %d pins total.\n", processed);
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -904,7 +1125,10 @@ DefReadPins(f, rootDef, sname, oscale, total)
|
|||
|
||||
enum def_vias_keys {DEF_VIAS_START = 0, DEF_VIAS_END};
|
||||
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
|
||||
DefReadVias(f, sname, oscale, total)
|
||||
|
|
@ -922,6 +1146,13 @@ DefReadVias(f, sname, oscale, total)
|
|||
lefLayer *lefl;
|
||||
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[] = {
|
||||
"-",
|
||||
"END",
|
||||
|
|
@ -930,6 +1161,12 @@ DefReadVias(f, sname, oscale, total)
|
|||
|
||||
static char *via_property_keys[] = {
|
||||
"RECT",
|
||||
"VIARULE",
|
||||
"CUTSIZE",
|
||||
"LAYERS",
|
||||
"CUTSPACING",
|
||||
"ENCLOSURE",
|
||||
"ROWCOL",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -939,7 +1176,7 @@ DefReadVias(f, sname, oscale, total)
|
|||
|
||||
if (keyword < 0)
|
||||
{
|
||||
LefError("Unknown keyword \"%s\" in VIAS "
|
||||
LefError(DEF_INFO, "Unknown keyword \"%s\" in VIAS "
|
||||
"definition; ignoring.\n", token);
|
||||
LefEndStatement(f);
|
||||
continue;
|
||||
|
|
@ -957,7 +1194,7 @@ DefReadVias(f, sname, oscale, total)
|
|||
token = LefNextToken(f, TRUE);
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
|
@ -977,7 +1214,7 @@ DefReadVias(f, sname, oscale, total)
|
|||
}
|
||||
else
|
||||
{
|
||||
LefError("Warning: Composite via \"%s\" redefined.\n", vianame);
|
||||
LefError(DEF_WARNING, "Composite via \"%s\" redefined.\n", vianame);
|
||||
lefl = LefRedefined(lefl, vianame);
|
||||
}
|
||||
|
||||
|
|
@ -986,14 +1223,24 @@ DefReadVias(f, sname, oscale, total)
|
|||
|
||||
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;
|
||||
|
||||
token = LefNextToken(f, TRUE);
|
||||
subkey = Lookup(token, via_property_keys);
|
||||
if (subkey < 0)
|
||||
{
|
||||
LefError("Unknown via property \"%s\" in "
|
||||
LefError(DEF_INFO, "Unknown via property \"%s\" in "
|
||||
"VIAS definition; ignoring.\n", token);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1003,6 +1250,90 @@ DefReadVias(f, sname, oscale, total)
|
|||
curlayer = LefReadLayer(f, FALSE);
|
||||
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
||||
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;
|
||||
|
|
@ -1010,7 +1341,7 @@ DefReadVias(f, sname, oscale, total)
|
|||
case DEF_VIAS_END:
|
||||
if (!LefParseEndStatement(f, sname))
|
||||
{
|
||||
LefError("Vias END statement missing.\n");
|
||||
LefError(DEF_ERROR, "Vias END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1021,7 +1352,7 @@ DefReadVias(f, sname, oscale, total)
|
|||
if (processed == total)
|
||||
TxPrintf(" Processed %d vias total.\n", processed);
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -1061,7 +1392,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
CellDef *defMacro;
|
||||
CellUse *defUse;
|
||||
Transform t;
|
||||
char *token;
|
||||
char *token, *dptr;
|
||||
char usename[512];
|
||||
int keyword, subkey, values;
|
||||
int processed = 0;
|
||||
|
|
@ -1093,7 +1424,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
|
||||
if (keyword < 0)
|
||||
{
|
||||
LefError("Unknown keyword \"%s\" in COMPONENT "
|
||||
LefError(DEF_INFO, "Unknown keyword \"%s\" in COMPONENT "
|
||||
"definition; ignoring.\n", token);
|
||||
LefEndStatement(f);
|
||||
continue;
|
||||
|
|
@ -1111,10 +1442,27 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
token = LefNextToken(f, TRUE);
|
||||
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);
|
||||
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);
|
||||
|
||||
/* Find the corresponding macro definition */
|
||||
|
|
@ -1129,8 +1477,8 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
defMacro->cd_flags &= ~CDNOTFOUND;
|
||||
if (!DBCellRead(defMacro, (char *)NULL, TRUE, NULL))
|
||||
{
|
||||
LefError("Cell %s is not defined. Maybe you have not "
|
||||
"read the corresponding LEF file?\n",
|
||||
LefError(DEF_ERROR, "Cell %s is not defined. Maybe you "
|
||||
"have not read the corresponding LEF file?\n",
|
||||
token);
|
||||
LefEndStatement(f);
|
||||
DBCellDeleteDef(defMacro);
|
||||
|
|
@ -1163,7 +1511,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
subkey = Lookup(token, property_keys);
|
||||
if (subkey < 0)
|
||||
{
|
||||
LefError("Unknown component property \"%s\" in "
|
||||
LefError(DEF_INFO, "Unknown component property \"%s\" in "
|
||||
"COMPONENT definition; ignoring.\n", token);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1198,7 +1546,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
case DEF_COMP_END:
|
||||
if (!LefParseEndStatement(f, sname))
|
||||
{
|
||||
LefError("Component END statement missing.\n");
|
||||
LefError(DEF_ERROR, "Component END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
|
||||
|
|
@ -1216,7 +1564,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
|
|||
if (processed == total)
|
||||
TxPrintf(" Processed %d subcell instances total.\n", processed);
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -1330,7 +1678,7 @@ DefRead(inName)
|
|||
keyword = Lookup(token, sections);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1346,7 +1694,7 @@ DefRead(inName)
|
|||
token = LefNextToken(f, TRUE);
|
||||
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",
|
||||
token, DBTechName);
|
||||
}
|
||||
|
|
@ -1366,8 +1714,8 @@ DefRead(inName)
|
|||
token = LefNextToken(f, TRUE);
|
||||
if (sscanf(token, "%d", &dscale) != 1)
|
||||
{
|
||||
LefError("Invalid syntax for UNITS statement.\n");
|
||||
LefError("Assuming default value of 100\n");
|
||||
LefError(DEF_ERROR, "Invalid syntax for UNITS statement.\n");
|
||||
LefError(DEF_INFO, "Assuming default value of 100\n");
|
||||
dscale = 100;
|
||||
}
|
||||
/* We don't care if the scale is 100, 200, 1000, or 2000. */
|
||||
|
|
@ -1453,7 +1801,7 @@ DefRead(inName)
|
|||
case DEF_END:
|
||||
if (!LefParseEndStatement(token, "DESIGN"))
|
||||
{
|
||||
LefError("END statement out of context.\n");
|
||||
LefError(DEF_ERROR, "END statement out of context.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1461,7 +1809,7 @@ DefRead(inName)
|
|||
if (keyword == DEF_END) break;
|
||||
}
|
||||
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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -84,10 +84,11 @@ char *defGetType(); /* Forward declaration */
|
|||
*/
|
||||
|
||||
void
|
||||
defWriteHeader(def, f, oscale)
|
||||
defWriteHeader(def, f, oscale, units)
|
||||
CellDef *def; /* Def for which to generate DEF output */
|
||||
FILE *f; /* Output to this file */
|
||||
float oscale;
|
||||
int units; /* Units for UNITS; could be derived from oscale */
|
||||
{
|
||||
TileType type;
|
||||
|
||||
|
|
@ -113,10 +114,10 @@ defWriteHeader(def, f, oscale)
|
|||
/* technology). */
|
||||
fprintf(f, " TECHNOLOGY %s ;\n", DBTechName);
|
||||
|
||||
/* As I understand it, this refers to the scalefactor of the GDS */
|
||||
/* file output. Magic does all GDS in nanometers, so the LEF */
|
||||
/* scalefactor (conversion to microns) is always 1000. */
|
||||
fprintf(f, " UNITS DISTANCE MICRONS 1000 ;\n");
|
||||
/* The DEF scalefactor (conversion to microns) is always 1000 */
|
||||
/* (nanometers) unless overridden on the command line. */
|
||||
|
||||
fprintf(f, " UNITS DISTANCE MICRONS %d ;\n", units);
|
||||
|
||||
/* Die area, taken from the cell def bounding box. */
|
||||
fprintf(f, " DIEAREA ( %.10g %.10g ) ( %.10g %.10g ) ;\n",
|
||||
|
|
@ -1820,6 +1821,7 @@ defComponentFunc(cellUse, defdata)
|
|||
{
|
||||
FILE *f = defdata->f;
|
||||
float oscale = defdata->scale;
|
||||
char *nameroot;
|
||||
|
||||
/* Ignore any cellUse that does not have an identifier string. */
|
||||
if (cellUse->cu_id == NULL) return 0;
|
||||
|
|
@ -1830,8 +1832,17 @@ defComponentFunc(cellUse, defdata)
|
|||
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",
|
||||
cellUse->cu_id, cellUse->cu_def->cd_name,
|
||||
cellUse->cu_id, nameroot,
|
||||
(float)cellUse->cu_bbox.r_xbot * oscale,
|
||||
(float)cellUse->cu_bbox.r_ybot * oscale,
|
||||
defTransPos(&cellUse->cu_transform));
|
||||
|
|
@ -1864,10 +1875,10 @@ defMakeInverseLayerMap()
|
|||
TileType i;
|
||||
char *lefname;
|
||||
|
||||
lefMagicToLefLayer = (LefMapping *)mallocMagic(DBNumUserLayers
|
||||
lefMagicToLefLayer = (LefMapping *)mallocMagic(DBNumTypes
|
||||
* sizeof(LefMapping));
|
||||
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);
|
||||
lefMagicToLefLayer[i].lefName = lefname;
|
||||
|
|
@ -1916,23 +1927,28 @@ defMakeInverseLayerMap()
|
|||
*/
|
||||
|
||||
void
|
||||
DefWriteCell(def, outName, allSpecial)
|
||||
DefWriteCell(def, outName, allSpecial, units)
|
||||
CellDef *def; /* Cell being written */
|
||||
char *outName; /* Name of output file, or NULL. */
|
||||
bool allSpecial; /* Treat all nets as SPECIALNETS? */
|
||||
int units; /* Force units to this value (default 1000) */
|
||||
{
|
||||
char *filename;
|
||||
FILE *f;
|
||||
NetCount nets;
|
||||
int total;
|
||||
float scale = CIFGetOutputScale(1); /* Note that "1" here corresponds
|
||||
* to "1000" in the header UNITS line
|
||||
*/
|
||||
float scale;
|
||||
|
||||
LefMapping *lefMagicToLefLayer;
|
||||
int i;
|
||||
lefLayer *lefl;
|
||||
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);
|
||||
|
||||
TxPrintf("Generating DEF output %s for cell %s:\n", filename, def->cd_name);
|
||||
|
|
@ -1949,7 +1965,7 @@ DefWriteCell(def, outName, allSpecial)
|
|||
return;
|
||||
}
|
||||
|
||||
defWriteHeader(def, f, scale);
|
||||
defWriteHeader(def, f, scale, units);
|
||||
|
||||
lefMagicToLefLayer = defMakeInverseLayerMap();
|
||||
|
||||
|
|
|
|||
23
lef/lefCmd.c
23
lef/lefCmd.c
|
|
@ -61,7 +61,7 @@ CmdLef(w, cmd)
|
|||
MagWindow *w;
|
||||
TxCommand *cmd;
|
||||
{
|
||||
int option, i, cargs;
|
||||
int option, i, cargs, units = 1000; /* Default nanometers */
|
||||
char **msg, *namep;
|
||||
CellUse *selectedUse;
|
||||
CellDef *selectedDef;
|
||||
|
|
@ -219,6 +219,25 @@ CmdLef(w, cmd)
|
|||
else
|
||||
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;
|
||||
cargs--;
|
||||
}
|
||||
|
|
@ -236,7 +255,7 @@ CmdLef(w, cmd)
|
|||
else
|
||||
namep = cmd->tx_argv[2];
|
||||
if (!is_lef)
|
||||
DefWriteCell(selectedUse->cu_def, namep, allSpecial);
|
||||
DefWriteCell(selectedUse->cu_def, namep, allSpecial, units);
|
||||
else
|
||||
LefWriteCell(selectedUse->cu_def, namep, selectedUse->cu_def
|
||||
== EditRootDef, lefTech, lefHide);
|
||||
|
|
|
|||
16
lef/lefInt.h
16
lef/lefInt.h
|
|
@ -126,12 +126,24 @@ LinkedRect *LefReadGeometry();
|
|||
void LefEstimate();
|
||||
lefLayer *LefRedefined();
|
||||
void LefAddViaGeometry();
|
||||
void LefGenViaGeometry();
|
||||
Rect *LefReadRect();
|
||||
TileType LefReadLayer();
|
||||
|
||||
LefMapping *defMakeInverseLayerMap();
|
||||
|
||||
void LefError(char *, ...); /* Variable argument procedure requires */
|
||||
/* parameter list. */
|
||||
void LefError(int, char *, ...); /* Variable argument procedure requires */
|
||||
/* 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 */
|
||||
|
|
|
|||
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 "utils/hash.h"
|
||||
#include "utils/undo.h"
|
||||
#include "utils/utils.h" /* For StrDup() */
|
||||
#include "database/database.h"
|
||||
#include "windows/windows.h"
|
||||
#include "graphics/graphics.h"
|
||||
|
|
@ -279,11 +280,15 @@ LefNextToken(f, ignore_eol)
|
|||
/*
|
||||
*------------------------------------------------------------
|
||||
*
|
||||
* LefError --
|
||||
* LefDefError --
|
||||
*
|
||||
* Print an error message (via TxError) giving the line
|
||||
* 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:
|
||||
* None.
|
||||
*
|
||||
|
|
@ -294,34 +299,126 @@ LefNextToken(f, ignore_eol)
|
|||
*/
|
||||
|
||||
void
|
||||
LefError(char *fmt, ...)
|
||||
LefError(int type, char *fmt, ...)
|
||||
{
|
||||
static int errors = 0;
|
||||
static int errors = 0, warnings = 0, messages = 0;
|
||||
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)
|
||||
{
|
||||
TxPrintf("LEF Read: encountered %d error%s total.\n", errors,
|
||||
(errors == 1) ? "" : "s");
|
||||
errors = 0;
|
||||
}
|
||||
TxPrintf("%s Read: encountered %d error%s total.\n",
|
||||
lefdeftype, errors, (errors == 1) ? "" : "s");
|
||||
|
||||
if (warnings)
|
||||
TxPrintf("%s Read: encountered %d warning%s total.\n",
|
||||
lefdeftype, warnings, (warnings == 1) ? "" : "s");
|
||||
|
||||
errors = 0;
|
||||
warnings = 0;
|
||||
messages = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (errors < LEF_MAX_ERRORS)
|
||||
{
|
||||
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");
|
||||
switch (level) {
|
||||
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -407,7 +504,7 @@ LefParseEndStatement(f, match)
|
|||
* None.
|
||||
*
|
||||
* 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
|
||||
* 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;
|
||||
}
|
||||
|
||||
|
|
@ -623,7 +720,7 @@ LefReadLayers(f, obstruct, lreturn, rreturn)
|
|||
token = LefNextToken(f, TRUE);
|
||||
if (*token == ';')
|
||||
{
|
||||
LefError("Bad Layer statement\n");
|
||||
LefError(LEF_ERROR, "Bad Layer statement\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
|
|
@ -670,8 +767,8 @@ LefReadLayers(f, obstruct, lreturn, rreturn)
|
|||
}
|
||||
if ((curlayer < 0) && ((!lefl) || (lefl->lefClass != CLASS_IGNORE)))
|
||||
{
|
||||
LefError("Don't know how to parse layer \"%s\"\n", token);
|
||||
LefError("Try adding this name to the LEF techfile section\n");
|
||||
LefError(LEF_ERROR, "Don't know how to parse layer \"%s\"\n", token);
|
||||
LefError(LEF_ERROR, "Try adding this name to the LEF techfile section\n");
|
||||
}
|
||||
}
|
||||
return curlayer;
|
||||
|
|
@ -736,6 +833,7 @@ LefReadRect(f, curlayer, oscale)
|
|||
char *token;
|
||||
float llx, lly, urx, ury;
|
||||
static Rect paintrect;
|
||||
Rect lefrect;
|
||||
bool needMatch = FALSE;
|
||||
|
||||
token = LefNextToken(f, TRUE);
|
||||
|
|
@ -768,16 +866,23 @@ LefReadRect(f, curlayer, oscale)
|
|||
if (*token != ')') goto parse_error;
|
||||
}
|
||||
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
|
||||
{
|
||||
/* Scale coordinates (microns to magic internal units) */
|
||||
/* Need to scale grid if necessary! */
|
||||
|
||||
paintrect.r_xbot = (int)roundf(llx / oscale);
|
||||
paintrect.r_ybot = (int)roundf(lly / oscale);
|
||||
paintrect.r_xtop = (int)roundf(urx / oscale);
|
||||
paintrect.r_ytop = (int)roundf(ury / oscale);
|
||||
lefrect.r_xbot = (int)roundf(llx / oscale);
|
||||
lefrect.r_ybot = (int)roundf(lly / oscale);
|
||||
lefrect.r_xtop = (int)roundf(urx / oscale);
|
||||
lefrect.r_ytop = (int)roundf(ury / oscale);
|
||||
|
||||
/* Insist on non-inverted rectangles */
|
||||
GeoCanonicalRect(&lefrect, &paintrect);
|
||||
|
||||
/* Diagnostic */
|
||||
/*
|
||||
|
|
@ -791,7 +896,7 @@ LefReadRect(f, curlayer, oscale)
|
|||
return (&paintrect);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -836,7 +941,7 @@ LefReadPolygon(f, curlayer, oscale, ppoints)
|
|||
if (token == NULL || *token == ';') break;
|
||||
if (sscanf(token, "%f", &px) != 1)
|
||||
{
|
||||
LefError("Bad X value in polygon.\n");
|
||||
LefError(LEF_ERROR, "Bad X value in polygon.\n");
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
}
|
||||
|
|
@ -844,12 +949,12 @@ LefReadPolygon(f, curlayer, oscale, ppoints)
|
|||
token = LefNextToken(f, TRUE);
|
||||
if (token == NULL || *token == ';')
|
||||
{
|
||||
LefError("Missing Y value in polygon point!\n");
|
||||
LefError(LEF_ERROR, "Missing Y value in polygon point!\n");
|
||||
break;
|
||||
}
|
||||
if (sscanf(token, "%f", &py) != 1)
|
||||
{
|
||||
LefError("Bad Y value in polygon.\n");
|
||||
LefError(LEF_ERROR, "Bad Y value in polygon.\n");
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
}
|
||||
|
|
@ -966,7 +1071,7 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
|||
LinkedRect *newRect, *rectList;
|
||||
Point *pointList;
|
||||
int points;
|
||||
Rect *paintrect, *contact;
|
||||
Rect *paintrect, *contact = NULL;
|
||||
|
||||
static char *geometry_keys[] = {
|
||||
"LAYER",
|
||||
|
|
@ -987,7 +1092,8 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
|||
keyword = Lookup(token, geometry_keys);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1013,7 +1119,7 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
|||
{
|
||||
// Cut layers defined as contacts use the contact
|
||||
// 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_ybot = (paintrect->r_ybot + paintrect->r_ytop);
|
||||
|
|
@ -1082,7 +1188,8 @@ LefReadGeometry(lefMacro, f, oscale, do_list)
|
|||
case LEF_GEOMETRY_END:
|
||||
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;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1133,12 +1240,12 @@ LefReadPort(lefMacro, f, pinName, pinNum, pinDir, pinUse, oscale)
|
|||
/* Set this label to be a port */
|
||||
|
||||
if (lefMacro->cd_labels == NULL)
|
||||
LefError("Internal error: No labels in cell!\n");
|
||||
LefError(LEF_ERROR, "Internal error: No labels in cell!\n");
|
||||
else
|
||||
{
|
||||
newlab = lefMacro->cd_lastLabel;
|
||||
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 */
|
||||
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};
|
||||
|
||||
void
|
||||
LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
||||
LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
|
||||
CellDef *lefMacro;
|
||||
FILE *f;
|
||||
char *pinname;
|
||||
int pinNum;
|
||||
float oscale;
|
||||
bool is_imported;
|
||||
{
|
||||
char *token;
|
||||
int keyword, subkey;
|
||||
|
|
@ -1247,7 +1355,8 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
|||
keyword = Lookup(token, pin_keys);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1257,7 +1366,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
|||
token = LefNextToken(f, TRUE);
|
||||
subkey = Lookup(token, pin_classes);
|
||||
if (subkey < 0)
|
||||
LefError("Improper DIRECTION statement\n");
|
||||
LefError(LEF_ERROR, "Improper DIRECTION statement\n");
|
||||
else
|
||||
pinDir = lef_class_to_bitmask[subkey];
|
||||
LefEndStatement(f);
|
||||
|
|
@ -1266,13 +1375,32 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
|||
token = LefNextToken(f, TRUE);
|
||||
subkey = Lookup(token, pin_uses);
|
||||
if (subkey < 0)
|
||||
LefError("Improper USE statement\n");
|
||||
LefError(LEF_ERROR, "Improper USE statement\n");
|
||||
else
|
||||
pinUse = lef_use_to_bitmask[subkey];
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
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;
|
||||
case LEF_CAPACITANCE:
|
||||
case LEF_ANTENNADIFF:
|
||||
|
|
@ -1290,7 +1418,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale)
|
|||
case LEF_PIN_END:
|
||||
if (LefParseEndStatement(f, pinname) == 0)
|
||||
{
|
||||
LefError("Pin END statement missing.\n");
|
||||
LefError(LEF_ERROR, "Pin END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1384,7 +1512,7 @@ LefReadMacro(f, mname, oscale, importForeign)
|
|||
sprintf(newname, "%250s_%d", mname, suffix);
|
||||
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);
|
||||
lefMacro = DBCellLookDef(newname);
|
||||
if (lefMacro == NULL)
|
||||
|
|
@ -1424,7 +1552,8 @@ LefReadMacro(f, mname, oscale, importForeign)
|
|||
keyword = Lookup(token, macro_keys);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1450,7 +1579,7 @@ LefReadMacro(f, mname, oscale, importForeign)
|
|||
LefEndStatement(f);
|
||||
break;
|
||||
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);
|
||||
break;
|
||||
case LEF_ORIGIN:
|
||||
|
|
@ -1469,7 +1598,7 @@ size_error:
|
|||
LefEndStatement(f);
|
||||
break;
|
||||
origin_error:
|
||||
LefError("Bad macro ORIGIN; requires 2 values.\n");
|
||||
LefError(LEF_ERROR, "Bad macro ORIGIN; requires 2 values.\n");
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
case LEF_SYMMETRY:
|
||||
|
|
@ -1501,10 +1630,7 @@ origin_error:
|
|||
TxPrintf(" Macro defines pin %s\n", token);
|
||||
*/
|
||||
sprintf(tsave, "%.127s", token);
|
||||
if (is_imported)
|
||||
LefSkipSection(f, tsave);
|
||||
else
|
||||
LefReadPin(lefMacro, f, tsave, pinNum++, oscale);
|
||||
LefReadPin(lefMacro, f, tsave, pinNum++, oscale, is_imported);
|
||||
break;
|
||||
case LEF_OBS:
|
||||
/* Diagnostic */
|
||||
|
|
@ -1532,7 +1658,7 @@ origin_error:
|
|||
case LEF_MACRO_END:
|
||||
if (LefParseEndStatement(f, mname) == 0)
|
||||
{
|
||||
LefError("Macro END statement missing.\n");
|
||||
LefError(LEF_ERROR, "Macro END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1541,6 +1667,7 @@ origin_error:
|
|||
}
|
||||
|
||||
/* Finish up creating the cell */
|
||||
DBReComputeBbox(lefMacro);
|
||||
|
||||
if (is_imported)
|
||||
{
|
||||
|
|
@ -1560,36 +1687,45 @@ origin_error:
|
|||
{
|
||||
DBAdjustLabelsNew(lefMacro, &TiPlaneRect, 1);
|
||||
|
||||
if (!has_size)
|
||||
if (has_size)
|
||||
{
|
||||
LefError(" Macro does not define size: computing from geometry\n");
|
||||
DBReComputeBbox(lefMacro);
|
||||
lefMacro->cd_flags |= CDFIXEDBBOX;
|
||||
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
|
||||
{
|
||||
int reducer = DBCellFindScale(lefMacro);
|
||||
LefError(LEF_WARNING, " Macro does not define size: "
|
||||
"computing from geometry\n");
|
||||
|
||||
lefMacro->cd_bbox = lefBBox;
|
||||
lefMacro->cd_extended = lefBBox;
|
||||
}
|
||||
|
||||
/* 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",
|
||||
/* 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_ybot,
|
||||
lefMacro->cd_bbox.r_xtop,
|
||||
lefMacro->cd_bbox.r_ytop);
|
||||
DBPropPut(lefMacro, "FIXED_BBOX", propval);
|
||||
|
||||
DRCCheckThis(lefMacro, TT_CHECKPAINT, &lefMacro->cd_bbox);
|
||||
DBPropPut(lefMacro, "FIXED_BBOX", propval);
|
||||
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". */
|
||||
/* 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,
|
||||
&DBAllButSpaceBits);
|
||||
}
|
||||
|
|
@ -1597,45 +1733,23 @@ origin_error:
|
|||
/*
|
||||
*------------------------------------------------------------
|
||||
*
|
||||
* LefAddViaGeometry --
|
||||
* LefGrowVia ---
|
||||
*
|
||||
* 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.
|
||||
* 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".
|
||||
*
|
||||
*------------------------------------------------------------
|
||||
*/
|
||||
|
||||
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 */
|
||||
{
|
||||
void LefGrowVia(curlayer, currect, lefl)
|
||||
TileType curlayer;
|
||||
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;
|
||||
|
||||
/* 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". */
|
||||
|
||||
lefLayer *lefl;
|
||||
{
|
||||
if (DBIsContact(curlayer) && cifCurReadStyle != NULL)
|
||||
{
|
||||
int growSize;
|
||||
|
|
@ -1692,12 +1806,12 @@ LefAddViaGeometry(f, lefl, curlayer, oscale)
|
|||
if ((currect->r_xtop - currect->r_xbot != 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",
|
||||
DBTypeLongNameTbl[lefl->type],
|
||||
edgeSize, edgeSize);
|
||||
LefError(" via cut size (%d x %d). Magic layer cut size will "
|
||||
"be used!\n",
|
||||
LefError(LEF_WARNING, "Via cut size (%d x %d). Magic layer "
|
||||
"cut size will be used!\n",
|
||||
currect->r_xtop - currect->r_xbot,
|
||||
currect->r_ytop - currect->r_ybot);
|
||||
}
|
||||
|
|
@ -1709,6 +1823,142 @@ LefAddViaGeometry(f, lefl, curlayer, oscale)
|
|||
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))
|
||||
{
|
||||
|
|
@ -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_MINDENSITY, LEF_LAYER_ANTENNADIFF,
|
||||
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_VIARULE_OVERHANG,
|
||||
LEF_VIARULE_METALOVERHANG, LEF_VIARULE_VIA,
|
||||
|
|
@ -1814,6 +2064,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
"DEFAULT",
|
||||
"LAYER",
|
||||
"RECT",
|
||||
"FOREIGN",
|
||||
"ENCLOSURE",
|
||||
"PREFERENCLOSURE",
|
||||
"OVERHANG",
|
||||
|
|
@ -1838,7 +2089,8 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
keyword = Lookup(token, layer_keys);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1850,7 +2102,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
{
|
||||
typekey = Lookup(token, layer_type_keys);
|
||||
if (typekey < 0)
|
||||
LefError("Unknown layer type \"%s\" in LEF file; "
|
||||
LefError(LEF_WARNING, "Unknown layer type \"%s\" in LEF file; "
|
||||
"ignoring.\n", token);
|
||||
}
|
||||
if (lefl->lefClass != typekey)
|
||||
|
|
@ -1859,7 +2111,8 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
/* and so having a different TYPE is an error. */
|
||||
/* Otherwise just ignore the type. */
|
||||
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],
|
||||
layer_type_keys[typekey]);
|
||||
}
|
||||
|
|
@ -1952,6 +2205,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
LefAddViaGeometry(f, lefl, curlayer, oscale);
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
case LEF_VIA_FOREIGN:
|
||||
case LEF_VIARULE_VIA:
|
||||
case LEF_VIA_ENCLOSURE:
|
||||
case LEF_VIA_PREFERENCLOSURE:
|
||||
|
|
@ -1962,7 +2216,7 @@ LefReadLayerSection(f, lname, mode, lefl)
|
|||
case LEF_LAYER_END:
|
||||
if (LefParseEndStatement(f, lname) == 0)
|
||||
{
|
||||
LefError("Layer END statement missing.\n");
|
||||
LefError(LEF_ERROR, "Layer END statement missing.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1993,9 +2247,9 @@ enum lef_sections {LEF_VERSION = 0,
|
|||
LEF_USEMINSPACING, LEF_CLEARANCEMEASURE,
|
||||
LEF_NAMESCASESENSITIVE,
|
||||
LEF_PROPERTYDEFS, LEF_UNITS, LEF_SECTION_LAYER,
|
||||
LEF_SECTION_VIA, LEF_SECTION_VIARULE,
|
||||
LEF_SECTION_SPACING, LEF_SECTION_SITE, LEF_PROPERTY,
|
||||
LEF_NOISETABLE, LEF_CORRECTIONTABLE, LEF_IRDROP,
|
||||
LEF_SECTION_VIA, LEF_SECTION_VIARULE, LEF_SECTION_NONDEFAULTRULE,
|
||||
LEF_NOWIREEXTENSIONATPIN, LEF_SECTION_SPACING, LEF_SECTION_SITE,
|
||||
LEF_PROPERTY, LEF_NOISETABLE, LEF_CORRECTIONTABLE, LEF_IRDROP,
|
||||
LEF_ARRAY, LEF_SECTION_TIMING, LEF_EXTENSION, LEF_MACRO,
|
||||
LEF_END};
|
||||
|
||||
|
|
@ -2026,6 +2280,8 @@ LefRead(inName, importForeign)
|
|||
"LAYER",
|
||||
"VIA",
|
||||
"VIARULE",
|
||||
"NONDEFAULTRULE",
|
||||
"NOWIREEXTENSIONATPIN",
|
||||
"SPACING",
|
||||
"SITE",
|
||||
"PROPERTY",
|
||||
|
|
@ -2066,13 +2322,15 @@ LefRead(inName, importForeign)
|
|||
HashInit(&LefCellTable, 32, HT_STRINGKEYS);
|
||||
HashInit(&lefDefInitHash, 32, HT_STRINGKEYS);
|
||||
oscale = CIFGetOutputScale(1000);
|
||||
lefCurrentLine = 0;
|
||||
|
||||
while ((token = LefNextToken(f, TRUE)) != NULL)
|
||||
{
|
||||
keyword = Lookup(token, sections);
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -2086,6 +2344,7 @@ LefRead(inName, importForeign)
|
|||
LefEndStatement(f);
|
||||
break;
|
||||
case LEF_NAMESCASESENSITIVE:
|
||||
case LEF_NOWIREEXTENSIONATPIN:
|
||||
LefEndStatement(f);
|
||||
break;
|
||||
case LEF_PROPERTYDEFS:
|
||||
|
|
@ -2123,7 +2382,7 @@ LefRead(inName, importForeign)
|
|||
LefSkipSection(f, tsave);
|
||||
else
|
||||
{
|
||||
LefError("Warning: Cut type \"%s\" redefined.\n", token);
|
||||
LefError(LEF_WARNING, "Cut type \"%s\" redefined.\n", token);
|
||||
lefl = LefRedefined(lefl, token);
|
||||
LefReadLayerSection(f, tsave, keyword, lefl);
|
||||
}
|
||||
|
|
@ -2147,7 +2406,7 @@ LefRead(inName, importForeign)
|
|||
}
|
||||
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",
|
||||
token);
|
||||
LefSkipSection(f, tsave);
|
||||
|
|
@ -2155,7 +2414,7 @@ LefRead(inName, importForeign)
|
|||
}
|
||||
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",
|
||||
token);
|
||||
LefSkipSection(f, tsave);
|
||||
|
|
@ -2178,7 +2437,8 @@ LefRead(inName, importForeign)
|
|||
lefl = (lefLayer *)HashGetValue(he);
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
|
@ -2186,12 +2446,18 @@ LefRead(inName, importForeign)
|
|||
LefReadLayerSection(f, tsave, keyword, lefl);
|
||||
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:
|
||||
LefSkipSection(f, sections[LEF_SECTION_SPACING]);
|
||||
break;
|
||||
case LEF_SECTION_SITE:
|
||||
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);
|
||||
LefSkipSection(f, tsave);
|
||||
break;
|
||||
|
|
@ -2228,7 +2494,7 @@ LefRead(inName, importForeign)
|
|||
case LEF_END:
|
||||
if (LefParseEndStatement(f, "LIBRARY") == 0)
|
||||
{
|
||||
LefError("END statement out of context.\n");
|
||||
LefError(LEF_ERROR, "END statement out of context.\n");
|
||||
keyword = -1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -2236,7 +2502,7 @@ LefRead(inName, importForeign)
|
|||
if (keyword == LEF_END) break;
|
||||
}
|
||||
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 */
|
||||
HashKill(&LefCellTable);
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ LefTechInit()
|
|||
HashKill(&LefInfo);
|
||||
}
|
||||
HashInit(&LefInfo, 32, HT_STRINGKEYS);
|
||||
lefCurrentLine = -1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -252,17 +253,17 @@ LefTechLine(sectionName, argc, argv)
|
|||
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
else if (i > 2)
|
||||
{
|
||||
LefError("Too many types in LEF layer definition.\n");
|
||||
TechError("Too many types in LEF layer definition.\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -741,18 +741,18 @@ lefWriteMacro(def, f, scale, hide)
|
|||
propvalue = (char *)DBPropGet(def, "LEFclass", &propfound);
|
||||
if (propfound)
|
||||
{
|
||||
fprintf(f, " CLASS %s\n", propvalue);
|
||||
fprintf(f, " CLASS %s ;\n", propvalue);
|
||||
class = propvalue;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 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);
|
||||
if (propfound)
|
||||
fprintf(f, " SOURCE %s\n", propvalue);
|
||||
fprintf(f, " SOURCE %s ;\n", propvalue);
|
||||
|
||||
fprintf(f, " FOREIGN %s ;\n", def->cd_name);
|
||||
|
||||
|
|
@ -787,7 +787,7 @@ lefWriteMacro(def, f, scale, hide)
|
|||
|
||||
propvalue = (char *)DBPropGet(def, "LEFsymmetry", &propfound);
|
||||
if (propfound)
|
||||
fprintf(f, " SYMMETRY %s\n", propvalue);
|
||||
fprintf(f, " SYMMETRY %s ;\n", propvalue);
|
||||
|
||||
/* 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 \
|
||||
../utils/geometry.h ../textio/txcommands.h ../textio/textio.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 \
|
||||
../utils/geometry.h ../textio/txcommands.h lispargs.h ../textio/textio.h \
|
||||
../utils/malloc.h
|
||||
|
|
|
|||
105
mzrouter/Depend
105
mzrouter/Depend
|
|
@ -1,100 +1,135 @@
|
|||
mzBlock.o: mzBlock.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzDebug.o: mzDebug.c ../utils/magic.h ../utils/signals.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
|
||||
mzEstimate.o: mzEstimate.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzXtndDown.o: mzXtndDown.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzXtndLeft.o: mzXtndLeft.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzXtndRght.o: mzXtndRght.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzXtndUp.o: mzXtndUp.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzHint.o: mzHint.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.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/signals.h ../textio/textio.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
|
||||
../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 \
|
||||
../select/select.h ../utils/signals.h ../textio/textio.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 \
|
||||
../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 \
|
||||
../utils/list.h ../debug/debug.h ../utils/heap.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.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/signals.h ../textio/textio.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/geofast.h ../utils/list.h ../utils/heap.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 \
|
||||
../select/select.h ../utils/signals.h ../textio/textio.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzSearch.o: mzSearch.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzStart.o: mzStart.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.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/signals.h ../textio/textio.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/geofast.h ../utils/list.h ../utils/touchingtypes.h \
|
||||
../utils/heap.h ../mzrouter/mzrouter.h ../mzrouter/mzInternal.h \
|
||||
../mzrouter/mzDebug.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 \
|
||||
../select/select.h ../utils/signals.h ../textio/textio.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/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 \
|
||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/signals.h ../textio/textio.h ../wiring/wiring.h \
|
||||
../utils/utils.h ../utils/tech.h ../utils/malloc.h ../utils/list.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 \
|
||||
../wiring/wiring.h ../utils/tech.h ../utils/malloc.h ../utils/list.h \
|
||||
../windows/windows.h ../utils/main.h ../mzrouter/mzrouter.h \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzTestCmd.o: mzTestCmd.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/hash.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/signals.h ../textio/textio.h ../irouter/irouter.h \
|
||||
../graphics/graphics.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../dbwind/dbwtech.h ../textio/txcommands.h ../utils/main.h \
|
||||
../utils/utils.h ../commands/commands.h ../utils/styles.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 \
|
||||
../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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
mzWalk.o: mzWalk.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../mzrouter/mzInternal.h ../mzrouter/mzDebug.h
|
||||
|
|
|
|||
|
|
@ -1,46 +1,68 @@
|
|||
NMbutton.o: NMbutton.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../utils/hash.h ../database/database.h ../windows/windows.h \
|
||||
../textio/txcommands.h ../netmenu/nmInt.h ../netmenu/netmenu.h \
|
||||
../utils/main.h ../textio/textio.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 \
|
||||
../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 \
|
||||
../utils/hash.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../netmenu/nmInt.h ../textio/textio.h ../textio/txcommands.h \
|
||||
../commands/commands.h ../utils/styles.h ../utils/malloc.h
|
||||
NMmain.o: NMmain.c ../utils/magic.h ../utils/geometry.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../graphics/glyphs.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../dbwind/dbwind.h ../textio/textio.h ../utils/styles.h \
|
||||
../textio/txcommands.h ../netmenu/nmInt.h ../netmenu/netmenu.h \
|
||||
../utils/undo.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 ../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 \
|
||||
../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 \
|
||||
../netmenu/netmenu.h
|
||||
NMshowpt.o: NMshowpt.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../utils/styles.h ../utils/main.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../utils/styles.h ../textio/textio.h ../utils/main.h ../netmenu/nmInt.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 \
|
||||
../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 \
|
||||
../windows/windows.h ../netmenu/netmenu.h ../netmenu/nmInt.h \
|
||||
../utils/undo.h ../utils/utils.h
|
||||
NMwiring.o: NMwiring.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../dbwind/dbwind.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 \
|
||||
../utils/utils.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 ../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 \
|
||||
../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 \
|
||||
../commands/commands.h ../plot/plotInt.h
|
||||
plotGremln.o: plotGremln.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
||||
../utils/malloc.h ../utils/utils.h ../windows/windows.h \
|
||||
../commands/commands.h ../dbwind/dbwind.h ../textio/textio.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 ../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 \
|
||||
../utils/geometry.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/utils.h ../windows/windows.h ../commands/commands.h \
|
||||
../dbwind/dbwind.h ../textio/textio.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/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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
||||
../utils/malloc.h ../plot/plotInt.h ../textio/textio.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/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 \
|
||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/malloc.h ../plot/plotInt.h \
|
||||
../textio/textio.h ../utils/utils.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 \
|
||||
../textio/textio.h
|
||||
plotVers.o: plotVers.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/utils.h ../utils/tech.h ../utils/signals.h ../dbwind/dbwind.h \
|
||||
../cif/cif.h
|
||||
../utils/tech.h ../utils/signals.h ../dbwind/dbwind.h ../cif/cif.h
|
||||
plotPixels.o: plotPixels.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../textio/textio.h ../utils/utils.h ../utils/tech.h ../utils/signals.h \
|
||||
../utils/styles.h ../graphics/graphics.h ../dbwind/dbwind.h
|
||||
../textio/textio.h ../utils/tech.h ../utils/signals.h ../utils/styles.h \
|
||||
../graphics/graphics.h ../dbwind/dbwind.h
|
||||
plotPNM.o: plotPNM.c ../utils/magic.h ../utils/geometry.h \
|
||||
../utils/geofast.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/tech.h ../utils/malloc.h \
|
||||
../utils/utils.h ../utils/styles.h ../windows/windows.h \
|
||||
../graphics/graphics.h ../dbwind/dbwtech.h ../dbwind/dbwind.h \
|
||||
../utils/main.h ../commands/commands.h ../textio/textio.h \
|
||||
../utils/signals.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/tech.h ../utils/malloc.h \
|
||||
../utils/styles.h ../windows/windows.h ../graphics/graphics.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.
|
||||
*/
|
||||
{
|
||||
if (raster == NULL) return;
|
||||
freeMagic((char *) raster->ras_bits);
|
||||
freeMagic((char *) raster);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1084,7 +1084,7 @@ PlotVersatec(scx, layers, xMask, user_scale)
|
|||
Raster *raster = NULL;
|
||||
|
||||
/* CMYK color separated raster buffers. */
|
||||
Raster *kRaster, *cRaster, *mRaster, *yRaster;
|
||||
Raster *kRaster = NULL, *cRaster = NULL, *mRaster = NULL, *yRaster = NULL;
|
||||
|
||||
haveColorMessage = FALSE;
|
||||
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 \
|
||||
../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
|
||||
PlowJogs.o: PlowJogs.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.h \
|
||||
../utils/malloc.h ../debug/debug.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
||||
../debug/debug.h ../plow/plow.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
|
||||
../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 ../utils/undo.h ../debug/debug.h ../plow/plow.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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../debug/debug.h \
|
||||
../plow/plowInt.h ../plow/plowDebugInt.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
||||
../plow/plowDebugInt.h ../textio/textio.h ../utils/undo.h \
|
||||
../utils/signals.h ../extract/extract.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/undo.h \
|
||||
../plow/plow.h ../plow/plowInt.h ../plow/plowDebugInt.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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
||||
../plow/plowDebugInt.h ../utils/stack.h ../textio/textio.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 ../plow/plowInt.h ../plow/plowDebugInt.h \
|
||||
../utils/stack.h ../textio/textio.h
|
||||
PlowTech.o: PlowTech.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/utils.h \
|
||||
../utils/malloc.h ../plow/plowInt.h ../plow/plowDebugInt.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 ../utils/malloc.h ../plow/plowInt.h \
|
||||
../plow/plowDebugInt.h ../drc/drc.h
|
||||
PlowTest.o: PlowTest.c ../utils/magic.h ../utils/styles.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 \
|
||||
../commands/commands.h ../drc/drc.h ../debug/debug.h ../plow/plowInt.h \
|
||||
../plow/plowDebugInt.h ../textio/textio.h ../textio/txcommands.h
|
||||
PlowWidth.o: PlowWidth.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../plow/plowInt.h \
|
||||
../plow/plowDebugInt.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 ../plow/plowInt.h ../plow/plowDebugInt.h
|
||||
PlowYank.o: PlowYank.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../resis/resis.h
|
||||
ResJunct.o: ResJunct.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../extract/extDebugInt.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../utils/stack.h ../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
||||
ResMakeRes.o: ResMakeRes.c ../utils/magic.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../resis/resis.h
|
||||
ResSimple.o: ResSimple.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../resis/resis.h
|
||||
ResPrint.o: ResPrint.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/utils.h ../cif/cif.h \
|
||||
../utils/tech.h ../textio/txcommands.h ../utils/stack.h \
|
||||
../utils/styles.h ../resis/resis.h
|
||||
../windows/windows.h ../dbwind/dbwind.h ../cif/cif.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../utils/stack.h ../utils/styles.h \
|
||||
../resis/resis.h
|
||||
ResReadSim.o: ResReadSim.c ../utils/magic.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 \
|
||||
../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
|
||||
ResConDCS.o: ResConDCS.c ../utils/magic.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 \
|
||||
../utils/signals.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../utils/tech.h ../textio/txcommands.h ../resis/resis.h
|
||||
ResRex.o: ResRex.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../resis/resis.h
|
||||
ResMerge.o: ResMerge.c ../utils/magic.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 \
|
||||
../resis/resis.h
|
||||
ResChecks.o: ResChecks.c ../utils/magic.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 \
|
||||
../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
|
||||
ResFract.o: ResFract.c ../utils/magic.h ../utils/geometry.h \
|
||||
../textio/txcommands.h ../tiles/tile.h ../utils/signals.h \
|
||||
../utils/hash.h ../database/database.h ../database/databaseInt.h \
|
||||
../utils/malloc.h ../windows/windows.h ../utils/main.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 \
|
||||
../database/databaseInt.h ../utils/malloc.h ../windows/windows.h \
|
||||
../utils/main.h
|
||||
ResUtils.o: ResUtils.c ../utils/magic.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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/stack.h ../utils/tech.h \
|
||||
../textio/txcommands.h ../resis/resis.h
|
||||
ResDebug.o: ResDebug.c ../utils/magic.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 \
|
||||
../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
|
||||
|
|
|
|||
|
|
@ -1,26 +1,35 @@
|
|||
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 \
|
||||
../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 \
|
||||
../commands/commands.h ../utils/heap.h ../router/router.h \
|
||||
../utils/netlist.h ../netmenu/netmenu.h ../gcr/gcr.h \
|
||||
../grouter/grouter.h ../grouter/grouteDebug.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 \
|
||||
../windows/windows.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
|
||||
../utils/heap.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 ../gcr/gcr.h ../windows/windows.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 \
|
||||
../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 \
|
||||
../router/rtrDcmpose.h ../gcr/gcr.h ../grouter/grouter.h \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../utils/styles.h \
|
||||
../utils/malloc.h ../netmenu/netmenu.h ../debug/debug.h
|
||||
rtrFdback.o: rtrFdback.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../grouter/grouteDebug.h ../utils/netlist.h ../textio/textio.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
|
||||
rtrChannel.o: rtrChannel.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../router/rtrDcmpose.h ../grouter/grouter.h ../grouter/grouteDebug.h \
|
||||
../textio/textio.h ../utils/styles.h
|
||||
rtrPaint.o: rtrPaint.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../grouter/grouteDebug.h ../windows/windows.h ../dbwind/dbwind.h \
|
||||
../utils/main.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/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 \
|
||||
../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 \
|
||||
../grouter/grouter.h ../grouter/grouteDebug.h ../textio/textio.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 \
|
||||
../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 \
|
||||
../windows/windows.h ../utils/main.h ../utils/signals.h
|
||||
rtrStem.o: rtrStem.c ../utils/magic.h ../utils/geometry.h ../utils/hash.h \
|
||||
../tiles/tile.h ../database/database.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../utils/styles.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
|
||||
../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 \
|
||||
../windows/windows.h ../dbwind/dbwind.h ../utils/styles.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 \
|
||||
../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
|
||||
rtrVia.o: rtrVia.c ../utils/magic.h ../utils/geometry.h ../tiles/tile.h \
|
||||
../utils/hash.h ../utils/heap.h ../database/database.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
|
||||
../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 ../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 \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../utils/signals.h ../utils/malloc.h ../router/router.h \
|
||||
../windows/windows.h ../utils/main.h ../gcr/gcr.h ../router/routerInt.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 ../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_use = use;
|
||||
scx.scx_trans = GeoIdentityTransform;
|
||||
TTMaskZero(&allObs);
|
||||
TTMaskSetMask3(&allObs, &RtrMetalObstacles, &RtrPolyObstacles);
|
||||
(void) DBTreeSrTiles(&scx, &allObs, 0, rtrChannelObstacleMark, (ClientData) ch);
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ ${DEPEND_FILE}:
|
|||
# Original Depend file generating line:
|
||||
# ${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} ${DEPEND_FLAG} ${SRCS} > ${DEPEND_FILE}
|
||||
|
||||
.c.o:
|
||||
.c.o: ../database/database.h
|
||||
@echo --- compiling ${MODULE}/$*.o
|
||||
${RM} $*.o
|
||||
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} -c $*.c
|
||||
|
|
@ -47,10 +47,6 @@ ${DESTDIR}${BINDIR}/${MODULE}${EXEEXT}: ${MODULE}${EXEEXT}
|
|||
${RM} ${DESTDIR}${BINDIR}/${MODULE}${EXEEXT}
|
||||
${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:
|
||||
${RM} ${CLEANS}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:3476: result: gcc -E
|
||||
|
|
@ -146,7 +146,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:3596: checking for g++
|
||||
|
|
@ -302,7 +302,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| #define STDC_HEADERS 1
|
||||
| #define HAVE_SYS_TYPES_H 1
|
||||
| #define HAVE_SYS_STAT_H 1
|
||||
|
|
@ -343,7 +343,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| #define STDC_HEADERS 1
|
||||
| #define HAVE_SYS_TYPES_H 1
|
||||
| #define HAVE_SYS_STAT_H 1
|
||||
|
|
@ -433,7 +433,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| #define STDC_HEADERS 1
|
||||
| #define HAVE_SYS_TYPES_H 1
|
||||
| #define HAVE_SYS_STAT_H 1
|
||||
|
|
@ -506,7 +506,7 @@ configure: failed program was:
|
|||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define MAGIC_VERSION "8.2"
|
||||
| #define MAGIC_REVISION "53"
|
||||
| #define MAGIC_REVISION "101"
|
||||
| #define STDC_HEADERS 1
|
||||
| #define HAVE_SYS_TYPES_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: $? = 0
|
||||
configure:7609: result: yes
|
||||
configure:8414: creating ./config.status
|
||||
configure:8417: creating ./config.status
|
||||
|
||||
## ---------------------- ##
|
||||
## Running config.status. ##
|
||||
|
|
@ -759,7 +759,7 @@ CPPFLAGS=''
|
|||
CSH='/bin/csh'
|
||||
CXX='g++'
|
||||
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'
|
||||
ECHO_C=''
|
||||
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'
|
||||
LTLIBOBJS=''
|
||||
M4='/bin/m4'
|
||||
MAGIC_REVISION='53'
|
||||
MAGIC_REVISION='101'
|
||||
MAGIC_VERSION='8.2'
|
||||
MCPP='${MAGICDIR}/scripts/preproc.py'
|
||||
OA=''
|
||||
|
|
@ -886,7 +886,7 @@ unused=' readline lisp'
|
|||
#define PACKAGE_BUGREPORT ""
|
||||
#define PACKAGE_URL ""
|
||||
#define MAGIC_VERSION "8.2"
|
||||
#define MAGIC_REVISION "53"
|
||||
#define MAGIC_REVISION "101"
|
||||
#define STDC_HEADERS 1
|
||||
#define HAVE_SYS_TYPES_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
|
||||
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='..'
|
||||
INSTALL='/bin/install -c'
|
||||
test -n "$AWK" || AWK=awk
|
||||
|
|
@ -588,7 +588,7 @@ S["INSTALL_TARGET"]="install-tcl"
|
|||
S["ALL_TARGET"]="tcl"
|
||||
S["OA_LIBS"]=""
|
||||
S["OA"]=""
|
||||
S["MAGIC_REVISION"]="53"
|
||||
S["MAGIC_REVISION"]="101"
|
||||
S["MAGIC_VERSION"]="8.2"
|
||||
S["SCPP"]="gcc -E -x c"
|
||||
S["MCPP"]="${MAGICDIR}/scripts/preproc.py"
|
||||
|
|
@ -676,11 +676,11 @@ S["ECHO_T"]=""
|
|||
S["ECHO_N"]="-n"
|
||||
S["ECHO_C"]=""
|
||||
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"\
|
||||
"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"\
|
||||
"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"\
|
||||
"_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"\
|
||||
"VE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1"
|
||||
"\\\"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"\
|
||||
"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_"\
|
||||
"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"\
|
||||
"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"\
|
||||
"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["localedir"]="${datarootdir}/locale"
|
||||
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
|
||||
TCL_LIB_DIR = /usr/lib
|
||||
MAGIC_VERSION = 8.2
|
||||
MAGIC_REVISION = 53
|
||||
MAGIC_REVISION = 101
|
||||
|
||||
CC = gcc
|
||||
CPP = gcc -E
|
||||
CXX = g++
|
||||
|
||||
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_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
|
||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,42 @@
|
|||
selCreate.o: selCreate.c ../utils/magic.h ../utils/malloc.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 \
|
||||
../select/select.h ../drc/drc.h ../utils/main.h ../utils/signals.h
|
||||
selDisplay.o: selDisplay.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../windows/windows.h ../graphics/graphics.h ../dbwind/dbwind.h \
|
||||
../utils/styles.h ../textio/textio.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 ../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 \
|
||||
../database/database.h ../tiles/tile.h ../utils/hash.h \
|
||||
../windows/windows.h ../utils/main.h ../select/select.h \
|
||||
../select/selInt.h ../utils/malloc.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 ../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 \
|
||||
../utils/hash.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../utils/hash.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../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 \
|
||||
../select/selInt.h ../utils/malloc.h ../textio/textio.h
|
||||
|
|
|
|||
|
|
@ -1232,8 +1232,8 @@ selACPaintFunc2(tile, selACarg)
|
|||
Rect rrect, orect;
|
||||
int np, i, j;
|
||||
|
||||
ttype = (selACarg->ttype & TT_SIDE) ? ((ttype & TT_RIGHTMASK) >> 14) :
|
||||
ttype & TT_LEFTMASK;
|
||||
ttype = (selACarg->ttype & TT_SIDE) ? ((selACarg->ttype & TT_RIGHTMASK) >> 14) :
|
||||
selACarg->ttype & TT_LEFTMASK;
|
||||
|
||||
if (type & TT_DIAGONAL)
|
||||
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 \
|
||||
../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 \
|
||||
../extract/extDebugInt.h ../sim/sim.h ../windows/windows.h \
|
||||
../dbwind/dbwind.h ../commands/commands.h ../textio/txcommands.h \
|
||||
../utils/styles.h ../graphics/graphics.h
|
||||
SimSelect.o: SimSelect.c ../tcltk/tclmagic.h ../utils/magic.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/main.h ../utils/malloc.h ../utils/signals.h ../sim/sim.h
|
||||
SimRsim.o: SimRsim.c
|
||||
SimExtract.o: SimExtract.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../extract/extDebugInt.h ../utils/signals.h ../windows/windows.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 \
|
||||
../windows/windows.h ../utils/magic.h ../utils/geometry.h \
|
||||
../database/database.h ../tiles/tile.h ../utils/hash.h ../utils/dqueue.h \
|
||||
../commands/commands.h ../utils/utils.h ../textio/textio.h \
|
||||
../textio/txcommands.h ../utils/signals.h ../graphics/graphics.h \
|
||||
../utils/malloc.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 ../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 Button2 "magic::trackwire %W done"
|
||||
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_Button3 "wire decr type"
|
||||
macro Button4 "wire incr width"
|
||||
macro Button5 "wire decr width"
|
||||
macro Shift_Button3 "wire decr type ; wire show"
|
||||
macro Button4 "wire incr width ; wire show"
|
||||
macro Button5 "wire decr width ; wire show"
|
||||
|
||||
}
|
||||
netlist {
|
||||
|
|
|
|||
|
|
@ -1,20 +1,27 @@
|
|||
txCommands.o: txCommands.c ../utils/magsgtty.h ../utils/magic.h \
|
||||
../textio/textio.h ../utils/geometry.h ../textio/txcommands.h \
|
||||
../textio/textioInt.h ../utils/macros.h ../utils/hash.h \
|
||||
../windows/windows.h ../tiles/tile.h ../database/database.h \
|
||||
../dbwind/dbwind.h ../drc/drc.h ../utils/signals.h \
|
||||
txCommands.o: txCommands.c ../tcltk/tclmagic.h ../utils/magsgtty.h \
|
||||
../utils/magic.h ../textio/textio.h ../utils/geometry.h \
|
||||
../textio/txcommands.h ../textio/textioInt.h ../utils/macros.h \
|
||||
../utils/hash.h ../windows/windows.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 ../dbwind/dbwind.h ../drc/drc.h ../utils/signals.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 \
|
||||
../windows/windows.h ../utils/geometry.h ../database/database.h \
|
||||
../tiles/tile.h ../utils/hash.h ../textio/textio.h \
|
||||
../textio/txcommands.h ../textio/textioInt.h ../utils/dqueue.h \
|
||||
../utils/macros.h ../graphics/graphics.h ../database/databaseInt.h \
|
||||
../cif/CIFint.h ../cif/CIFread.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 ../textio/txcommands.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 \
|
||||
../textio/textio.h ../utils/geometry.h ../textio/txcommands.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
|
||||
txOutput.o: txOutput.c ../utils/magsgtty.h ../utils/magic.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 \
|
||||
../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
|
||||
finddisp.o: finddisp.c ../utils/magic.h ../utils/utils.h
|
||||
flock.o: flock.c ../utils/magic.h ../utils/hash.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../database/database.h ../windows/windows.h \
|
||||
../utils/malloc.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 \
|
||||
../windows/windows.h ../utils/malloc.h
|
||||
flsbuf.o: flsbuf.c
|
||||
fraction.o: fraction.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
|
||||
heap.o: heap.c ../utils/magic.h ../utils/geometry.h ../utils/heap.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 \
|
||||
../utils/list.h
|
||||
lookup.o: lookup.c ../utils/magic.h ../utils/utils.h
|
||||
lookupany.o: lookupany.c
|
||||
lookupfull.o: lookupfull.c ../utils/magic.h
|
||||
macros.o: macros.c ../utils/magic.h ../utils/utils.h ../utils/hash.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 \
|
||||
macros.o: macros.c ../utils/magic.h ../utils/main.h ../windows/windows.h \
|
||||
../utils/geometry.h ../database/database.h ../tiles/tile.h \
|
||||
../utils/hash.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/utils.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
|
||||
../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/macros.h
|
||||
main.o: main.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 \
|
||||
../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
|
||||
match.o: match.c ../utils/magic.h ../textio/textio.h
|
||||
maxrect.o: maxrect.c ../utils/maxrect.h ../database/database.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 \
|
||||
../utils/heap.h ../tiles/tile.h ../database/database.h \
|
||||
../utils/netlist.h ../utils/signals.h ../textio/textio.h \
|
||||
../utils/malloc.h ../utils/styles.h
|
||||
../bplane/bplane.h ../bplane/bpOpaque.h ../utils/ihash.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 \
|
||||
../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
|
||||
path.o: path.c ../tcltk/tclmagic.h ../utils/magic.h ../utils/hash.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
|
||||
signals.o: signals.c ../utils/main.h ../windows/windows.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
|
||||
stack.o: stack.c ../utils/magic.h ../utils/utils.h ../utils/stack.h \
|
||||
../utils/malloc.h
|
||||
strdup.o: strdup.c ../utils/magic.h ../utils/malloc.h
|
||||
runstats.o: runstats.c ../utils/magic.h ../utils/runstats.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 \
|
||||
../graphics/graphics.h ../utils/hash.h ../tiles/tile.h \
|
||||
../database/database.h ../dbwind/dbwind.h
|
||||
tech.o: tech.c ../utils/magic.h ../utils/geometry.h ../utils/utils.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
|
||||
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/malloc.h
|
||||
touchtypes.o: touchtypes.c ../utils/magic.h ../utils/geometry.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 \
|
||||
../utils/undo.h
|
||||
|
|
|
|||
|
|
@ -1,27 +1,35 @@
|
|||
windClient.o: windClient.c ../utils/magic.h ../textio/textio.h \
|
||||
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
||||
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/main.h ../utils/macros.h \
|
||||
../utils/utils.h ../utils/malloc.h ../graphics/graphics.h \
|
||||
../utils/styles.h ../textio/txcommands.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/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 \
|
||||
../textio/textio.h ../utils/geometry.h ../windows/windows.h \
|
||||
../utils/malloc.h ../utils/runstats.h ../utils/macros.h ../utils/hash.h \
|
||||
../utils/signals.h ../graphics/graphics.h ../utils/styles.h \
|
||||
../textio/txcommands.h ../graphics/glyphs.h ../windows/windInt.h \
|
||||
../tiles/tile.h ../database/database.h ../dbwind/dbwind.h \
|
||||
../utils/utils.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 \
|
||||
../dbwind/dbwind.h ../cif/cif.h
|
||||
windCmdNR.o: windCmdNR.c ../utils/magic.h ../textio/textio.h \
|
||||
../utils/geometry.h ../windows/windows.h ../graphics/glyphs.h \
|
||||
../windows/windInt.h ../tiles/tile.h ../utils/hash.h \
|
||||
../database/database.h ../utils/main.h ../utils/tech.h \
|
||||
../utils/runstats.h ../utils/undo.h ../utils/utils.h \
|
||||
../graphics/graphics.h ../textio/txcommands.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 ../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 \
|
||||
../textio/textio.h ../utils/geometry.h ../tiles/tile.h \
|
||||
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.h \
|
||||
../utils/undo.h ../utils/utils.h ../utils/signals.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
|
||||
windSend.o: windSend.c ../tcltk/tclmagic.h ../utils/magic.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 \
|
||||
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.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
|
||||
windMain.o: windMain.c ../utils/magic.h ../utils/geometry.h \
|
||||
../graphics/glyphs.h ../windows/windows.h ../windows/windInt.h \
|
||||
../utils/stack.h ../tiles/tile.h ../utils/hash.h ../database/database.h \
|
||||
../textio/textio.h ../graphics/graphics.h ../utils/malloc.h \
|
||||
../utils/utils.h ../textio/txcommands.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 ../graphics/graphics.h \
|
||||
../utils/malloc.h ../textio/txcommands.h
|
||||
windMove.o: windMove.c ../utils/magic.h ../textio/textio.h \
|
||||
../utils/geometry.h ../windows/windows.h ../graphics/graphics.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 \
|
||||
../windows/windows.h ../graphics/glyphs.h ../windows/windInt.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 \
|
||||
../utils/hash.h ../database/database.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
|
||||
../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 \
|
||||
../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 \
|
||||
../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
|
||||
wireUndo.o: wireUndo.c ../utils/magic.h ../utils/geometry.h \
|
||||
../tiles/tile.h ../utils/hash.h ../database/database.h ../utils/tech.h \
|
||||
../wiring/wiring.h ../wiring/wireInt.h ../textio/textio.h \
|
||||
../utils/undo.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 ../utils/tech.h ../wiring/wiring.h \
|
||||
../wiring/wireInt.h ../textio/textio.h ../utils/undo.h
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
extern TileType WireType;
|
||||
extern int WireWidth;
|
||||
extern int WireLastDir;
|
||||
extern int WireUnits;
|
||||
|
||||
/* Undo procedure: */
|
||||
|
||||
|
|
|
|||
244
wiring/wireOps.c
244
wiring/wireOps.c
|
|
@ -301,6 +301,7 @@ WireAddLeg(rect, point, direction)
|
|||
SearchContext scx;
|
||||
Point cursorPos;
|
||||
TileTypeBitMask mask;
|
||||
int hwidth = WireWidth / 2;
|
||||
|
||||
if (WireType == 0)
|
||||
{
|
||||
|
|
@ -372,20 +373,34 @@ WireAddLeg(rect, point, direction)
|
|||
|
||||
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
|
||||
* x, then its span in y.
|
||||
*/
|
||||
|
||||
if (point->p_x > rect->r_xtop)
|
||||
{
|
||||
new.r_xbot = rect->r_xtop;
|
||||
new.r_xtop = point->p_x;
|
||||
new.r_xbot = rect->r_xbot;
|
||||
new.r_xtop = point->p_x + hwidth;
|
||||
WireLastDir = GEO_EAST;
|
||||
}
|
||||
else if (point->p_x < rect->r_xbot)
|
||||
{
|
||||
new.r_xtop = rect->r_xbot;
|
||||
new.r_xbot = point->p_x;
|
||||
new.r_xtop = rect->r_xtop;
|
||||
new.r_xbot = point->p_x - hwidth;
|
||||
WireLastDir = GEO_WEST;
|
||||
}
|
||||
else return; /* Nothing to paint! */
|
||||
|
|
@ -395,7 +410,7 @@ WireAddLeg(rect, point, direction)
|
|||
* 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)
|
||||
new.r_ybot = rect->r_ybot;
|
||||
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
||||
|
|
@ -404,20 +419,34 @@ WireAddLeg(rect, point, direction)
|
|||
}
|
||||
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
|
||||
* code is just like what's up there).
|
||||
*/
|
||||
|
||||
if (point->p_y > rect->r_ytop)
|
||||
{
|
||||
new.r_ybot = rect->r_ytop;
|
||||
new.r_ytop = point->p_y;
|
||||
new.r_ybot = rect->r_ybot;
|
||||
new.r_ytop = point->p_y + hwidth;
|
||||
WireLastDir = GEO_NORTH;
|
||||
}
|
||||
else if (point->p_y < rect->r_ybot)
|
||||
{
|
||||
new.r_ytop = rect->r_ybot;
|
||||
new.r_ybot = point->p_y;
|
||||
new.r_ytop = rect->r_ytop;
|
||||
new.r_ybot = point->p_y - hwidth;
|
||||
WireLastDir = GEO_SOUTH;
|
||||
}
|
||||
else return; /* Nothing to paint! */
|
||||
|
|
@ -453,7 +482,7 @@ WireAddLeg(rect, point, direction)
|
|||
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)
|
||||
{
|
||||
|
|
@ -517,6 +546,7 @@ WireShowLeg()
|
|||
int direction = WIRE_CHOOSE;
|
||||
int delx, dely;
|
||||
MagWindow *w;
|
||||
int hwidth = WireWidth / 2;
|
||||
|
||||
if (WireType == 0) return;
|
||||
|
||||
|
|
@ -557,20 +587,32 @@ WireShowLeg()
|
|||
|
||||
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
|
||||
* x, then its span in y.
|
||||
*/
|
||||
|
||||
if (point->p_x > rect->r_xtop)
|
||||
{
|
||||
new.r_xbot = rect->r_xtop;
|
||||
new.r_xtop = point->p_x;
|
||||
new.r_xbot = rect->r_xbot;
|
||||
new.r_xtop = point->p_x + hwidth;
|
||||
WireLastDir = GEO_EAST;
|
||||
}
|
||||
else if (point->p_x < rect->r_xbot)
|
||||
{
|
||||
new.r_xtop = rect->r_xbot;
|
||||
new.r_xbot = point->p_x;
|
||||
new.r_xtop = rect->r_xtop;
|
||||
new.r_xbot = point->p_x - hwidth;
|
||||
WireLastDir = GEO_WEST;
|
||||
}
|
||||
else return; /* Nothing to paint! */
|
||||
|
|
@ -580,7 +622,7 @@ WireShowLeg()
|
|||
* 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)
|
||||
new.r_ybot = rect->r_ybot;
|
||||
else if (new.r_ybot > rect->r_ytop - WireWidth)
|
||||
|
|
@ -589,25 +631,37 @@ WireShowLeg()
|
|||
}
|
||||
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
|
||||
* code is just like what's up there).
|
||||
*/
|
||||
|
||||
if (point->p_y > rect->r_ytop)
|
||||
{
|
||||
new.r_ybot = rect->r_ytop;
|
||||
new.r_ytop = point->p_y;
|
||||
new.r_ybot = rect->r_ybot;
|
||||
new.r_ytop = point->p_y + hwidth;
|
||||
WireLastDir = GEO_NORTH;
|
||||
}
|
||||
else if (point->p_y < rect->r_ybot)
|
||||
{
|
||||
new.r_ytop = rect->r_ybot;
|
||||
new.r_ybot = point->p_y;
|
||||
new.r_ytop = rect->r_ytop;
|
||||
new.r_ybot = point->p_y - hwidth;
|
||||
WireLastDir = GEO_SOUTH;
|
||||
}
|
||||
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)
|
||||
new.r_xbot = rect->r_xbot;
|
||||
if (new.r_xbot > rect->r_xtop - WireWidth)
|
||||
|
|
@ -652,6 +706,9 @@ WireShowLeg()
|
|||
* ----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#define WIRING_CONTACT_UP 1
|
||||
#define WIRING_CONTACT_DOWN 0
|
||||
|
||||
void
|
||||
WireAddContact(newType, newWidth)
|
||||
TileType newType; /* New type of material to use for wiring.
|
||||
|
|
@ -669,7 +726,9 @@ WireAddContact(newType, newWidth)
|
|||
CellDef *boxRootDef;
|
||||
TileType oldType;
|
||||
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;
|
||||
SearchContext scx;
|
||||
|
||||
|
|
@ -713,19 +772,43 @@ WireAddContact(newType, newWidth)
|
|||
if ((contact->con_layer1 == oldType) &&
|
||||
(contact->con_layer2 == WireType))
|
||||
{
|
||||
oldOverlap = contact->con_surround1;
|
||||
newOverlap = contact->con_surround2;
|
||||
conSurround1 = contact->con_surround1 / WireUnits;
|
||||
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;
|
||||
}
|
||||
if ((contact->con_layer2 == oldType) &&
|
||||
(contact->con_layer1 == WireType))
|
||||
{
|
||||
oldOverlap = contact->con_surround2;
|
||||
newOverlap = contact->con_surround1;
|
||||
conSurround1 = contact->con_surround1 / WireUnits;
|
||||
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;
|
||||
}
|
||||
}
|
||||
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),
|
||||
DBTypeLongName(WireType));
|
||||
return;
|
||||
|
|
@ -739,18 +822,19 @@ WireAddContact(newType, newWidth)
|
|||
*/
|
||||
|
||||
gotContact:
|
||||
totalSize = contact->con_size + 2*oldOverlap;
|
||||
totalSize = conSize + 2 * oldOverlap;
|
||||
if (totalSize < WireWidth) totalSize = WireWidth;
|
||||
contactArea = oldLeg;
|
||||
if ((contactArea.r_xtop - contactArea.r_xbot) < totalSize)
|
||||
{
|
||||
contactArea.r_xbot -= (totalSize - (contactArea.r_xtop
|
||||
- contactArea.r_xbot))/2;
|
||||
- contactArea.r_xbot)) / 2;
|
||||
contactArea.r_xtop = contactArea.r_xbot + totalSize;
|
||||
}
|
||||
if ((contactArea.r_ytop - contactArea.r_ybot) < totalSize)
|
||||
{
|
||||
contactArea.r_ybot -= (totalSize - (contactArea.r_ytop
|
||||
- contactArea.r_ybot))/2;
|
||||
- contactArea.r_ybot)) / 2;
|
||||
contactArea.r_ytop = contactArea.r_ybot + totalSize;
|
||||
}
|
||||
|
||||
|
|
@ -785,19 +869,105 @@ WireAddContact(newType, newWidth)
|
|||
TTMaskSetOnlyType(&mask, contact->con_type);
|
||||
TTMaskSetOnlyType(&allmask, contact->con_type);
|
||||
DBPaintValid(EditCellUse->cu_def, &tmp, &mask, 0);
|
||||
if (contact->con_surround1 != 0)
|
||||
if (conSurround1 != 0)
|
||||
{
|
||||
TTMaskSetOnlyType(&mask, contact->con_layer1);
|
||||
TTMaskSetType(&allmask, contact->con_layer1);
|
||||
GEO_EXPAND(&tmp, contact->con_surround1, &tmp2);
|
||||
GEO_EXPAND(&tmp, conSurround1, &tmp2);
|
||||
(void) GeoInclude(&tmp2, &editArea);
|
||||
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||
}
|
||||
if (contact->con_surround2 != 0)
|
||||
if (conSurround2 != 0)
|
||||
{
|
||||
TTMaskSetOnlyType(&mask, 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);
|
||||
DBPaintValid(EditCellUse->cu_def, &tmp2, &mask, 0);
|
||||
}
|
||||
|
|
@ -820,15 +990,15 @@ WireAddContact(newType, newWidth)
|
|||
scx.scx_area = tmp;
|
||||
TTMaskSetOnlyType(&mask, contact->con_type);
|
||||
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);
|
||||
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);
|
||||
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: */
|
||||
Contact *WireContacts;
|
||||
int WireUnits; // Units per lambda for wiring sizes
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -65,6 +66,7 @@ WireTechInit()
|
|||
freeMagic((char *) WireContacts);
|
||||
WireContacts = WireContacts->con_next;
|
||||
}
|
||||
WireUnits = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -91,22 +93,41 @@ WireTechLine(sectionName, argc, argv)
|
|||
char *argv[]; /* Pointers to fields of line. */
|
||||
{
|
||||
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)
|
||||
{
|
||||
TechError("Unknown wiring keyword: %s. Line ignored.\n", argv[0]);
|
||||
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;
|
||||
}
|
||||
if (argc == 9) hasExtend = 1;
|
||||
|
||||
new = (Contact *) mallocMagic(sizeof(Contact));
|
||||
new->con_type = DBTechNoisyNameType(argv[1]);
|
||||
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))
|
||||
{
|
||||
errorReturn:
|
||||
|
|
@ -116,22 +137,38 @@ WireTechLine(sectionName, argc, argv)
|
|||
|
||||
if (!StrIsInt(argv[2]))
|
||||
{
|
||||
TechError("3rd field must be an integer.\n");
|
||||
TechError("Contact size 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");
|
||||
TechError("Contact surround distance must be an integer.\n");
|
||||
goto errorReturn;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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;
|
||||
WireContacts = new;
|
||||
|
|
@ -201,5 +238,11 @@ WireTechScale(scalen, scaled)
|
|||
|
||||
con->con_surround2 *= scaled;
|
||||
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
|
||||
* 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
|
||||
* the contact connects.
|
||||
*/
|
||||
int con_surround2;
|
||||
int con_extend2;
|
||||
|
||||
ContactPtr con_next; /* Pointer to next contact record */
|
||||
} Contact;
|
||||
|
|
|
|||
Loading…
Reference in New Issue