Merge branch 'master' into magic-8.2

This commit is contained in:
Tim Edwards 2019-11-15 03:00:06 -05:00
commit 3bd8c1697d
22 changed files with 91 additions and 65 deletions

View File

@ -227,7 +227,7 @@ done:
if (mw != NULL)
{
if (calmaLookCell(libname, NULL) != (CellDef *)NULL)
DBWloadWindow(mw, libname, FALSE);
DBWloadWindow(mw, libname, FALSE, FALSE);
}
freeMagic(libname);
}

View File

@ -746,7 +746,7 @@ calmaProcessDef(def, outf)
/* Read the cell in if it is not already available. */
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL))
return (0);
/*

View File

@ -312,7 +312,7 @@ cifOut(outf)
/* Read the cell in if it is not already available. */
if ((def->cd_flags & CDAVAILABLE) == 0)
{
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) continue;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) continue;
}
/* Add any subcells to the stack. This must be done before

View File

@ -3079,7 +3079,7 @@ CmdDown(w, cmd)
GeoTransRect(&EditToRootTransform, &(EditCellUse->cu_def->cd_bbox), &area);
(void) WindSearch(DBWclientID, (ClientData) NULL,
(Rect *) NULL, cmdEditRedisplayFunc, (ClientData) &area);
DBWloadWindow(w, EditCellUse->cu_def->cd_name, TRUE, FALSE);
DBWloadWindow(w, EditCellUse->cu_def->cd_name, TRUE, FALSE, FALSE);
}
/* Search function to find the new edit cell: look for a cell use
@ -3777,7 +3777,7 @@ cmdDumpParseArgs(cmdName, w, cmd, dummy, scx)
* looked for then no new error message will be printed.
*/
def->cd_flags &= ~CDNOTFOUND;
if (!DBCellRead(def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL))
return (FALSE);
DBReComputeBbox(def);
dummy->cu_def = def;

View File

