More meaningful names in Anabatic::NetBuilder. Use of isTwoMetals().

This commit is contained in:
Jean-Paul Chaput 2017-12-19 00:28:38 +01:00
parent f87bcf717c
commit a75c77626c
2 changed files with 15 additions and 10 deletions

View File

@ -192,6 +192,7 @@ namespace Anabatic {
, _routingPadAutoSegments() , _routingPadAutoSegments()
, _toFixSegments () , _toFixSegments ()
, _degree (0) , _degree (0)
, _isTwoMetals (false)
{ } { }
@ -226,10 +227,11 @@ namespace Anabatic {
} }
NetBuilder& NetBuilder::startFrom ( AnabaticEngine* anbt, Hook* fromHook, AutoContact* sourceContact ) NetBuilder& NetBuilder::setStartHook ( AnabaticEngine* anbt, Hook* fromHook, AutoContact* sourceContact )
{ {
clear(); clear();
_isTwoMetals = anbt->getConfiguration()->isTwoMetals();
_sourceContact = sourceContact; _sourceContact = sourceContact;
_fromHook = fromHook; _fromHook = fromHook;
@ -381,13 +383,13 @@ namespace Anabatic {
{ {
cdebug_log(145,1) << "NetBuilder::construct() [" << _connexity.connexity << "] in " << _gcell << endl; cdebug_log(145,1) << "NetBuilder::construct() [" << _connexity.connexity << "] in " << _gcell << endl;
if (_gcell->isMatrix()) { if (not isTwoMetals()) {
_southWestContact = NULL; _southWestContact = NULL;
_northEastContact = NULL; _northEastContact = NULL;
} }
if (not _gcell->isAnalog()) { if (not _gcell->isAnalog()) {
if (not _gcell->isMatrix() and not _sourceContact) _fromHook = NULL; if (isTwoMetals() and not _sourceContact) _fromHook = NULL;
switch ( _connexity.connexity ) { switch ( _connexity.connexity ) {
case Conn_1G_1Pad: case Conn_1G_1Pad:
@ -2044,7 +2046,7 @@ namespace Anabatic {
++connecteds; ++connecteds;
segmentFound = true; segmentFound = true;
startFrom( anabatic, hook, NULL ); setStartHook( anabatic, hook, NULL );
if (getStateG() == 1) { if (getStateG() == 1) {
if ( (lowestGCell == NULL) or (*getGCell() < *lowestGCell) ) { if ( (lowestGCell == NULL) or (*getGCell() < *lowestGCell) ) {
cdebug_log(145,0) << "Potential starting GCell " << getGCell() << endl; cdebug_log(145,0) << "Potential starting GCell " << getGCell() << endl;
@ -2072,9 +2074,9 @@ namespace Anabatic {
} }
cdebug_tabw(145,-1); cdebug_tabw(145,-1);
if (startHook == NULL) { startFrom(anabatic,NULL,NULL).singleGCell(anabatic,net); cdebug_tabw(145,-1); return; } if (startHook == NULL) { setStartHook(anabatic,NULL,NULL).singleGCell(anabatic,net); cdebug_tabw(145,-1); return; }
startFrom( anabatic, startHook, NULL ); setStartHook( anabatic, startHook, NULL );
cdebug_log(145,0) << endl; cdebug_log(145,0) << endl;
cdebug_log(145,0) << "--------~~~~=={o}==~~~~--------" << endl; cdebug_log(145,0) << "--------~~~~=={o}==~~~~--------" << endl;
cdebug_log(145,0) << endl; cdebug_log(145,0) << endl;
@ -2086,7 +2088,7 @@ namespace Anabatic {
_forks.pop(); _forks.pop();
while ( sourceHook ) { while ( sourceHook ) {
startFrom( anabatic, sourceHook, sourceContact ); setStartHook( anabatic, sourceHook, sourceContact );
construct(); construct();
sourceHook = _forks.getFrom(); sourceHook = _forks.getFrom();

View File

@ -141,10 +141,11 @@ namespace Anabatic {
NetBuilder (); NetBuilder ();
virtual ~NetBuilder (); virtual ~NetBuilder ();
void clear (); void clear ();
inline bool isTwoMetals () const;
inline unsigned int getDegree () const; inline unsigned int getDegree () const;
inline void setDegree ( unsigned int degree ); inline void setDegree ( unsigned int degree );
void fixSegments (); void fixSegments ();
NetBuilder& startFrom ( AnabaticEngine* NetBuilder& setStartHook ( AnabaticEngine*
, Hook* fromHook , Hook* fromHook
, AutoContact* sourceContact=NULL ); , AutoContact* sourceContact=NULL );
void construct (); void construct ();
@ -308,6 +309,7 @@ namespace Anabatic {
map<Component*,AutoSegment*> _routingPadAutoSegments; map<Component*,AutoSegment*> _routingPadAutoSegments;
vector<AutoSegment*> _toFixSegments; vector<AutoSegment*> _toFixSegments;
unsigned int _degree; unsigned int _degree;
bool _isTwoMetals;
// Sort classes. // Sort classes.
public: public:
@ -345,6 +347,7 @@ namespace Anabatic {
}; };
inline bool NetBuilder::isTwoMetals () const { return _isTwoMetals; }
inline unsigned int NetBuilder::getDegree () const { return _degree; } inline unsigned int NetBuilder::getDegree () const { return _degree; }
inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; } inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; }
inline NetBuilder::UConnexity& NetBuilder::getConnexity () { return _connexity; } inline NetBuilder::UConnexity& NetBuilder::getConnexity () { return _connexity; }