diff --git a/VERSION b/VERSION index 2300af08..2bf7e4de 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.242 +8.3.243 diff --git a/database/DBundo.c b/database/DBundo.c index 7a64dce4..255c3af8 100644 --- a/database/DBundo.c +++ b/database/DBundo.c @@ -480,6 +480,7 @@ DBUndoPutLabel(cellDef, lab) lup->lue_just = lab->lab_just; lup->lue_type = lab->lab_type; lup->lue_flags = lab->lab_flags; + lup->lue_port = lab->lab_port; lup->lue_font = lab->lab_font; lup->lue_size = lab->lab_size; lup->lue_rotate = lab->lab_rotate; @@ -523,6 +524,7 @@ DBUndoEraseLabel(cellDef, lab) lup->lue_just = lab->lab_just; lup->lue_type = lab->lab_type; lup->lue_flags = lab->lab_flags; + lup->lue_port = lab->lab_port; lup->lue_font = lab->lab_font; lup->lue_size = lab->lab_size; lup->lue_rotate = lab->lab_rotate; diff --git a/extract/ExtHard.c b/extract/ExtHard.c index f938dedf..32b12c96 100644 --- a/extract/ExtHard.c +++ b/extract/ExtHard.c @@ -341,6 +341,7 @@ extHardSetLabel(scx, reg, arg) GeoTransRect(&scx->scx_trans, &r, &newlab->lab_rect); newlab->lab_type = oldlab->lab_type; newlab->lab_flags = oldlab->lab_flags; + newlab->lab_port = oldlab->lab_port; text = oldlab->lab_text; /* Don't care, really, which orientation the label has */ @@ -423,6 +424,7 @@ extHardGenerateLabel(scx, reg, arg) /* Mark this as a generated label; may or may not be useful */ newlab->lab_flags = LABEL_GENERATE; + newlab->lab_port = 0; /* Construct the text of the new label */ dstp = newlab->lab_text; diff --git a/extract/ExtSubtree.c b/extract/ExtSubtree.c index 5067224f..f013c968 100644 --- a/extract/ExtSubtree.c +++ b/extract/ExtSubtree.c @@ -793,6 +793,7 @@ extSubtreeFunc(scx, ha) newlab->lab_type = lab->lab_type; newlab->lab_rect = lab->lab_rect; newlab->lab_flags = lab->lab_flags; + newlab->lab_port = lab->lab_port; strcpy(newlab->lab_text, lab->lab_text); newlab->lab_next = cumUse->cu_def->cd_labels; diff --git a/lef/lefRead.c b/lef/lefRead.c index 64e35ced..4155e674 100644 --- a/lef/lefRead.c +++ b/lef/lefRead.c @@ -1331,10 +1331,13 @@ LefReadPort(lefMacro, f, pinName, pinNum, pinDir, pinUse, pinShape, oscale, lann if (strcmp(newlab->lab_text, pinName)) LefError(LEF_ERROR, "Internal error: Can't find the label!\n"); else + { /* Make this a port, and make it a sticky label so that */ /* it is guaranteed to be on the layer on which it is defined */ - newlab->lab_flags = pinNum | pinUse | pinDir | pinShape | + newlab->lab_flags = pinUse | pinDir | pinShape | PORT_DIR_MASK | LABEL_STICKY; + newlab->lab_port = pinNum; + } } /* If lanno is non-NULL then the first rectangle in the LEF */ /* port list is used to modify it. All other LEF port geometry */ @@ -1628,8 +1631,9 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported) needRect = FALSE; lab->lab_flags &= ~(PORT_USE_MASK | PORT_DIR_MASK | PORT_CLASS_MASK | PORT_SHAPE_MASK); - lab->lab_flags |= pinNum | pinUse | pinDir | pinShape | + lab->lab_flags |= pinUse | pinDir | pinShape | PORT_DIR_MASK; + lab->lab_port = pinNum; } } }