Corrected an issue where a device was given the wrong type due to
ambiguity in the tech file and therefore also in the .ext file. This is easy to resolve and it was only necessary to change the type after finding the tile belonging to the device. There are pathological cases where this might still go wrong, like defining a "short" device name for metal resistors on any plane; then, if a "short" device overlaps something on another plane, it might be given the wrong type. Avoiding all ambiguity would require adding an extra item to "device" lines in the .ext file output; the short plane name would be most efficient.
This commit is contained in:
parent
3667b348e8
commit
65f034777e
|
|
@ -821,8 +821,14 @@ extOutputNodes(nodeList, outFile)
|
|||
* For a net to be shorted to itself is not an error.
|
||||
* NOTE: Potentially the unique name could be removed
|
||||
* here and save ext2spice the trouble.
|
||||
*
|
||||
* Also: If "extresist" is being run in the same
|
||||
* pass, then don't print an error, because
|
||||
* electrical shorts are meaningless in an R-C
|
||||
* extraction.
|
||||
*/
|
||||
if ((portname != NULL) &&
|
||||
(!(ExtOptions & EXT_DORESISTANCE)) &&
|
||||
(ll->ll_attr == LL_PORTATTR) &&
|
||||
(strcmp(ll->ll_label->lab_text, portname)))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1371,7 +1371,7 @@ ResExtractNet(node, resisdata, cellname)
|
|||
* the reason, rewrite the tptr->thisDev and local thisDev records
|
||||
* to match the actual device at the location.
|
||||
*/
|
||||
thisDev->type = tptr->thisDev->rs_ttype;
|
||||
tptr->thisDev->rs_ttype = thisDev->type;
|
||||
for (devptr = ExtCurStyle->exts_device[thisDev->type]; devptr;
|
||||
devptr = devptr->exts_next)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -465,6 +465,12 @@ ResAddDevPlumbing(
|
|||
|
||||
tile = PlaneGetHint(plane);
|
||||
GOTOPOINT(tile, &(thisDev->area.r_ll));
|
||||
if (TiGetTypeExact(tile) == TT_SPACE)
|
||||
{
|
||||
TxError("Bad device location at (%d %d). There is nothing here.\n",
|
||||
thisDev->area.r_ll.p_x, thisDev->area.r_ll.p_y);
|
||||
return;
|
||||
}
|
||||
PlaneSetHint(plane, tile);
|
||||
|
||||
if (IsSplit(tile))
|
||||
|
|
|
|||
Loading…
Reference in New Issue