Commit 7a92a96a authored by jean-pierre charras's avatar jean-pierre charras

netlist: refinements in net name selection

parent 75e613f6
...@@ -405,7 +405,7 @@ static NETLIST_OBJECT* FindBestNetName( NETLIST_OBJECT_LIST& aLabelItemBuffer ) ...@@ -405,7 +405,7 @@ static NETLIST_OBJECT* FindBestNetName( NETLIST_OBJECT_LIST& aLabelItemBuffer )
} }
if( candidate_priority > item_priority ) if( candidate_priority > item_priority )
{ {
item = candidate; item = candidate;
item_priority = candidate_priority; item_priority = candidate_priority;
} }
else if( candidate_priority == item_priority ) else if( candidate_priority == item_priority )
...@@ -414,15 +414,29 @@ static NETLIST_OBJECT* FindBestNetName( NETLIST_OBJECT_LIST& aLabelItemBuffer ) ...@@ -414,15 +414,29 @@ static NETLIST_OBJECT* FindBestNetName( NETLIST_OBJECT_LIST& aLabelItemBuffer )
// because they have no sheetpath as prefix name // because they have no sheetpath as prefix name
// for other labels, we select them before by sheet deep order // for other labels, we select them before by sheet deep order
// because the actual name is /sheetpath/label // because the actual name is /sheetpath/label
// and for a given path lenght, by alphabetic order // and for a given path length, by alphabetic order
if( ( item_priority < PRIO_MAX-1 ) && // Not a global label or pin label
candidate->m_SheetList.Path().Length() < item->m_SheetList.Path().Length() ) if( item_priority >= PRIO_MAX-1 ) // global label or pin label
{ { // selection by alphabetic order:
item = candidate; if( candidate->m_Label.Cmp( item->m_Label ) < 0 )
item = candidate;
} }
else if( candidate->m_Label.Cmp( item->m_Label ) < 0 ) else // not global: names are prefixed by their sheetpath
{ {
item = candidate; // use name defined in highter hierarchical sheet
// (i.e. shorter path because paths are /<timestamp1>/<timestamp2>/...
// and timestamp = 8 letters.
if( candidate->m_SheetList.Path().Length() < item->m_SheetList.Path().Length() )
{
item = candidate;
}
else if( candidate->m_SheetList.Path().Length() == item->m_SheetList.Path().Length() )
{
// For labels on sheets having an equivalent deep in hierarchy, use
// alphabetic label name order:
if( candidate->m_Label.Cmp( item->m_Label ) < 0 )
item = candidate;
}
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment