Suppress all static attributes & methods from Anabatic::NetBuilder.

This commit is contained in:
Jean-Paul Chaput 2017-12-17 12:51:04 +01:00
parent 4c57b0651a
commit e17a50ca0b
2 changed files with 54 additions and 71 deletions

View File

@ -92,18 +92,6 @@ namespace Anabatic {
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Class : "NetBuilder". // Class : "NetBuilder".
map<Component*,AutoSegment*> NetBuilder::_routingPadAutoSegments;
vector<AutoSegment*> NetBuilder::_toFixSegments;
unsigned int NetBuilder::_degree = 0;
map<Component*,AutoSegment*>& NetBuilder::getRpLookup ()
{ return _routingPadAutoSegments; }
void NetBuilder::clearRpLookup ()
{ _routingPadAutoSegments.clear(); }
void NetBuilder::getPositions ( Component* anchor, Point& source, Point& target ) void NetBuilder::getPositions ( Component* anchor, Point& source, Point& target )
{ {
@ -187,35 +175,23 @@ namespace Anabatic {
} }
void NetBuilder::fixSegments ()
{
for ( size_t i=0 ; i<_toFixSegments.size() ; ++i )
_toFixSegments[i]->setFlags( AutoSegment::SegFixed );
_toFixSegments.clear();
}
void NetBuilder::init ( unsigned int degree )
{
_degree = degree;
_toFixSegments.clear();
}
NetBuilder::NetBuilder () NetBuilder::NetBuilder ()
: _forks () : _forks ()
, _connexity () , _connexity ()
, _topology (0) , _topology (0)
, _gcell (NULL) , _gcell (NULL)
, _sourceContact (NULL) , _sourceContact (NULL)
, _southWestContact(NULL) , _southWestContact (NULL)
, _northEastContact(NULL) , _northEastContact (NULL)
, _fromHook (NULL) , _fromHook (NULL)
, _easts () , _easts ()
, _wests () , _wests ()
, _norths () , _norths ()
, _souths () , _souths ()
, _routingPads () , _routingPads ()
, _routingPadAutoSegments()
, _toFixSegments ()
, _degree (0)
{ } { }
@ -228,14 +204,24 @@ namespace Anabatic {
_southWestContact = NULL; _southWestContact = NULL;
_northEastContact = NULL; _northEastContact = NULL;
_fromHook = NULL; _fromHook = NULL;
_easts .clear(); _easts .clear();
_wests .clear(); _wests .clear();
_norths .clear(); _norths .clear();
_souths .clear(); _souths .clear();
_routingPads.clear(); _routingPads .clear();
_toFixSegments .clear();
_routingPadAutoSegments.clear();
} }
void NetBuilder::fixSegments ()
{
for ( size_t i=0 ; i<_toFixSegments.size() ; ++i )
_toFixSegments[i]->setFlags( AutoSegment::SegFixed );
_toFixSegments.clear();
}
NetBuilder& NetBuilder::startFrom ( AnabaticEngine* anbt, Hook* fromHook, AutoContact* sourceContact ) NetBuilder& NetBuilder::startFrom ( AnabaticEngine* anbt, Hook* fromHook, AutoContact* sourceContact )
{ {
clear(); clear();
@ -2653,11 +2639,8 @@ namespace Anabatic {
Hook* sourceHook = NULL; Hook* sourceHook = NULL;
AutoContact* sourceContact = NULL; AutoContact* sourceContact = NULL;
RoutingPads routingPads = net->getRoutingPads();
clearRpLookup(); size_t degree = routingPads.getSize();
RoutingPads routingPads = net->getRoutingPads();
size_t degree = routingPads.getSize();
if (degree == 0) { if (degree == 0) {
cmess2 << Warning("Net \"%s\" do not have any RoutingPad (ignored)." cmess2 << Warning("Net \"%s\" do not have any RoutingPad (ignored)."
@ -2676,7 +2659,7 @@ namespace Anabatic {
size_t unconnecteds = 0; size_t unconnecteds = 0;
size_t connecteds = 0; size_t connecteds = 0;
init( degree ); setDegree( degree );
cdebug_log(145,0) << "Start RoutingPad Ring" << endl; cdebug_log(145,0) << "Start RoutingPad Ring" << endl;
for ( RoutingPad* startRp : routingPads ) { for ( RoutingPad* startRp : routingPads ) {
@ -2745,7 +2728,6 @@ namespace Anabatic {
cdebug_log(145,0) << "Popping (to) " << sourceContact << endl; cdebug_log(145,0) << "Popping (to) " << sourceContact << endl;
} }
clearRpLookup();
Session::revalidate(); Session::revalidate();
//Breakpoint::stop( 0, "After construct" ); //Breakpoint::stop( 0, "After construct" );

View File

@ -122,8 +122,6 @@ namespace Anabatic {
public: public:
template< typename BuilderT > template< typename BuilderT >
static void load ( AnabaticEngine*, Net* ); static void load ( AnabaticEngine*, Net* );
static void init ( unsigned int degree );
static void fixSegments ();
static void getPositions ( Component* anchor, Point& source, Point& target ); static void getPositions ( Component* anchor, Point& source, Point& target );
static uint64_t checkRoutingPadSize ( Component* anchor ); static uint64_t checkRoutingPadSize ( Component* anchor );
static Hook* getSegmentOppositeHook ( Hook* hook ); static Hook* getSegmentOppositeHook ( Hook* hook );
@ -132,6 +130,8 @@ namespace Anabatic {
NetBuilder (); NetBuilder ();
virtual ~NetBuilder (); virtual ~NetBuilder ();
void clear (); void clear ();
inline void setDegree ( unsigned int degree );
void fixSegments ();
NetBuilder& startFrom ( AnabaticEngine* NetBuilder& startFrom ( AnabaticEngine*
, Hook* fromHook , Hook* fromHook
, AutoContact* sourceContact=NULL ); , AutoContact* sourceContact=NULL );
@ -142,14 +142,13 @@ namespace Anabatic {
inline GCell* getGCell () const; inline GCell* getGCell () const;
inline ForkStack& getForks (); inline ForkStack& getForks ();
inline vector<RoutingPad*>& getRoutingPads (); inline vector<RoutingPad*>& getRoutingPads ();
static map<Component*,AutoSegment*>& getRpLookup (); inline map<Component*,AutoSegment*>& getRpLookup ();
inline unsigned int getTopology () const; inline unsigned int getTopology () const;
inline Hook* north ( size_t i=0 ) const; inline Hook* north ( size_t i=0 ) const;
inline Hook* south ( size_t i=0 ) const; inline Hook* south ( size_t i=0 ) const;
inline Hook* east ( size_t i=0 ) const; inline Hook* east ( size_t i=0 ) const;
inline Hook* west ( size_t i=0 ) const; inline Hook* west ( size_t i=0 ) const;
inline void setBothCornerContacts ( AutoContact* ); inline void setBothCornerContacts ( AutoContact* );
static void clearRpLookup ();
bool push ( Hook* to, AutoContact* contact, uint64_t flags=0 ); bool push ( Hook* to, AutoContact* contact, uint64_t flags=0 );
virtual void doRp_AutoContacts ( GCell*, Component*, AutoContact*& source, AutoContact*& target, uint64_t flags ) = 0; virtual void doRp_AutoContacts ( GCell*, Component*, AutoContact*& source, AutoContact*& target, uint64_t flags ) = 0;
virtual AutoContact* doRp_Access ( GCell*, Component*, uint64_t flags ) = 0; virtual AutoContact* doRp_Access ( GCell*, Component*, uint64_t flags ) = 0;
@ -270,9 +269,6 @@ namespace Anabatic {
// Attributes. // Attributes.
private: private:
static map<Component*,AutoSegment*> _routingPadAutoSegments;
static vector<AutoSegment*> _toFixSegments;
static unsigned int _degree;
ForkStack _forks; ForkStack _forks;
UConnexity _connexity; UConnexity _connexity;
unsigned int _topology; unsigned int _topology;
@ -287,6 +283,9 @@ namespace Anabatic {
vector<Hook*> _norths; vector<Hook*> _norths;
vector<Hook*> _souths; vector<Hook*> _souths;
vector<RoutingPad*> _routingPads; vector<RoutingPad*> _routingPads;
map<Component*,AutoSegment*> _routingPadAutoSegments;
vector<AutoSegment*> _toFixSegments;
unsigned int _degree;
// Sort classes. // Sort classes.
public: public:
@ -324,18 +323,20 @@ namespace Anabatic {
}; };
inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; } inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; }
inline ForkStack& NetBuilder::getForks () { return _forks; } inline ForkStack& NetBuilder::getForks () { return _forks; }
inline unsigned int NetBuilder::getStateG () const { return _connexity.fields.globals; } inline unsigned int NetBuilder::getStateG () const { return _connexity.fields.globals; }
inline GCell* NetBuilder::getGCell () const { return _gcell; } inline GCell* NetBuilder::getGCell () const { return _gcell; }
inline Net* NetBuilder::getNet () const { return _net; } inline Net* NetBuilder::getNet () const { return _net; }
inline unsigned int NetBuilder::getTopology () const { return _topology; } inline unsigned int NetBuilder::getTopology () const { return _topology; }
inline vector<RoutingPad*>& NetBuilder::getRoutingPads () { return _routingPads; } inline vector<RoutingPad*>& NetBuilder::getRoutingPads () { return _routingPads; }
inline Hook* NetBuilder::north ( size_t i ) const { return (i<_norths.size()) ? _norths[i] : NULL; } inline map<Component*,AutoSegment*>& NetBuilder::getRpLookup () { return _routingPadAutoSegments; }
inline Hook* NetBuilder::south ( size_t i ) const { return (i<_souths.size()) ? _souths[i] : NULL; } inline Hook* NetBuilder::north ( size_t i ) const { return (i<_norths.size()) ? _norths[i] : NULL; }
inline Hook* NetBuilder::east ( size_t i ) const { return (i<_easts .size()) ? _easts [i] : NULL; } inline Hook* NetBuilder::south ( size_t i ) const { return (i<_souths.size()) ? _souths[i] : NULL; }
inline Hook* NetBuilder::west ( size_t i ) const { return (i<_wests .size()) ? _wests [i] : NULL; } inline Hook* NetBuilder::east ( size_t i ) const { return (i<_easts .size()) ? _easts [i] : NULL; }
inline void NetBuilder::setBothCornerContacts ( AutoContact* ac ) { _southWestContact = _northEastContact = ac; } inline Hook* NetBuilder::west ( size_t i ) const { return (i<_wests .size()) ? _wests [i] : NULL; }
inline void NetBuilder::setDegree ( unsigned int degree ) { _degree = degree; }
inline void NetBuilder::setBothCornerContacts ( AutoContact* ac ) { _southWestContact = _northEastContact = ac; }
template< typename BuilderT > template< typename BuilderT >
void NetBuilder::load ( AnabaticEngine* engine, Net* net ) { BuilderT()._load(engine,net); } void NetBuilder::load ( AnabaticEngine* engine, Net* net ) { BuilderT()._load(engine,net); }