Ensure that all subgraphs are processed
Don't skip subgraphs just because they do not have off-sheet connections on their hierarchical ports
This commit is contained in:
parent
7da98a447a
commit
bd6d0b6cb6
|
@ -1534,7 +1534,17 @@ void CONNECTION_GRAPH::buildConnectionGraph( std::function<void( SCH_ITEM* )>* a
|
|||
}
|
||||
|
||||
// This call will handle descending the hierarchy and updating child subgraphs
|
||||
propagateToNeighbors( subgraph );
|
||||
propagateToNeighbors( subgraph, false );
|
||||
}
|
||||
|
||||
// After processing and allowing some to be skipped if they have hierarchical
|
||||
// pins connecting both up and down the hierarchy, we check to see if any of them
|
||||
// have not been processed. This would indicate that they do not have off-sheet connections
|
||||
// but we still need to handle the subgraph
|
||||
for( CONNECTION_SUBGRAPH* subgraph : m_driver_subgraphs )
|
||||
{
|
||||
if( subgraph->m_dirty )
|
||||
propagateToNeighbors( subgraph, true );
|
||||
}
|
||||
|
||||
// Handle buses that have been linked together somewhere by member (net) connections.
|
||||
|
@ -1798,7 +1808,7 @@ void CONNECTION_GRAPH::assignNetCodesToBus( SCH_CONNECTION* aConnection )
|
|||
}
|
||||
|
||||
|
||||
void CONNECTION_GRAPH::propagateToNeighbors( CONNECTION_SUBGRAPH* aSubgraph )
|
||||
void CONNECTION_GRAPH::propagateToNeighbors( CONNECTION_SUBGRAPH* aSubgraph, bool aForce )
|
||||
{
|
||||
SCH_CONNECTION* conn = aSubgraph->m_driver_connection;
|
||||
std::vector<CONNECTION_SUBGRAPH*> search_list;
|
||||
|
@ -1970,7 +1980,7 @@ void CONNECTION_GRAPH::propagateToNeighbors( CONNECTION_SUBGRAPH* aSubgraph )
|
|||
|
||||
// Recurse onto this neighbor in case it needs to re-propagate
|
||||
neighbor->m_dirty = true;
|
||||
propagateToNeighbors( neighbor );
|
||||
propagateToNeighbors( neighbor, aForce );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -446,8 +446,11 @@ private:
|
|||
*
|
||||
* If this subgraph contains hierarchical links, this method will descent the
|
||||
* hierarchy and propagate the connectivity across all linked sheets.
|
||||
*
|
||||
* @param aSubgraph is the subgraph being processed
|
||||
* @param aForce prevents this routine from skipping subgraphs
|
||||
*/
|
||||
void propagateToNeighbors( CONNECTION_SUBGRAPH* aSubgraph );
|
||||
void propagateToNeighbors( CONNECTION_SUBGRAPH* aSubgraph, bool aForce );
|
||||
|
||||
/**
|
||||
* Search for a matching bus member inside a bus connection
|
||||
|
|
Loading…
Reference in New Issue