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
|
// 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.
|
// 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;
|
SCH_CONNECTION* conn = aSubgraph->m_driver_connection;
|
||||||
std::vector<CONNECTION_SUBGRAPH*> search_list;
|
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
|
// Recurse onto this neighbor in case it needs to re-propagate
|
||||||
neighbor->m_dirty = true;
|
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
|
* If this subgraph contains hierarchical links, this method will descent the
|
||||||
* hierarchy and propagate the connectivity across all linked sheets.
|
* 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
|
* Search for a matching bus member inside a bus connection
|
||||||
|
|
Loading…
Reference in New Issue