Bug in topology management switch in NetBuilder::construct().
* Bug: In NetBuilder::construct(), the xG_xM1 topologies where wrongly redirected towards xG_1M1, so only one M1 was connected, all others left floating. Now direct them towards xG_xM1_xM3. * Bug: In NetBuilderHybridVH, activate topology management for 2G_1M1.
This commit is contained in:
parent
b65e6f83ff
commit
b8cd4264bd
|
@ -719,7 +719,7 @@ namespace Anabatic {
|
||||||
case Conn_2G_6M1:
|
case Conn_2G_6M1:
|
||||||
case Conn_2G_7M1:
|
case Conn_2G_7M1:
|
||||||
case Conn_2G_8M1:
|
case Conn_2G_8M1:
|
||||||
case Conn_2G_9M1:
|
case Conn_2G_9M1: _do_xG_xM1_xM3(); break;
|
||||||
case Conn_3G_1M1: if (_do_xG_1M1()) break;
|
case Conn_3G_1M1: if (_do_xG_1M1()) break;
|
||||||
case Conn_3G_2M1:
|
case Conn_3G_2M1:
|
||||||
case Conn_3G_3M1:
|
case Conn_3G_3M1:
|
||||||
|
@ -731,7 +731,7 @@ namespace Anabatic {
|
||||||
case Conn_3G_9M1:
|
case Conn_3G_9M1:
|
||||||
case Conn_3G_2M3:
|
case Conn_3G_2M3:
|
||||||
case Conn_3G_3M3:
|
case Conn_3G_3M3:
|
||||||
case Conn_3G_4M3:
|
case Conn_3G_4M3: _do_xG_xM1_xM3(); break;
|
||||||
case Conn_4G_1M1: if (_do_xG_1M1()) break;
|
case Conn_4G_1M1: if (_do_xG_1M1()) break;
|
||||||
case Conn_4G_2M1:
|
case Conn_4G_2M1:
|
||||||
case Conn_4G_3M1:
|
case Conn_4G_3M1:
|
||||||
|
|
|
@ -86,7 +86,7 @@ namespace Anabatic {
|
||||||
cdebug_log(145,0) << rp << endl;
|
cdebug_log(145,0) << rp << endl;
|
||||||
|
|
||||||
const Layer* rpLayer = rp->getLayer();
|
const Layer* rpLayer = rp->getLayer();
|
||||||
const Layer* viaLayer = Session::getDContactLayer();
|
//const Layer* viaLayer = Session::getDContactLayer();
|
||||||
DbU::Unit viaSide = Session::getDContactWidth();
|
DbU::Unit viaSide = Session::getDContactWidth();
|
||||||
Point position = rp->getCenter();
|
Point position = rp->getCenter();
|
||||||
AutoContact* rpContact = AutoContactTerminal::create( gcell, rp, rpLayer, position, viaSide, viaSide );
|
AutoContact* rpContact = AutoContactTerminal::create( gcell, rp, rpLayer, position, viaSide, viaSide );
|
||||||
|
@ -215,6 +215,17 @@ namespace Anabatic {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool NetBuilderHybridVH::_do_2G_1M1 ()
|
||||||
|
{
|
||||||
|
cdebug_log(145,1) << getTypeName() << "::_do_2G_1M1()" << endl;
|
||||||
|
|
||||||
|
doRp_xG_1M1( getRoutingPads()[0] );
|
||||||
|
|
||||||
|
cdebug_tabw(145,-1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool NetBuilderHybridVH::doRp_xG_xM1_xM3 ( const vector<RoutingPad*>& rps )
|
bool NetBuilderHybridVH::doRp_xG_xM1_xM3 ( const vector<RoutingPad*>& rps )
|
||||||
{
|
{
|
||||||
cdebug_log(145,1) << getTypeName() << "::doRp_xG_xM1()" << endl;
|
cdebug_log(145,1) << getTypeName() << "::doRp_xG_xM1()" << endl;
|
||||||
|
@ -396,8 +407,6 @@ namespace Anabatic {
|
||||||
else
|
else
|
||||||
doRp_xG_1M1( rpsM1[0] );
|
doRp_xG_1M1( rpsM1[0] );
|
||||||
|
|
||||||
Pin* pin = dynamic_cast<Pin*>( rpM2->getOccurrence().getEntity() );
|
|
||||||
Pin::AccessDirection pinDir = pin->getAccessDirection();
|
|
||||||
AutoContact* rpContact = doRp_AccessNorthSouthPin( getGCell(), rpM2 );
|
AutoContact* rpContact = doRp_AccessNorthSouthPin( getGCell(), rpM2 );
|
||||||
AutoContact* rpM1Contact = doRp_Access( getGCell(), rpsM1.front(), NoFlags );
|
AutoContact* rpM1Contact = doRp_Access( getGCell(), rpsM1.front(), NoFlags );
|
||||||
AutoContact* turn1 = AutoContactTurn::create( getGCell(), getNet(), Session::getContactLayer(0) );
|
AutoContact* turn1 = AutoContactTurn::create( getGCell(), getNet(), Session::getContactLayer(0) );
|
||||||
|
@ -511,7 +520,6 @@ namespace Anabatic {
|
||||||
|
|
||||||
|
|
||||||
bool NetBuilderHybridVH::_do_1G_1M1 () { return false; }
|
bool NetBuilderHybridVH::_do_1G_1M1 () { return false; }
|
||||||
bool NetBuilderHybridVH::_do_2G_1M1 () { return false; }
|
|
||||||
// bool NetBuilderHybridVH::_do_xG_1Pad () { return false; }
|
// bool NetBuilderHybridVH::_do_xG_1Pad () { return false; }
|
||||||
// bool NetBuilderHybridVH::_do_xG_xM2 () { return false; }
|
// bool NetBuilderHybridVH::_do_xG_xM2 () { return false; }
|
||||||
// bool NetBuilderHybridVH::_do_1G_1M3 () { return false; }
|
// bool NetBuilderHybridVH::_do_1G_1M3 () { return false; }
|
||||||
|
|
Loading…
Reference in New Issue