Corrected an error in the the extSubtreeFunc() routine, that is
supposed to pull "sticky labels" into the cumulative flattened layout. Because it failed to check for the "sticky" flag, it would copy all labels, causing extraction time to go exponential as the number of labels in the design increases. Based on this correction, the extHierConnectFunc1() routine should be able to be optimized by stopping the search for sticky labels on the first non-sticky label, since extSubtreeFunc() ensures that all sticky labels come first in the label list.
This commit is contained in:
parent
1a774e92d1
commit
d755e4400a
|
|
@ -291,7 +291,12 @@ extHierConnectFunc1(oneTile, ha)
|
|||
// node only describes a single point.
|
||||
|
||||
for (lab = cumDef->cd_labels; lab; lab = lab->lab_next)
|
||||
if (GEO_TOUCH(&r, &lab->lab_rect) && (lab->lab_flags & LABEL_STICKY))
|
||||
|
||||
// All sticky labels are at the front of the list in cumDef, so
|
||||
// stop when we see the first non-sticky label.
|
||||
if (!(lab->lab_flags & LABEL_STICKY)) break;
|
||||
|
||||
if (GEO_TOUCH(&r, &lab->lab_rect))
|
||||
if (TTMaskHasType(connected, lab->lab_type))
|
||||
{
|
||||
HashTable *table = &ha->ha_connHash;
|
||||
|
|
|
|||
|
|
@ -766,6 +766,8 @@ extSubtreeFunc(scx, ha)
|
|||
|
||||
for (lab = cumDef->cd_labels; lab ; lab = lab->lab_next)
|
||||
{
|
||||
if (!(lab->lab_flags & LABEL_STICKY)) continue;
|
||||
|
||||
n = sizeof (Label) + strlen(lab->lab_text)
|
||||
- sizeof lab->lab_text + 1;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue