mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-10-06 09:53:00 +02:00
Corrected an error in LEF write in which sticky labels that declare
the label to be attached to a non-contact type when the label is actually over a contact are not handled correctly when checking if multiple labels should belong to the same port record.
This commit is contained in:
+17
-1
@@ -1612,8 +1612,24 @@ lefWriteMacro(def, f, scale, setback, pinonly, toplayer, domaster)
|
||||
if (!(tlab->lab_flags & PORT_VISITED))
|
||||
if (tlab->lab_port == idx)
|
||||
{
|
||||
TileTypeBitMask lmask;
|
||||
TileTypeBitMask lmask, smask;
|
||||
TTMaskSetOnlyType(&lmask, tlab->lab_type);
|
||||
|
||||
/* If label is a "sticky" label, then contacts with the */
|
||||
/* type as residue must be added to the layer mask. */
|
||||
if (tlab->lab_flags & LABEL_STICKY)
|
||||
{
|
||||
for (ttype = TT_TECHDEPBASE; ttype < DBNumTypes; ttype++)
|
||||
{
|
||||
if (DBIsContact(ttype))
|
||||
{
|
||||
DBFullResidueMask(ttype, &smask);
|
||||
if (TTMaskHasType(&smask, tlab->lab_type))
|
||||
TTMaskSetType(&lmask, ttype);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pNum = DBPlane(tlab->lab_type);
|
||||
if (DBSrPaintArea((Tile *)NULL, lc.lefYank->cd_planes[pNum],
|
||||
&tlab->lab_rect, &lmask,
|
||||
|
||||
Reference in New Issue
Block a user