Merge branch 'devel_anabatic' of ssh://bop-t/users/largo2/git/coriolis into devel_anabatic

Conflicts:
	anabatic/src/GCell.cpp
	anabatic/src/anabatic/GCell.h

In GCell, attribute _contacts becomes _gcontacts.
Small indentation problems.
This commit is contained in:
Jean-Paul Chaput 2016-07-18 14:57:58 +02:00
commit 18641c31c2
2 changed files with 44 additions and 0 deletions

View File

@ -836,6 +836,39 @@ namespace Anabatic {
}
void GCell::setXY ( DbU::Unit x, DbU::Unit y )
{
UpdateSession::open();
_xmin = x;
_ymin = y;
UpdateSession::close();
}
void GCell::updateContactsPosition ()
{
UpdateSession::open();
DbU::Unit xc = (getXMax() + getXMin())/2;
DbU::Unit yc = (getYMax() + getYMin())/2;
for (vector<Contact*>::iterator it = _gcontacts.begin(); it != _gcontacts.end(); it++){
for ( Component* c : (*it)->getSlaveComponents() ){
Horizontal* h = dynamic_cast<Horizontal*>(c);
Vertical* v = dynamic_cast<Vertical*> (c);
if (h){
//if (h->getY() == (*it)->getY()) h->setY(yc);
h->setY(yc);
} else if (v) {
//if (v->getX() == (*it)->getX()) v->setX(xc);
v->setX(xc);
}
}
(*it)->setX(xc);
(*it)->setY(yc);
}
UpdateSession::close();
}
Contact* GCell::getGContact ( Net* net )
{

View File

@ -24,10 +24,16 @@
#include "hurricane/Name.h"
#include "hurricane/Box.h"
#include "hurricane/Cell.h"
#include "hurricane/Component.h"
#include "hurricane/Horizontal.h"
#include "hurricane/Vertical.h"
#include "hurricane/ExtensionGo.h"
namespace Hurricane {
class Contact;
class RoutingPad;
class Component;
class Horizontal;
class Vertical;
}
#include "anabatic/Edge.h"
#include "anabatic/AutoSegments.h"
@ -52,6 +58,9 @@ namespace Anabatic {
using Hurricane::Contact;
using Hurricane::RoutingPad;
using Hurricane::Cell;
using Hurricane::Component;
using Hurricane::Horizontal;
using Hurricane::Vertical;
class AnabaticEngine;
class GCell;
@ -160,6 +169,8 @@ namespace Anabatic {
Contact* getGContact ( Net* );
inline const vector<Contact*>& getGContacts () const;
bool unrefContact ( Contact* );
void setXY ( DbU::Unit x, DbU::Unit y );
void updateContactsPosition ();
void cleanupGlobal ();
// Detailed routing functions.
bool hasFreeTrack ( size_t depth, float reserve ) const;