@ -130,7 +130,7 @@ CmdEdit(w, cmd)
return;
}
else if (!(EditCellUse->cu_def->cd_flags & CDAVAILABLE))
DBCellRead(EditCellUse->cu_def, (char *)NULL, TRUE, NULL);
DBCellRead(EditCellUse->cu_def, (char *)NULL, TRUE, FALSE, NULL);
if (EditCellUse->cu_def->cd_flags & CDNOEDIT)
{

View File

@ -318,7 +318,7 @@ CmdLabel(w, cmd)
* Implement the "load" command.
*
* Usage:
* load [name [scaled n [d]]] [-force] [-nowindow]
* load [name [scaled n [d]]] [-force] [-nowindow] [-dereference]
*
* If name is supplied, then the window containing the point tool is
* remapped so as to edit the cell with the given name.
@ -331,6 +331,13 @@ CmdLabel(w, cmd)
* An input file can be scaled by specifying the "scaled" option, for
* which the geometry of the input file is multiplied by n/d.
*
* Magic saves the path to instances to ensure correct versioning. But
* this interferes with attempts to re-link instances from a different
* location (such as an abstract view instead of a full view, or vice
* versa). So the "-dereference" option strips the instance paths from
* the input file and relies only on the search locations set up by the
* "path" command to find the location of instances.
*
* Results:
* None.
*
@ -350,6 +357,7 @@ CmdLoad(w, cmd)
int locargc = cmd->tx_argc;
bool ignoreTech = FALSE;
bool noWindow = FALSE;
bool dereference = FALSE;
int keepGoing(); /* forward declaration */
if (locargc > 2)
@ -359,6 +367,11 @@ CmdLoad(w, cmd)
locargc--;
noWindow = TRUE;
}
if (!strncmp(cmd->tx_argv[locargc - 1], "-deref", 5))
{
locargc--;
dereference = TRUE;
}
if (!strncmp(cmd->tx_argv[locargc - 1], "-force", 6))
{
locargc--;
@ -372,7 +385,8 @@ CmdLoad(w, cmd)
d = atoi(cmd->tx_argv[4]);
else if (locargc != 4)
{
TxError("Usage: %s name scaled n [d] [-force] [-nowindow]\n",
TxError("Usage: %s name scaled n [d] [-force] "
"[-nowindow] [-dereference]\n",
cmd->tx_argv[0]);
return;
}
@ -380,9 +394,10 @@ CmdLoad(w, cmd)
DBLambda[1] *= n;
ReduceFraction(&DBLambda[0], &DBLambda[1]);
}
else if (!ignoreTech && !noWindow)
else if (!ignoreTech && !noWindow && !dereference)
{
TxError("Usage: %s name [scaled n [d]] [-force] [-nowindow]\n",
TxError("Usage: %s name [scaled n [d]] [-force] "
"[-nowindow] [-dereference]\n",
cmd->tx_argv[0]);
return;
}
@ -408,7 +423,7 @@ CmdLoad(w, cmd)
}
#endif
DBWloadWindow((noWindow == TRUE) ? NULL : w, cmd->tx_argv[1],
ignoreTech, FALSE);
ignoreTech, FALSE, dereference);
if ((n > 1) || (d > 1))
{
@ -441,7 +456,7 @@ CmdLoad(w, cmd)
ReduceFraction(&DBLambda[0], &DBLambda[1]);
}
}
else DBWloadWindow(w, (char *) NULL, TRUE, FALSE);
else DBWloadWindow(w, (char *) NULL, TRUE, FALSE, FALSE);
}
/*

View File

@ -309,7 +309,7 @@ cmdFlushCell(def)
}
DBCellClearDef(def);
DBCellClearAvail(def);
(void) DBCellRead(def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL);
DBCellSetAvail(def);
DBReComputeBbox(def);
DBCellSetModified(def, FALSE);

View File

@ -1885,9 +1885,9 @@ CmdXload(w, cmd)
{
if (CmdIllegalChars(cmd->tx_argv[1], "[],", "Cell name"))
return;
DBWloadWindow(w, cmd->tx_argv[1], FALSE, TRUE);
DBWloadWindow(w, cmd->tx_argv[1], FALSE, TRUE, FALSE);
}
else DBWloadWindow(w, (char *) NULL, FALSE, TRUE);
else DBWloadWindow(w, (char *) NULL, FALSE, TRUE, FALSE);
}
/*

View File

@ -188,7 +188,7 @@ dbCellTileSrFunc(scx, fp)
if (!DBDescendSubcell(scx->scx_use, fp->tf_xmask))
return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
context.tc_scx = scx;
context.tc_filter = fp;
@ -307,7 +307,7 @@ dbCellUniqueTileSrFunc(scx, fp)
if (!DBDescendSubcell(scx->scx_use, fp->tf_xmask))
return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
context.tc_scx = scx;
context.tc_filter = fp;
@ -418,7 +418,7 @@ DBNoTreeSrTiles(scx, mask, xMask, func, cdarg)
return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
filter.tf_func = func;
filter.tf_arg = cdarg;
@ -526,7 +526,7 @@ DBTreeSrLabels(scx, mask, xMask, tpath, flags, func, cdarg)
ASSERT(def != (CellDef *) NULL, "DBTreeSrLabels");
if (!DBDescendSubcell(cellUse, xMask)) return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
for (lab = def->cd_labels; lab; lab = lab->lab_next)
{
@ -627,7 +627,7 @@ dbCellLabelSrFunc(scx, fp)
ASSERT(def != (CellDef *) NULL, "dbCellLabelSrFunc");
if (!DBDescendSubcell(scx->scx_use, fp->tf_xmask)) return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
if (fp->tf_tpath != (TerminalPath *) NULL)
{
@ -741,7 +741,7 @@ DBTreeSrCells(scx, xMask, func, cdarg)
if (!DBDescendSubcell(cellUse, xMask))
return 0;
if ((cellUse->cu_def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(cellUse->cu_def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(cellUse->cu_def, (char *) NULL, TRUE, FALSE, NULL))
return 0;
context.tc_scx = scx;
@ -787,7 +787,7 @@ dbTreeCellSrFunc(scx, fp)
else
{
if ((use->cu_def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(use->cu_def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(use->cu_def, (char *) NULL, TRUE, FALSE, NULL))
return 0;
result = DBCellSrArea(scx, dbTreeCellSrFunc, (ClientData) fp);
}
@ -1039,7 +1039,7 @@ DBCellSrArea(scx, func, cdarg)
context.tc_scx = scx;
if ((scx->scx_use->cu_def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(scx->scx_use->cu_def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(scx->scx_use->cu_def, (char *) NULL, TRUE, FALSE, NULL))
return 0;
/* In order to make this work with zero-size areas, we first expand
@ -1215,7 +1215,7 @@ DBCellEnum(cellDef, func, cdarg)
filter.tf_func = func;
filter.tf_arg = cdarg;
if ((cellDef->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(cellDef, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(cellDef, (char *) NULL, TRUE, FALSE, NULL)) return 0;
if (TiSrArea((Tile *) NULL, cellDef->cd_planes[PL_CELL],
&TiPlaneRect, dbEnumFunc, (ClientData) &filter))
return 1;

View File

@ -73,7 +73,7 @@ DBDescendSubcell(use, xMask)
case CU_DESCEND_NO_SUBCKT:
if ((use->cu_def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(use->cu_def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(use->cu_def, (char *) NULL, TRUE, FALSE, NULL))
return FALSE;
return (DBIsSubcircuit(use->cu_def)) ? FALSE : TRUE;

View File

@ -81,7 +81,7 @@ DBExpand(cellUse, expandMask, expandFlag)
def = cellUse->cu_def;
if ((def->cd_flags & CDAVAILABLE) == 0)
{
if (!DBCellRead(def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL))
return;
/* Note: we don't have to recompute the bbox here, because
* if it changed, then a timestamp violation must have occurred
@ -144,7 +144,7 @@ DBExpandAll(rootUse, rootRect, expandMask, expandFlag, func, cdarg)
struct expandArg arg;
if ((rootUse->cu_def->cd_flags & CDAVAILABLE) == 0)
(void) DBCellRead(rootUse->cu_def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(rootUse->cu_def, (char *) NULL, TRUE, FALSE, NULL);
/*
* Walk through the area and set the expansion state
@ -193,7 +193,7 @@ dbExpandFunc(scx, arg)
/* If the cell is unavailable, then don't expand it.
*/
if ((childUse->cu_def->cd_flags & CDAVAILABLE) == 0)
if(!DBCellRead(childUse->cu_def, (char *) NULL, TRUE, NULL))
if(!DBCellRead(childUse->cu_def, (char *) NULL, TRUE, FALSE, NULL))
{
TxError("Cell %s is unavailable. It could not be expanded.\n",
childUse->cu_def->cd_name);
@ -303,7 +303,7 @@ dbReadAreaFunc(scx)
if ((def->cd_flags & CDAVAILABLE) == 0)
{
(void) DBCellRead(def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL);
/* Note: we don't have to invoke DBReComputeBbox here because
* if the bbox changed then there was a timestamp mismatch and
* the timestamp code will take care of the bounding box later.

View File

@ -264,7 +264,7 @@ file_is_not_writeable(name)
*/
bool
dbCellReadDef(f, cellDef, name, ignoreTech)
dbCellReadDef(f, cellDef, name, ignoreTech, dereference)
FILE *f; /* The file, already opened by the caller */
CellDef *cellDef; /* Pointer to definition of cell to be read in */
char *name; /* Name of file from which to read definition.
@ -279,6 +279,7 @@ dbCellReadDef(f, cellDef, name, ignoreTech)
* names do not match, but an attempt will be
* made to read the file anyway.
*/
bool dereference; /* If TRUE, ignore path references in the input */
{
int cellStamp = 0, rectCount = 0, rectReport = 10000;
char line[2048], tech[50], layername[50];
@ -437,7 +438,7 @@ dbCellReadDef(f, cellDef, name, ignoreTech)
*/
if (sscanf(line, "<< %s >>", layername) != 1)
{
if (!dbReadUse(cellDef, line, sizeof line, f, n, d))
if (!dbReadUse(cellDef, line, sizeof line, f, n, d, dereference))
goto badfile;
continue;
}
@ -863,7 +864,7 @@ DBReadBackup(name)
cellDef->cd_flags &= ~CDNOTFOUND;
cellDef->cd_flags |= CDAVAILABLE;
if (dbCellReadDef(f, cellDef, filename, TRUE) == FALSE)
if (dbCellReadDef(f, cellDef, filename, TRUE, FALSE) == FALSE)
return FALSE;
if (dbFgets(line, sizeof(line), f) == NULL)
@ -919,7 +920,7 @@ DBReadBackup(name)
*/
bool
DBCellRead(cellDef, name, ignoreTech, errptr)
DBCellRead(cellDef, name, ignoreTech, dereference, errptr)
CellDef *cellDef; /* Pointer to definition of cell to be read in */
char *name; /* Name of file from which to read definition.
* If NULL, then use cellDef->cd_file; if that
@ -933,6 +934,7 @@ DBCellRead(cellDef, name, ignoreTech, errptr)
* names do not match, but an attempt will be
* made to read the file anyway.
*/
bool dereference; /* If TRUE, ignore path references in the input */
int *errptr; /* Copy of errno set by file reading routine
* is placed here, unless NULL.
*/
@ -950,7 +952,7 @@ DBCellRead(cellDef, name, ignoreTech, errptr)
else
{
result = (dbCellReadDef(f, cellDef, name, ignoreTech));
result = (dbCellReadDef(f, cellDef, name, ignoreTech, dereference));
#ifdef FILE_LOCKS
/* Close files that were locked by another user */
@ -1193,13 +1195,14 @@ DBTestOpen(name, fullPath)
*/
bool
dbReadUse(cellDef, line, len, f, scalen, scaled)
dbReadUse(cellDef, line, len, f, scalen, scaled, dereference)
CellDef *cellDef; /* Cell whose cells are being read */
char *line; /* Line containing "use ..." */
int len; /* Size of buffer pointed to by line */
FILE *f; /* Input file */
int scalen; /* Multiply values in file by this */
int scaled; /* Divide values in file by this */
bool dereference; /* If TRUE, ignore path references */
{
int xlo, xhi, ylo, yhi, xsep, ysep, childStamp;
int absa, absb, absd, abse, nconv;
@ -1230,7 +1233,7 @@ dbReadUse(cellDef, line, len, f, scalen, scaled)
pathptr = &path[0];
while (*pathptr == ' ' || *pathptr == '\t') pathptr++;
if (*pathptr == '\n') *pathptr = '\0';
if ((dereference == TRUE) || (*pathptr == '\n')) *pathptr = '\0';
locked = (useid[0] == CULOCKCHAR) ? TRUE : FALSE;
@ -2840,7 +2843,7 @@ DBCellWrite(cellDef, fileName)
#ifdef FILE_LOCKS
else
/* Re-aquire the lock on the new file by opening it. */
DBCellRead(cellDef, NULL, TRUE, NULL);
DBCellRead(cellDef, NULL, TRUE, FALSE, NULL);
#endif
}

View File

@ -294,7 +294,7 @@ DBTreeFindUse(name, use, scx)
* is read in from disk.
*/
if ((def->cd_flags & CDAVAILABLE) == 0)
(void) DBCellRead(def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL);
cp = name;
he = HashLookOnly(&def->cd_idHash, name);
@ -343,7 +343,7 @@ DBTreeFindUse(name, use, scx)
/* Ensure that the leaf cell is read in */
def = use->cu_def;
if ((def->cd_flags & CDAVAILABLE) == 0)
(void) DBCellRead(def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL);
scx->scx_use = use;
}

View File

@ -137,7 +137,7 @@ DBFixMismatch()
mismatch = mismatch->mm_next;
if (cellDef->cd_flags & CDPROCESSED) continue;
(void) DBCellRead(cellDef, (char *) NULL, TRUE, NULL);
(void) DBCellRead(cellDef, (char *) NULL, TRUE, FALSE, NULL);
/* Jimmy up the cell's current bounding box, so the following
* procedure call will absolutely and positively know that

View File

@ -127,10 +127,10 @@ DBWcreate(window, argc, argv)
window->w_clientData = (ClientData) crec;
if (argc > 0)
DBWloadWindow(window, argv[0], TRUE, FALSE);
DBWloadWindow(window, argv[0], TRUE, FALSE, FALSE);
else if (ToolGetBox(&boxDef, &box))
{
DBWloadWindow(window, boxDef->cd_name, TRUE, FALSE);
DBWloadWindow(window, boxDef->cd_name, TRUE, FALSE, FALSE);
/* Zoom in on the box, leaving a 10% border or at least 2 units
* on each side.
@ -148,7 +148,7 @@ DBWcreate(window, argc, argv)
}
else
{
DBWloadWindow(window, (char *) NULL, TRUE, FALSE);
DBWloadWindow(window, (char *) NULL, TRUE, FALSE, FALSE);
}
return TRUE;
}
@ -249,7 +249,7 @@ dbwReloadFunc(w, name)
MagWindow *w;
char *name;
{
DBWloadWindow(w, name, TRUE, FALSE);
DBWloadWindow(w, name, TRUE, FALSE, FALSE);
return (0);
}
@ -274,18 +274,20 @@ dbwReloadFunc(w, name)
* cell doesn't change.
*
* If "expand" is true, unexpands all subcells of the root cell.
* If "dereference" is true, ignore path reference in the input file.
*
* ----------------------------------------------------------------------------
*/
void
DBWloadWindow(window, name, ignoreTech, expand)
DBWloadWindow(window, name, ignoreTech, expand, dereference)
MagWindow *window; /* Identifies window to which cell is to be bound */
char *name; /* Name of new cell to be bound to this window */
bool ignoreTech; /* If FALSE, indicates that the technology of
* the layout must match the current technology.
*/
bool expand; /* Indicates whether or not to expand the cell */
bool dereference; /* If TRUE, ignore path references in the input */
{
CellDef *newEditDef;
CellUse *newEditUse;
@ -383,7 +385,7 @@ DBWloadWindow(window, name, ignoreTech, expand)
if (newEditDef == (CellDef *) NULL)
newEditDef = DBCellNewDef(rootname, (char *) NULL);
if (!DBCellRead(newEditDef, name, ignoreTech, &error_val))
if (!DBCellRead(newEditDef, name, ignoreTech, dereference, &error_val))
{
if (error_val == ENOENT)
{

View File

@ -969,7 +969,7 @@ drcFindFunc(scx, finddata)
if (HashGetValue(h) != 0) return 0;
HashSetValue(h, 1);
(void) DBCellRead(def, (char *) NULL, TRUE, NULL);
(void) DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL);
if (DBSrPaintArea((Tile *) NULL, def->cd_planes[PL_DRC_ERROR],
&def->cd_bbox, &DBAllButSpaceBits, drcFindFunc2,

View File

@ -59,7 +59,8 @@ bool efFlatGlobCmp(HierName *, HierName *);
char *efFlatGlobCopy(HierName *);
void efFlatGlobError(EFNodeName *, EFNodeName *);
int efAddNodes(HierContext *, bool);
int efAddOneConn(HierContext *, char *, char *, Connection *);
int efAddConns(HierContext *, bool);
int efAddOneConn(HierContext *, char *, char *, Connection *, bool);
/*
@ -193,8 +194,11 @@ EFFlatBuildOneLevel(def, flags)
efFlatContext.hc_x = efFlatContext.hc_y = 0;
efFlatRootUse.use_def = efFlatRootDef;
/* NOTE: Do the following two routines need to be deeper than one level? */
/* Record all nodes of the next level in the hierarchy */
efHierSrUses(&efFlatContext, efAddNodes, (ClientData)TRUE);
/* Record those connections as well. */
efHierSrUses(&efFlatContext, efAddConns, (ClientData)FALSE);
/* Expand all subcells that contain connectivity information but */
/* no active devices (including those in subcells). */
@ -210,7 +214,7 @@ EFFlatBuildOneLevel(def, flags)
/* Record all local nodes */
efAddNodes(&efFlatContext, FALSE);
efAddConns(&efFlatContext);
efAddConns(&efFlatContext, TRUE);
efFlatKills(&efFlatContext);
if (!(flags & EF_NONAMEMERGE))
@ -300,7 +304,7 @@ efFlatNodes(hc)
efAddNodes(hc, FALSE);
/* Process our own connections and adjustments */
(void) efAddConns(hc);
(void) efAddConns(hc, TRUE);
return (0);
}
@ -352,7 +356,7 @@ efFlatNodesStdCell(hc)
/* Process our own connections and adjustments */
if (!(hc->hc_use->use_def->def_flags & DEF_SUBCIRCUIT))
(void) efAddConns(hc);
(void) efAddConns(hc, TRUE);
return (0);
}
@ -378,7 +382,7 @@ efFlatNodesDeviceless(hc, cdata)
efAddNodes(hc, TRUE);
/* Process our own connections and adjustments */
efAddConns(hc);
efAddConns(hc, TRUE);
/* Mark this definition as having no devices, so it will not be visited */
hc->hc_use->use_def->def_flags |= DEF_NODEVICES;
@ -562,8 +566,9 @@ efAddNodes(hc, stdcell)
*/
int
efAddConns(hc)
efAddConns(hc, doWarn)
HierContext *hc;
bool doWarn;
{
Connection *conn;
@ -576,9 +581,9 @@ efAddConns(hc)
{
/* Special case for speed when no array info is present */
if (conn->conn_1.cn_nsubs == 0)
efAddOneConn(hc, conn->conn_name1, conn->conn_name2, conn);
efAddOneConn(hc, conn->conn_name1, conn->conn_name2, conn, doWarn);
else
efHierSrArray(hc, conn, efAddOneConn, (ClientData) NULL);
efHierSrArray(hc, conn, efAddOneConn, (ClientData)doWarn);
}
return (0);
@ -605,16 +610,17 @@ efAddConns(hc)
*/
int
efAddOneConn(hc, name1, name2, conn)
efAddOneConn(hc, name1, name2, conn, doWarn)
HierContext *hc;
char *name1, *name2; /* These are strings, not HierNames */
Connection *conn;
bool doWarn;
{
HashEntry *he1, *he2;
EFNode *node, *newnode;
int n;
he1 = EFHNLook(hc->hc_hierName, name1, "connect(1)");
he1 = EFHNLook(hc->hc_hierName, name1, (doWarn) ? "connect(1)" : NULL);
if (he1 == NULL)
return 0;
@ -630,7 +636,7 @@ efAddOneConn(hc, name1, name2, conn)
/* Merge this node with conn_name2 if one was specified */
if (name2)
{
he2 = EFHNLook(hc->hc_hierName, name2, "connect(2)");
he2 = EFHNLook(hc->hc_hierName, name2, (doWarn) ? "connect(2)" : NULL);
if (he2 == NULL)
return 0;
newnode = ((EFNodeName *) HashGetValue(he2))->efnn_node;

View File

@ -424,7 +424,7 @@ extTreeSrPaintArea(scx, func, cdarg)
int pNum;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
filter.tf_func = func;
filter.tf_arg = cdarg;
@ -461,7 +461,7 @@ extTreeSrFunc(scx, fp)
int pNum;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return (0);
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return (0);
context.tc_scx = scx;
context.tc_filter = fp;
@ -548,7 +548,7 @@ extCellSrArea(scx, func, cdarg)
filter.tf_arg = cdarg;
if ((scx->scx_use->cu_def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(scx->scx_use->cu_def, (char *) NULL, TRUE, NULL))
if (!DBCellRead(scx->scx_use->cu_def, (char *) NULL, TRUE, FALSE, NULL))
return 0;
/*

View File

@ -1394,7 +1394,7 @@ W3DloadWindow(window, name)
if (newEditDef == (CellDef *)NULL)
return FALSE;
if (!DBCellRead(newEditDef, (char *)NULL, TRUE, NULL))
if (!DBCellRead(newEditDef, (char *)NULL, TRUE, FALSE, NULL))
return FALSE;
DBReComputeBbox(newEditDef);

View File

@ -1491,7 +1491,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
/* magic .mag layout file. */
defMacro = DBCellNewDef(token, (char *)NULL);
defMacro->cd_flags &= ~CDNOTFOUND;
if (!DBCellRead(defMacro, (char *)NULL, TRUE, NULL))
if (!DBCellRead(defMacro, (char *)NULL, TRUE, FALSE, NULL))
{
LefError(DEF_ERROR, "Cell %s is not defined. Maybe you "
"have not read the corresponding LEF file?\n",

View File

@ -789,7 +789,7 @@ SimCellTileSrFunc(scx, fp)
if (!DBDescendSubcell(scx->scx_use, fp->tf_xmask))
return 0;
if ((def->cd_flags & CDAVAILABLE) == 0)
if (!DBCellRead(def, (char *) NULL, TRUE, NULL)) return 0;
if (!DBCellRead(def, (char *) NULL, TRUE, FALSE, NULL)) return 0;
context.tc_scx = scx;
context.tc_filter = fp;

View File

@ -95,7 +95,7 @@ WindUnload(surfaceID)
for (mw = windTopWindow; mw != NULL; mw = mw->w_nextWindow)
if (mw->w_surfaceID == surfaceID)
DBWloadWindow(mw, (char *)NULL, TRUE, FALSE);
DBWloadWindow(mw, (char *)NULL, TRUE, FALSE, FALSE);
}
/*