Merge branch 'master' into magic-8.2
This commit is contained in:
commit
c17a546a75
|
|
@ -606,7 +606,7 @@ efBuildDevice(def, class, type, r, argc, argv)
|
||||||
Dev *newdev, devtmp;
|
Dev *newdev, devtmp;
|
||||||
DevParam *newparm, *devp, *sparm;
|
DevParam *newparm, *devp, *sparm;
|
||||||
char ptype, *pptr, **av;
|
char ptype, *pptr, **av;
|
||||||
char devhash[24];
|
char devhash[64];
|
||||||
int argstart = 1; /* start of terminal list in argv[] */
|
int argstart = 1; /* start of terminal list in argv[] */
|
||||||
bool hasModel = strcmp(type, "None") ? TRUE : FALSE;
|
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 */
|
/* 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);
|
he = HashFind(&def->def_devs, devhash);
|
||||||
newdev = (Dev *)HashGetValue(he);
|
newdev = (Dev *)HashGetValue(he);
|
||||||
if (newdev)
|
if (newdev)
|
||||||
|
|
|
||||||
|
|
@ -1686,6 +1686,7 @@ extOutputDevices(def, transList, outFile)
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
|
if (devptr == NULL) break; /* Bad device */
|
||||||
nsd = devptr->exts_deviceSDCount;
|
nsd = devptr->exts_deviceSDCount;
|
||||||
for (termcount = 0; termcount < nsd; termcount++)
|
for (termcount = 0; termcount < nsd; termcount++)
|
||||||
{
|
{
|
||||||
|
|
@ -1726,6 +1727,7 @@ extOutputDevices(def, transList, outFile)
|
||||||
devptr = extDevFindMatch(devptr, t);
|
devptr = extDevFindMatch(devptr, t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (termcount == nsd) break; /* All terminals accounted for */
|
||||||
}
|
}
|
||||||
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 */
|
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 */
|
/* It is not an error condition to have more terminals */
|
||||||
/* than the minimum. */
|
/* 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.
|
* Output the transistor record.
|
||||||
|
|
@ -2912,7 +2919,8 @@ extResistorTileFunc(tile, pNum)
|
||||||
|
|
||||||
extEnumTilePerim(tile, mask, pNum, extSpecialPerimFunc, (ClientData)FALSE);
|
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;
|
if (devptr != NULL) extTransRec.tr_devrec = devptr;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -778,6 +778,20 @@ lefWriteMacro(def, f, scale, hide)
|
||||||
else
|
else
|
||||||
boundary = def->cd_bbox;
|
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 */
|
/* Write position and size information */
|
||||||
|
|
||||||
fprintf(f, " ORIGIN %.4f %.4f ;\n",
|
fprintf(f, " ORIGIN %.4f %.4f ;\n",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue