Merge branch 'master' into magic-8.2

This commit is contained in:
Tim Edwards 2019-11-14 03:00:05 -05:00
commit c17a546a75
3 changed files with 25 additions and 3 deletions

View File

@ -606,7 +606,7 @@ efBuildDevice(def, class, type, r, argc, argv)
Dev *newdev, devtmp;
DevParam *newparm, *devp, *sparm;
char ptype, *pptr, **av;
char devhash[24];
char devhash[64];
int argstart = 1; /* start of terminal list in argv[] */
bool hasModel = strcmp(type, "None") ? TRUE : FALSE;
@ -749,7 +749,7 @@ efBuildDevice(def, class, type, r, argc, argv)
/* Determine if this device has been seen before */
sprintf(devhash, "%dx%d", r->r_xbot, r->r_ybot);
sprintf(devhash, "%dx%d%s", r->r_xbot, r->r_ybot, type);
he = HashFind(&def->def_devs, devhash);
newdev = (Dev *)HashGetValue(he);
if (newdev)

View File

@ -1686,6 +1686,7 @@ extOutputDevices(def, transList, outFile)
while (TRUE)
{
if (devptr == NULL) break; /* Bad device */
nsd = devptr->exts_deviceSDCount;
for (termcount = 0; termcount < nsd; termcount++)
{
@ -1726,6 +1727,7 @@ extOutputDevices(def, transList, outFile)
devptr = extDevFindMatch(devptr, t);
break;
}
if (termcount == nsd) break; /* All terminals accounted for */
}
if (termcount == nsd) break; /* All terminals accounted for */
if (devptr == deventry) break; /* No other device records available */
@ -1771,6 +1773,11 @@ extOutputDevices(def, transList, outFile)
/* It is not an error condition to have more terminals */
/* than the minimum. */
}
if (devptr == NULL) {
TxError("Warning: No matching extraction type for device at (%d %d)\n",
reg->treg_tile->ti_ll.p_x, reg->treg_tile->ti_ll.p_y);
continue;
}
/*
* Output the transistor record.
@ -2912,7 +2919,8 @@ extResistorTileFunc(tile, pNum)
extEnumTilePerim(tile, mask, pNum, extSpecialPerimFunc, (ClientData)FALSE);
if (extSpecialBounds[0] == NULL) devptr = devptr->exts_next;
if (extSpecialBounds[0] != NULL) break;
devptr = devptr->exts_next;
}
if (devptr != NULL) extTransRec.tr_devrec = devptr;

View File

@ -778,6 +778,20 @@ lefWriteMacro(def, f, scale, hide)
else
boundary = def->cd_bbox;
/* If a bounding box has been declared with the FIXED_BBOX property */
/* then it takes precedence over def->cd_bbox. */
if (def->cd_flags & CDFIXEDBBOX)
{
char *propvalue;
bool found;
propvalue = (char *)DBPropGet(def, "FIXED_BBOX", &found);
if (found)
sscanf(propvalue, "%d %d %d %d", &boundary.r_xbot,
&boundary.r_ybot, &boundary.r_xtop, &boundary.r_ytop);
}
/* Write position and size information */
fprintf(f, " ORIGIN %.4f %.4f ;\n",