Fix topological bug in NetBuilderHV::_do_xG_1PinM2().
* Bug: In NetBuilderHV::_do_xG_1PinM2(), when the M2 pin is on the *east* side and there are three globals, we must swap htee1 & htee2. Otherwise, we the SW/NE contacts do not have the right numbers of free segments attach. * New: In AnabaticEngine::cleanupGlobal(), check that no global component is left behind, sure sign that the global to detailed building went wrong.
This commit is contained in:
parent
445f5161da
commit
444cc777e5
|
@ -1074,6 +1074,17 @@ namespace Anabatic {
|
|||
UpdateSession::open();
|
||||
for ( GCell* gcell : _gcells ) gcell->cleanupGlobal();
|
||||
UpdateSession::close();
|
||||
|
||||
for ( Net* net : getCell()->getNets() ) {
|
||||
for ( Component* component : net->getComponents() ) {
|
||||
if (getConfiguration()->isGLayer(component->getLayer())) {
|
||||
cerr << Error( "AnabaticEngine::cleanupGlobal(): Remaining global routing,\n"
|
||||
" %s"
|
||||
, getString(component).c_str()
|
||||
) << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -863,6 +863,9 @@ namespace Anabatic {
|
|||
AutoContact* htee2 = AutoContactHTee::create( getGCell(), getNet(), Session::getContactLayer(1) );
|
||||
AutoSegment::create( htee1, htee2, Flags::Horizontal );
|
||||
|
||||
if (pinDir == Pin::AccessDirection::EAST)
|
||||
std::swap( htee1, htee2 );
|
||||
|
||||
setSouthWestContact( htee1 );
|
||||
setNorthEastContact( htee2 );
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue