some cleaning again
This commit is contained in:
parent
68f3501700
commit
98778c4dbd
|
@ -81,25 +81,25 @@ Box Cell::getBoundingBox() const
|
||||||
return _boundingBox;
|
return _boundingBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Cell::IsLeaf() const
|
bool Cell::isLeaf() const
|
||||||
// **********************
|
// **********************
|
||||||
{
|
{
|
||||||
return _instanceMap.IsEmpty();
|
return _instanceMap.IsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Cell::IsCalledBy(Cell* cell) const
|
bool Cell::isCalledBy(Cell* cell) const
|
||||||
// ************************************
|
// ************************************
|
||||||
{
|
{
|
||||||
for_each_instance(instance, cell->getInstances()) {
|
for_each_instance(instance, cell->getInstances()) {
|
||||||
Cell* masterCell = instance->getMasterCell();
|
Cell* masterCell = instance->getMasterCell();
|
||||||
if (masterCell == this) return true;
|
if (masterCell == this) return true;
|
||||||
if (IsCalledBy(masterCell)) return true;
|
if (isCalledBy(masterCell)) return true;
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::SetName(const Name& name)
|
void Cell::setName(const Name& name)
|
||||||
// *********************************
|
// *********************************
|
||||||
{
|
{
|
||||||
if (name != _name) {
|
if (name != _name) {
|
||||||
|
@ -115,19 +115,19 @@ void Cell::SetName(const Name& name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::SetAbutmentBox(const Box& abutmentBox)
|
void Cell::setAbutmentBox(const Box& abutmentBox)
|
||||||
// **********************************************
|
// **********************************************
|
||||||
{
|
{
|
||||||
if (abutmentBox != _abutmentBox) {
|
if (abutmentBox != _abutmentBox) {
|
||||||
if (!_abutmentBox.isEmpty() &&
|
if (!_abutmentBox.isEmpty() &&
|
||||||
(abutmentBox.isEmpty() || !abutmentBox.contains(_abutmentBox)))
|
(abutmentBox.isEmpty() || !abutmentBox.contains(_abutmentBox)))
|
||||||
_Unfit(_abutmentBox);
|
_unfit(_abutmentBox);
|
||||||
_abutmentBox = abutmentBox;
|
_abutmentBox = abutmentBox;
|
||||||
_Fit(_abutmentBox);
|
_fit(_abutmentBox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::FlattenNets(bool buildRings)
|
void Cell::flattenNets(bool buildRings)
|
||||||
// ************************************
|
// ************************************
|
||||||
{
|
{
|
||||||
OpenUpdateSession ();
|
OpenUpdateSession ();
|
||||||
|
@ -157,7 +157,7 @@ void Cell::FlattenNets(bool buildRings)
|
||||||
|
|
||||||
for_each_occurrence ( plugOccurrence, hyperNet.getLeafPlugOccurrences() ) {
|
for_each_occurrence ( plugOccurrence, hyperNet.getLeafPlugOccurrences() ) {
|
||||||
currentRP = createRoutingPad ( net, plugOccurrence );
|
currentRP = createRoutingPad ( net, plugOccurrence );
|
||||||
currentRP->Materialize ();
|
currentRP->materialize ();
|
||||||
if ( buildRings ) {
|
if ( buildRings ) {
|
||||||
if ( previousRP ) {
|
if ( previousRP ) {
|
||||||
currentRP->getBodyHook()->Attach ( previousRP->getBodyHook() );
|
currentRP->getBodyHook()->Attach ( previousRP->getBodyHook() );
|
||||||
|
@ -196,20 +196,20 @@ void Cell::FlattenNets(bool buildRings)
|
||||||
CloseUpdateSession ();
|
CloseUpdateSession ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::Materialize()
|
void Cell::materialize()
|
||||||
// *********************
|
// *********************
|
||||||
{
|
{
|
||||||
for_each_instance(instance, getInstances()) instance->Materialize(); end_for;
|
for_each_instance(instance, getInstances()) instance->materialize(); end_for;
|
||||||
for_each_net(net, getNets()) net->Materialize(); end_for;
|
for_each_net(net, getNets()) net->materialize(); end_for;
|
||||||
for_each_marker(marker, getMarkers()) marker->Materialize(); end_for;
|
for_each_marker(marker, getMarkers()) marker->materialize(); end_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::Unmaterialize()
|
void Cell::unmaterialize()
|
||||||
// ***********************
|
// ***********************
|
||||||
{
|
{
|
||||||
for_each_instance(instance, getInstances()) instance->Unmaterialize(); end_for;
|
for_each_instance(instance, getInstances()) instance->unmaterialize(); end_for;
|
||||||
for_each_net(net, getNets()) net->Unmaterialize(); end_for;
|
for_each_net(net, getNets()) net->unmaterialize(); end_for;
|
||||||
for_each_marker(marker, getMarkers()) marker->Unmaterialize(); end_for;
|
for_each_marker(marker, getMarkers()) marker->unmaterialize(); end_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::_postCreate()
|
void Cell::_postCreate()
|
||||||
|
@ -263,13 +263,13 @@ Record* Cell::_getRecord() const
|
||||||
record->Add(getSlot("Markers", &_markerSet));
|
record->Add(getSlot("Markers", &_markerSet));
|
||||||
record->Add(getSlot("AbutmentBox", &_abutmentBox));
|
record->Add(getSlot("AbutmentBox", &_abutmentBox));
|
||||||
record->Add(getSlot("BoundingBox", &_boundingBox));
|
record->Add(getSlot("BoundingBox", &_boundingBox));
|
||||||
record->Add(getSlot("IsTerminal", &_isTerminal));
|
record->Add(getSlot("isTerminal", &_isTerminal));
|
||||||
record->Add(getSlot("IsFlattenLeaf", &_isFlattenLeaf));
|
record->Add(getSlot("isFlattenLeaf", &_isFlattenLeaf));
|
||||||
}
|
}
|
||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::_Fit(const Box& box)
|
void Cell::_fit(const Box& box)
|
||||||
// ****************************
|
// ****************************
|
||||||
{
|
{
|
||||||
if (box.isEmpty()) return;
|
if (box.isEmpty()) return;
|
||||||
|
@ -277,12 +277,12 @@ void Cell::_Fit(const Box& box)
|
||||||
if (_boundingBox.contains(box)) return;
|
if (_boundingBox.contains(box)) return;
|
||||||
_boundingBox.merge(box);
|
_boundingBox.merge(box);
|
||||||
for_each_instance(instance, getSlaveInstances()) {
|
for_each_instance(instance, getSlaveInstances()) {
|
||||||
instance->getCell()->_Fit(instance->getTransformation().getBox(box));
|
instance->getCell()->_fit(instance->getTransformation().getBox(box));
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::_Unfit(const Box& box)
|
void Cell::_unfit(const Box& box)
|
||||||
// ******************************
|
// ******************************
|
||||||
{
|
{
|
||||||
if (box.isEmpty()) return;
|
if (box.isEmpty()) return;
|
||||||
|
@ -290,12 +290,12 @@ void Cell::_Unfit(const Box& box)
|
||||||
if (!_boundingBox.isConstrainedBy(box)) return;
|
if (!_boundingBox.isConstrainedBy(box)) return;
|
||||||
_boundingBox.makeEmpty();
|
_boundingBox.makeEmpty();
|
||||||
for_each_instance(instance, getSlaveInstances()) {
|
for_each_instance(instance, getSlaveInstances()) {
|
||||||
instance->getCell()->_Unfit(instance->getTransformation().getBox(box));
|
instance->getCell()->_unfit(instance->getTransformation().getBox(box));
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::_AddSlaveEntity(Entity* entity, Entity* slaveEntity)
|
void Cell::_addSlaveEntity(Entity* entity, Entity* slaveEntity)
|
||||||
// ************************************************************************
|
// ************************************************************************
|
||||||
{
|
{
|
||||||
assert(entity->getCell() == this);
|
assert(entity->getCell() == this);
|
||||||
|
@ -303,7 +303,7 @@ void Cell::_AddSlaveEntity(Entity* entity, Entity* slaveEntity)
|
||||||
_slaveEntityMap.insert(pair<Entity*,Entity*>(entity,slaveEntity));
|
_slaveEntityMap.insert(pair<Entity*,Entity*>(entity,slaveEntity));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::_RemoveSlaveEntity(Entity* entity, Entity* slaveEntity)
|
void Cell::_removeSlaveEntity(Entity* entity, Entity* slaveEntity)
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
{
|
{
|
||||||
assert(entity->getCell() == this);
|
assert(entity->getCell() == this);
|
||||||
|
@ -361,10 +361,10 @@ Instance* Cell::InstanceMap::_getNextElement(Instance* instance) const
|
||||||
return instance->_getNextOfCellInstanceMap();
|
return instance->_getNextOfCellInstanceMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::InstanceMap::_SetNextElement(Instance* instance, Instance* nextInstance) const
|
void Cell::InstanceMap::_setNextElement(Instance* instance, Instance* nextInstance) const
|
||||||
// **************************************************************************************
|
// **************************************************************************************
|
||||||
{
|
{
|
||||||
instance->_SetNextOfCellInstanceMap(nextInstance);
|
instance->_setNextOfCellInstanceMap(nextInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -391,10 +391,10 @@ Instance* Cell::SlaveInstanceSet::_getNextElement(Instance* slaveInstance) const
|
||||||
return slaveInstance->_getNextOfCellSlaveInstanceSet();
|
return slaveInstance->_getNextOfCellSlaveInstanceSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::SlaveInstanceSet::_SetNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const
|
void Cell::SlaveInstanceSet::_setNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const
|
||||||
// ****************************************************************************************************
|
// ****************************************************************************************************
|
||||||
{
|
{
|
||||||
slaveInstance->_SetNextOfCellSlaveInstanceSet(nextSlaveInstance);
|
slaveInstance->_setNextOfCellSlaveInstanceSet(nextSlaveInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -427,10 +427,10 @@ Net* Cell::NetMap::_getNextElement(Net* net) const
|
||||||
return net->_getNextOfCellNetMap();
|
return net->_getNextOfCellNetMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::NetMap::_SetNextElement(Net* net, Net* nextNet) const
|
void Cell::NetMap::_setNextElement(Net* net, Net* nextNet) const
|
||||||
// *************************************************************
|
// *************************************************************
|
||||||
{
|
{
|
||||||
net->_SetNextOfCellNetMap(nextNet);
|
net->_setNextOfCellNetMap(nextNet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -462,10 +462,10 @@ Pin* Cell::PinMap::_getNextElement(Pin* pin) const
|
||||||
return pin->_getNextOfCellPinMap();
|
return pin->_getNextOfCellPinMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::PinMap::_SetNextElement(Pin* pin, Pin* nextPin) const
|
void Cell::PinMap::_setNextElement(Pin* pin, Pin* nextPin) const
|
||||||
// *************************************************************
|
// *************************************************************
|
||||||
{
|
{
|
||||||
pin->_SetNextOfCellPinMap(nextPin);
|
pin->_setNextOfCellPinMap(nextPin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -497,10 +497,10 @@ Slice* Cell::SliceMap::_getNextElement(Slice* slice) const
|
||||||
return slice->_getNextOfCellSliceMap();
|
return slice->_getNextOfCellSliceMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::SliceMap::_SetNextElement(Slice* slice, Slice* nextSlice) const
|
void Cell::SliceMap::_setNextElement(Slice* slice, Slice* nextSlice) const
|
||||||
// ***********************************************************************
|
// ***********************************************************************
|
||||||
{
|
{
|
||||||
slice->_SetNextOfCellSliceMap(nextSlice);
|
slice->_setNextOfCellSliceMap(nextSlice);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -527,10 +527,10 @@ Marker* Cell::MarkerSet::_getNextElement(Marker* marker) const
|
||||||
return marker->_getNextOfCellMarkerSet();
|
return marker->_getNextOfCellMarkerSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cell::MarkerSet::_SetNextElement(Marker* marker, Marker* nextMarker) const
|
void Cell::MarkerSet::_setNextElement(Marker* marker, Marker* nextMarker) const
|
||||||
// ****************************************************************************
|
// ****************************************************************************
|
||||||
{
|
{
|
||||||
marker->_SetNextOfCellMarkerSet(nextMarker);
|
marker->_setNextOfCellMarkerSet(nextMarker);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
|
@ -62,7 +62,7 @@ class Cell : public Entity {
|
||||||
public: virtual Name _getKey(Instance* instance) const;
|
public: virtual Name _getKey(Instance* instance) const;
|
||||||
public: virtual unsigned _getHashValue(Name name) const;
|
public: virtual unsigned _getHashValue(Name name) const;
|
||||||
public: virtual Instance* _getNextElement(Instance* instance) const;
|
public: virtual Instance* _getNextElement(Instance* instance) const;
|
||||||
public: virtual void _SetNextElement(Instance* instance, Instance* nextInstance) const;
|
public: virtual void _setNextElement(Instance* instance, Instance* nextInstance) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ class Cell : public Entity {
|
||||||
|
|
||||||
public: virtual unsigned _getHashValue(Instance* slaveInstance) const;
|
public: virtual unsigned _getHashValue(Instance* slaveInstance) const;
|
||||||
public: virtual Instance* _getNextElement(Instance* slaveInstance) const;
|
public: virtual Instance* _getNextElement(Instance* slaveInstance) const;
|
||||||
public: virtual void _SetNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const;
|
public: virtual void _setNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class Cell : public Entity {
|
||||||
public: virtual Name _getKey(Net* net) const;
|
public: virtual Name _getKey(Net* net) const;
|
||||||
public: virtual unsigned _getHashValue(Name name) const;
|
public: virtual unsigned _getHashValue(Name name) const;
|
||||||
public: virtual Net* _getNextElement(Net* net) const;
|
public: virtual Net* _getNextElement(Net* net) const;
|
||||||
public: virtual void _SetNextElement(Net* net, Net* nextNet) const;
|
public: virtual void _setNextElement(Net* net, Net* nextNet) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class Cell : public Entity {
|
||||||
public: virtual Name _getKey(Pin* pin) const;
|
public: virtual Name _getKey(Pin* pin) const;
|
||||||
public: virtual unsigned _getHashValue(Name name) const;
|
public: virtual unsigned _getHashValue(Name name) const;
|
||||||
public: virtual Pin* _getNextElement(Pin* pin) const;
|
public: virtual Pin* _getNextElement(Pin* pin) const;
|
||||||
public: virtual void _SetNextElement(Pin* pin, Pin* nextPin) const;
|
public: virtual void _setNextElement(Pin* pin, Pin* nextPin) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ class Cell : public Entity {
|
||||||
public: virtual const Layer* _getKey(Slice* slice) const;
|
public: virtual const Layer* _getKey(Slice* slice) const;
|
||||||
public: virtual unsigned _getHashValue(const Layer* layer) const;
|
public: virtual unsigned _getHashValue(const Layer* layer) const;
|
||||||
public: virtual Slice* _getNextElement(Slice* slice) const;
|
public: virtual Slice* _getNextElement(Slice* slice) const;
|
||||||
public: virtual void _SetNextElement(Slice* slice, Slice* nextSlice) const;
|
public: virtual void _setNextElement(Slice* slice, Slice* nextSlice) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ class Cell : public Entity {
|
||||||
|
|
||||||
public: virtual unsigned _getHashValue(Marker* marker) const;
|
public: virtual unsigned _getHashValue(Marker* marker) const;
|
||||||
public: virtual Marker* _getNextElement(Marker* marker) const;
|
public: virtual Marker* _getNextElement(Marker* marker) const;
|
||||||
public: virtual void _SetNextElement(Marker* marker, Marker* nextMarker) const;
|
public: virtual void _setNextElement(Marker* marker, Marker* nextMarker) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -181,14 +181,14 @@ class Cell : public Entity {
|
||||||
public: Cell* _getNextOfLibraryCellMap() const {return _nextOfLibraryCellMap;};
|
public: Cell* _getNextOfLibraryCellMap() const {return _nextOfLibraryCellMap;};
|
||||||
public: Cell* _getNextOfSymbolCellSet() const {return _nextOfSymbolCellSet;};
|
public: Cell* _getNextOfSymbolCellSet() const {return _nextOfSymbolCellSet;};
|
||||||
|
|
||||||
public: void _SetNextOfLibraryCellMap(Cell* cell) {_nextOfLibraryCellMap = cell;};
|
public: void _setNextOfLibraryCellMap(Cell* cell) {_nextOfLibraryCellMap = cell;};
|
||||||
public: void _SetNextOfSymbolCellSet(Cell* cell) {_nextOfSymbolCellSet = cell;};
|
public: void _setNextOfSymbolCellSet(Cell* cell) {_nextOfSymbolCellSet = cell;};
|
||||||
|
|
||||||
public: void _Fit(const Box& box);
|
public: void _fit(const Box& box);
|
||||||
public: void _Unfit(const Box& box);
|
public: void _unfit(const Box& box);
|
||||||
|
|
||||||
public: void _AddSlaveEntity(Entity* entity, Entity* slaveEntity);
|
public: void _addSlaveEntity(Entity* entity, Entity* slaveEntity);
|
||||||
public: void _RemoveSlaveEntity(Entity* entity, Entity* slaveEntity);
|
public: void _removeSlaveEntity(Entity* entity, Entity* slaveEntity);
|
||||||
public: void _getSlaveEntities(SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
|
public: void _getSlaveEntities(SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
|
||||||
public: void _getSlaveEntities(Entity* entity, SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
|
public: void _getSlaveEntities(Entity* entity, SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
|
||||||
|
|
||||||
|
@ -262,23 +262,23 @@ class Cell : public Entity {
|
||||||
// Predicates
|
// Predicates
|
||||||
// **********
|
// **********
|
||||||
|
|
||||||
public: bool IsCalledBy(Cell* cell) const;
|
public: bool isCalledBy(Cell* cell) const;
|
||||||
public: bool IsTerminal() const {return _isTerminal;};
|
public: bool isTerminal() const {return _isTerminal;};
|
||||||
public: bool IsFlattenLeaf() const {return _isFlattenLeaf;};
|
public: bool isFlattenLeaf() const {return _isFlattenLeaf;};
|
||||||
public: bool IsLeaf() const;
|
public: bool isLeaf() const;
|
||||||
public: bool IsPad() const {return _isPad;};
|
public: bool isPad() const {return _isPad;};
|
||||||
|
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: void SetName(const Name& name);
|
public: void setName(const Name& name);
|
||||||
public: void SetAbutmentBox(const Box& abutmentBox);
|
public: void setAbutmentBox(const Box& abutmentBox);
|
||||||
public: void SetTerminal(bool isTerminal) {_isTerminal = isTerminal;};
|
public: void setTerminal(bool isTerminal) {_isTerminal = isTerminal;};
|
||||||
public: void SetFlattenLeaf(bool isFlattenLeaf) {_isFlattenLeaf = isFlattenLeaf;};
|
public: void setFlattenLeaf(bool isFlattenLeaf) {_isFlattenLeaf = isFlattenLeaf;};
|
||||||
public: void SetPad(bool isPad) {_isPad = isPad;};
|
public: void setPad(bool isPad) {_isPad = isPad;};
|
||||||
public: void FlattenNets(bool buildRings=true);
|
public: void flattenNets(bool buildRings=true);
|
||||||
public: void Materialize();
|
public: void materialize();
|
||||||
public: void Unmaterialize();
|
public: void unmaterialize();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -314,12 +314,12 @@ ComponentFilter Component::getIsUnderFilter(const Box& area)
|
||||||
return Component_IsUnderFilter(area);
|
return Component_IsUnderFilter(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Component::Materialize()
|
void Component::materialize()
|
||||||
// **************************
|
// **************************
|
||||||
{
|
{
|
||||||
// trace << "Materialize() - " << this << endl;
|
// trace << "materialize() - " << this << endl;
|
||||||
|
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
Layer* layer = getLayer();
|
Layer* layer = getLayer();
|
||||||
if (cell && layer) {
|
if (cell && layer) {
|
||||||
|
@ -327,23 +327,23 @@ void Component::Materialize()
|
||||||
if (!slice) slice = Slice::_create(cell, layer);
|
if (!slice) slice = Slice::_create(cell, layer);
|
||||||
QuadTree* quadTree = slice->_getQuadTree();
|
QuadTree* quadTree = slice->_getQuadTree();
|
||||||
quadTree->Insert(this);
|
quadTree->Insert(this);
|
||||||
cell->_Fit(quadTree->getBoundingBox());
|
cell->_fit(quadTree->getBoundingBox());
|
||||||
} else {
|
} else {
|
||||||
//cerr << "[WARNING] " << this << " not inserted into QuadTree." << endl;
|
//cerr << "[WARNING] " << this << " not inserted into QuadTree." << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Component::Unmaterialize()
|
void Component::unmaterialize()
|
||||||
// ****************************
|
// ****************************
|
||||||
{
|
{
|
||||||
// trace << "Unmaterializing " << this << endl;
|
// trace << "Unmaterializing " << this << endl;
|
||||||
|
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
Slice* slice = cell->getSlice(getLayer());
|
Slice* slice = cell->getSlice(getLayer());
|
||||||
if (slice) {
|
if (slice) {
|
||||||
cell->_Unfit(getBoundingBox());
|
cell->_unfit(getBoundingBox());
|
||||||
slice->_getQuadTree()->Remove(this);
|
slice->_getQuadTree()->Remove(this);
|
||||||
if (slice->IsEmpty()) slice->_destroy();
|
if (slice->IsEmpty()) slice->_destroy();
|
||||||
}
|
}
|
||||||
|
@ -387,7 +387,7 @@ void Component::_preDestroy()
|
||||||
set<Hook*> masterHookSet;
|
set<Hook*> masterHookSet;
|
||||||
componentSet.insert(this);
|
componentSet.insert(this);
|
||||||
for_each_component(component, getCollection(componentSet)) {
|
for_each_component(component, getCollection(componentSet)) {
|
||||||
component->Unmaterialize();
|
component->unmaterialize();
|
||||||
for_each_hook(hook, component->getHooks()) {
|
for_each_hook(hook, component->getHooks()) {
|
||||||
for_each_hook(hook, hook->getHooks()) {
|
for_each_hook(hook, hook->getHooks()) {
|
||||||
if (hook->IsMaster() && (componentSet.find(hook->getComponent()) == componentSet.end()))
|
if (hook->IsMaster() && (componentSet.find(hook->getComponent()) == componentSet.end()))
|
||||||
|
@ -464,7 +464,7 @@ Record* Component::_getRecord() const
|
||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Component::_SetNet(Net* net)
|
void Component::_setNet(Net* net)
|
||||||
// ******************************
|
// ******************************
|
||||||
{
|
{
|
||||||
if (net != _net) {
|
if (net != _net) {
|
||||||
|
@ -474,7 +474,7 @@ void Component::_SetNet(Net* net)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Component::_SetRubber(Rubber* rubber)
|
void Component::_setRubber(Rubber* rubber)
|
||||||
// ***************************************
|
// ***************************************
|
||||||
{
|
{
|
||||||
if (rubber != _rubber) {
|
if (rubber != _rubber) {
|
||||||
|
|
|
@ -85,8 +85,8 @@ class Component : public Go {
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize();
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize();
|
||||||
public: virtual void Invalidate(bool propagateFlag = true);
|
public: virtual void Invalidate(bool propagateFlag = true);
|
||||||
|
|
||||||
// Filters
|
// Filters
|
||||||
|
@ -105,9 +105,9 @@ class Component : public Go {
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
public: Component* _getNextOfNetComponentSet() const {return _nextOfNetComponentSet;};
|
public: Component* _getNextOfNetComponentSet() const {return _nextOfNetComponentSet;};
|
||||||
|
|
||||||
public: void _SetNet(Net* net);
|
public: void _setNet(Net* net);
|
||||||
public: void _SetRubber(Rubber* rubber);
|
public: void _setRubber(Rubber* rubber);
|
||||||
public: void _SetNextOfNetComponentSet(Component* component) {_nextOfNetComponentSet = component;};
|
public: void _setNextOfNetComponentSet(Component* component) {_nextOfNetComponentSet = component;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -53,8 +53,8 @@ class DataBase : public DBo {
|
||||||
public: virtual string _getString() const;
|
public: virtual string _getString() const;
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
|
|
||||||
public: void _SetTechnology(Technology* technology) {_technology = technology;};
|
public: void _setTechnology(Technology* technology) {_technology = technology;};
|
||||||
public: void _SetRootLibrary(Library* rootLibrary) {_rootLibrary = rootLibrary;};
|
public: void _setRootLibrary(Library* rootLibrary) {_rootLibrary = rootLibrary;};
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ DeepNet* DeepNet::create ( HyperNet& hyperNet )
|
||||||
|
|
||||||
Occurrence rootNetOccurrence = getHyperNetRootNetOccurrence ( hyperNet.getNetOccurrence() );
|
Occurrence rootNetOccurrence = getHyperNetRootNetOccurrence ( hyperNet.getNetOccurrence() );
|
||||||
|
|
||||||
if ( rootNetOccurrence.getMasterCell()->IsFlattenLeaf() ) return NULL;
|
if ( rootNetOccurrence.getMasterCell()->isFlattenLeaf() ) return NULL;
|
||||||
if ( rootNetOccurrence.getPath().IsEmpty() ) return NULL;
|
if ( rootNetOccurrence.getPath().IsEmpty() ) return NULL;
|
||||||
|
|
||||||
DeepNet* deepNet = new DeepNet ( rootNetOccurrence );
|
DeepNet* deepNet = new DeepNet ( rootNetOccurrence );
|
||||||
|
|
|
@ -48,7 +48,7 @@ void Go::_postCreate()
|
||||||
{
|
{
|
||||||
Inherit::_postCreate();
|
Inherit::_postCreate();
|
||||||
|
|
||||||
if (!AutoMaterializationIsDisabled()) Materialize(); // materialized after entire post creation
|
if (!AutoMaterializationIsDisabled()) materialize(); // materialized after entire post creation
|
||||||
}
|
}
|
||||||
|
|
||||||
void Go::_preDestroy()
|
void Go::_preDestroy()
|
||||||
|
@ -57,7 +57,7 @@ void Go::_preDestroy()
|
||||||
// trace << "entering Go::_preDestroy: " << this << endl;
|
// trace << "entering Go::_preDestroy: " << this << endl;
|
||||||
// trace_in();
|
// trace_in();
|
||||||
|
|
||||||
Unmaterialize(); // unmaterialized before starting pre destruction
|
unmaterialize(); // unmaterialized before starting pre destruction
|
||||||
|
|
||||||
Inherit::_preDestroy();
|
Inherit::_preDestroy();
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ class Go : public Entity {
|
||||||
|
|
||||||
public: static bool AutoMaterializationIsDisabled();
|
public: static bool AutoMaterializationIsDisabled();
|
||||||
|
|
||||||
public: bool IsMaterialized() const {return (_quadTree != NULL);};
|
public: bool isMaterialized() const {return (_quadTree != NULL);};
|
||||||
|
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
@ -60,8 +60,8 @@ class Go : public Entity {
|
||||||
public: static void EnableAutoMaterialization();
|
public: static void EnableAutoMaterialization();
|
||||||
public: static void DisableAutoMaterialization();
|
public: static void DisableAutoMaterialization();
|
||||||
|
|
||||||
public: virtual void Materialize() = 0;
|
public: virtual void materialize() = 0;
|
||||||
public: virtual void Unmaterialize() = 0;
|
public: virtual void unmaterialize() = 0;
|
||||||
|
|
||||||
public: virtual void Invalidate(bool propagateFlag = true);
|
public: virtual void Invalidate(bool propagateFlag = true);
|
||||||
// implementation located on file UpdateSession.cpp to access local variables
|
// implementation located on file UpdateSession.cpp to access local variables
|
||||||
|
@ -79,7 +79,7 @@ class Go : public Entity {
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
public: Go* _getNextOfQuadTreeGoSet() const {return _nextOfQuadTreeGoSet;};
|
public: Go* _getNextOfQuadTreeGoSet() const {return _nextOfQuadTreeGoSet;};
|
||||||
|
|
||||||
public: void _SetNextOfQuadTreeGoSet(Go* go) {_nextOfQuadTreeGoSet = go;};
|
public: void _setNextOfQuadTreeGoSet(Go* go) {_nextOfQuadTreeGoSet = go;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -277,8 +277,8 @@ Hook* Hook::Detach()
|
||||||
Component* component = getComponent();
|
Component* component = getComponent();
|
||||||
Rubber* rubber = component->getRubber();
|
Rubber* rubber = component->getRubber();
|
||||||
if (rubber) {
|
if (rubber) {
|
||||||
rubber->_SetHook(previousHook);
|
rubber->_setHook(previousHook);
|
||||||
component->_SetRubber(NULL);
|
component->_setRubber(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// */
|
// */
|
||||||
|
@ -311,7 +311,7 @@ Hook* Hook::Attach(Hook* hook)
|
||||||
if (IsMaster()) {
|
if (IsMaster()) {
|
||||||
Rubber* rubber = hook->getComponent()->getRubber();
|
Rubber* rubber = hook->getComponent()->getRubber();
|
||||||
if (rubber)
|
if (rubber)
|
||||||
getComponent()->_SetRubber(rubber);
|
getComponent()->_setRubber(rubber);
|
||||||
else
|
else
|
||||||
Rubber::_create(this);
|
Rubber::_create(this);
|
||||||
}
|
}
|
||||||
|
@ -320,7 +320,7 @@ Hook* Hook::Attach(Hook* hook)
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hook::_SetNextHook(Hook* hook)
|
void Hook::_setNextHook(Hook* hook)
|
||||||
{
|
{
|
||||||
if (IsMaster())
|
if (IsMaster())
|
||||||
{
|
{
|
||||||
|
|
|
@ -77,7 +77,7 @@ class Hook : public NestedSlotAdapter {
|
||||||
public: Hook* Detach();
|
public: Hook* Detach();
|
||||||
public: Hook* Attach(Hook* hook);
|
public: Hook* Attach(Hook* hook);
|
||||||
public: Hook* Merge(Hook* hook);
|
public: Hook* Merge(Hook* hook);
|
||||||
public: void _SetNextHook(Hook* hook);
|
public: void _setNextHook(Hook* hook);
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
// ******
|
// ******
|
||||||
|
|
|
@ -976,7 +976,7 @@ void HyperNet_LeafPlugOccurrences::Locator::progress()
|
||||||
_netOccurrenceLocator.progress();
|
_netOccurrenceLocator.progress();
|
||||||
Net* net = (Net*)netOccurrence.getEntity();
|
Net* net = (Net*)netOccurrence.getEntity();
|
||||||
Path path = netOccurrence.getPath();
|
Path path = netOccurrence.getPath();
|
||||||
if (!path.IsEmpty() && net->getCell()->IsLeaf())
|
if (!path.IsEmpty() && net->getCell()->isLeaf())
|
||||||
{
|
{
|
||||||
Instance *instance = path.getTailInstance();
|
Instance *instance = path.getTailInstance();
|
||||||
Plug *plug=instance->getPlug(net);
|
Plug *plug=instance->getPlug(net);
|
||||||
|
|
|
@ -178,7 +178,7 @@ Instance::Instance(Cell* cell, const Name& name, Cell* masterCell, const Transfo
|
||||||
if (!_masterCell)
|
if (!_masterCell)
|
||||||
throw Error("Can't create " + _TName("Instance") + " : null master cell");
|
throw Error("Can't create " + _TName("Instance") + " : null master cell");
|
||||||
|
|
||||||
if (secureFlag && _cell->IsCalledBy(_masterCell))
|
if (secureFlag && _cell->isCalledBy(_masterCell))
|
||||||
throw Error("Can't create " + _TName("Instance") + " : cyclic construction");
|
throw Error("Can't create " + _TName("Instance") + " : cyclic construction");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,13 +237,13 @@ Box Instance::getAbutmentBox() const
|
||||||
bool Instance::IsTerminal() const
|
bool Instance::IsTerminal() const
|
||||||
// ******************************
|
// ******************************
|
||||||
{
|
{
|
||||||
return getMasterCell()->IsTerminal();
|
return getMasterCell()->isTerminal();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Instance::IsLeaf() const
|
bool Instance::IsLeaf() const
|
||||||
// **************************
|
// **************************
|
||||||
{
|
{
|
||||||
return getMasterCell()->IsLeaf();
|
return getMasterCell()->isLeaf();
|
||||||
}
|
}
|
||||||
|
|
||||||
InstanceFilter Instance::getIsUnderFilter(const Box& area)
|
InstanceFilter Instance::getIsUnderFilter(const Box& area)
|
||||||
|
@ -288,24 +288,24 @@ InstanceFilter Instance::getIsNotUnplacedFilter()
|
||||||
return !Instance_IsUnplacedFilter();
|
return !Instance_IsUnplacedFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Instance::Materialize()
|
void Instance::materialize()
|
||||||
// *************************
|
// *************************
|
||||||
{
|
{
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
Box boundingBox = getBoundingBox();
|
Box boundingBox = getBoundingBox();
|
||||||
if (!boundingBox.isEmpty()) {
|
if (!boundingBox.isEmpty()) {
|
||||||
QuadTree* quadTree = _cell->_getQuadTree();
|
QuadTree* quadTree = _cell->_getQuadTree();
|
||||||
quadTree->Insert(this);
|
quadTree->Insert(this);
|
||||||
_cell->_Fit(quadTree->getBoundingBox());
|
_cell->_fit(quadTree->getBoundingBox());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Instance::Unmaterialize()
|
void Instance::unmaterialize()
|
||||||
// ***************************
|
// ***************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
_cell->_Unfit(getBoundingBox());
|
_cell->_unfit(getBoundingBox());
|
||||||
_cell->_getQuadTree()->Remove(this);
|
_cell->_getQuadTree()->Remove(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -377,7 +377,7 @@ void Instance::SetMasterCell(Cell* masterCell, bool secureFlag)
|
||||||
if (!masterCell)
|
if (!masterCell)
|
||||||
throw Error("Can't set master : null master cell");
|
throw Error("Can't set master : null master cell");
|
||||||
|
|
||||||
if (secureFlag && _cell->IsCalledBy(masterCell))
|
if (secureFlag && _cell->isCalledBy(masterCell))
|
||||||
throw Error("Can't set master : cyclic construction");
|
throw Error("Can't set master : cyclic construction");
|
||||||
|
|
||||||
list<Plug*> connectedPlugList;
|
list<Plug*> connectedPlugList;
|
||||||
|
@ -409,7 +409,7 @@ void Instance::SetMasterCell(Cell* masterCell, bool secureFlag)
|
||||||
Plug* plug = connectedPlugList.front();
|
Plug* plug = connectedPlugList.front();
|
||||||
Net* masterNet = masterNetList.front();
|
Net* masterNet = masterNetList.front();
|
||||||
_plugMap._Remove(plug);
|
_plugMap._Remove(plug);
|
||||||
plug->_SetMasterNet(masterNet);
|
plug->_setMasterNet(masterNet);
|
||||||
_plugMap._Insert(plug);
|
_plugMap._Insert(plug);
|
||||||
connectedPlugList.pop_front();
|
connectedPlugList.pop_front();
|
||||||
masterNetList.pop_front();
|
masterNetList.pop_front();
|
||||||
|
@ -622,10 +622,10 @@ Plug* Instance::PlugMap::_getNextElement(Plug* plug) const
|
||||||
return plug->_getNextOfInstancePlugMap();
|
return plug->_getNextOfInstancePlugMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Instance::PlugMap::_SetNextElement(Plug* plug, Plug* nextPlug) const
|
void Instance::PlugMap::_setNextElement(Plug* plug, Plug* nextPlug) const
|
||||||
// **********************************************************************
|
// **********************************************************************
|
||||||
{
|
{
|
||||||
plug->_SetNextOfInstancePlugMap(nextPlug);
|
plug->_setNextOfInstancePlugMap(nextPlug);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -658,10 +658,10 @@ SharedPath* Instance::SharedPathMap::_getNextElement(SharedPath* sharedPath) con
|
||||||
return sharedPath->_getNextOfInstanceSharedPathMap();
|
return sharedPath->_getNextOfInstanceSharedPathMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Instance::SharedPathMap::_SetNextElement(SharedPath* sharedPath, SharedPath* nextSharedPath) const
|
void Instance::SharedPathMap::_setNextElement(SharedPath* sharedPath, SharedPath* nextSharedPath) const
|
||||||
// ****************************************************************************************************
|
// ****************************************************************************************************
|
||||||
{
|
{
|
||||||
sharedPath->_SetNextOfInstanceSharedPathMap(nextSharedPath);
|
sharedPath->_setNextOfInstanceSharedPathMap(nextSharedPath);
|
||||||
};
|
};
|
||||||
|
|
||||||
// ****************************************************************************************************
|
// ****************************************************************************************************
|
||||||
|
|
|
@ -65,7 +65,7 @@ class Instance : public Go {
|
||||||
public: virtual const Net* _getKey(Plug* plug) const;
|
public: virtual const Net* _getKey(Plug* plug) const;
|
||||||
public: virtual unsigned _getHashValue(const Net* masterNet) const;
|
public: virtual unsigned _getHashValue(const Net* masterNet) const;
|
||||||
public: virtual Plug* _getNextElement(Plug* plug) const;
|
public: virtual Plug* _getNextElement(Plug* plug) const;
|
||||||
public: virtual void _SetNextElement(Plug* plug, Plug* nextPlug) const;
|
public: virtual void _setNextElement(Plug* plug, Plug* nextPlug) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ class Instance : public Go {
|
||||||
public: virtual const SharedPath* _getKey(SharedPath* sharedPath) const;
|
public: virtual const SharedPath* _getKey(SharedPath* sharedPath) const;
|
||||||
public: virtual unsigned _getHashValue(const SharedPath* tailSharedPath) const;
|
public: virtual unsigned _getHashValue(const SharedPath* tailSharedPath) const;
|
||||||
public: virtual SharedPath* _getNextElement(SharedPath* sharedPath) const;
|
public: virtual SharedPath* _getNextElement(SharedPath* sharedPath) const;
|
||||||
public: virtual void _SetNextElement(SharedPath* sharedPath, SharedPath* nextSharedPath) const;
|
public: virtual void _setNextElement(SharedPath* sharedPath, SharedPath* nextSharedPath) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -143,8 +143,8 @@ class Instance : public Go {
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize();
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize();
|
||||||
public: virtual void Invalidate(bool propagateFlag = true);
|
public: virtual void Invalidate(bool propagateFlag = true);
|
||||||
public: virtual void Translate(const Unit& dx, const Unit& dy);
|
public: virtual void Translate(const Unit& dx, const Unit& dy);
|
||||||
|
|
||||||
|
@ -170,8 +170,8 @@ class Instance : public Go {
|
||||||
public: Instance* _getNextOfCellInstanceMap() const {return _nextOfCellInstanceMap;};
|
public: Instance* _getNextOfCellInstanceMap() const {return _nextOfCellInstanceMap;};
|
||||||
public: Instance* _getNextOfCellSlaveInstanceSet() const {return _nextOfCellSlaveInstanceSet;};
|
public: Instance* _getNextOfCellSlaveInstanceSet() const {return _nextOfCellSlaveInstanceSet;};
|
||||||
|
|
||||||
public: void _SetNextOfCellInstanceMap(Instance* instance) {_nextOfCellInstanceMap = instance;};
|
public: void _setNextOfCellInstanceMap(Instance* instance) {_nextOfCellInstanceMap = instance;};
|
||||||
public: void _SetNextOfCellSlaveInstanceSet(Instance* instance) {_nextOfCellSlaveInstanceSet = instance;};
|
public: void _setNextOfCellSlaveInstanceSet(Instance* instance) {_nextOfCellSlaveInstanceSet = instance;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -237,7 +237,7 @@ template<class Key, class Element> class IntrusiveMap {
|
||||||
Element* element = _array[index];
|
Element* element = _array[index];
|
||||||
while (element) {
|
while (element) {
|
||||||
_array[index] = _getNextElement(element);
|
_array[index] = _getNextElement(element);
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
element = _array[index];
|
element = _array[index];
|
||||||
}
|
}
|
||||||
_array[index] = NULL;
|
_array[index] = NULL;
|
||||||
|
@ -292,11 +292,11 @@ template<class Key, class Element> class IntrusiveMap {
|
||||||
return NULL;
|
return NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
// public: virtual void _SetNextElement(Element* element, Element* nextElement) const = 0; // AD
|
// public: virtual void _setNextElement(Element* element, Element* nextElement) const = 0; // AD
|
||||||
public: virtual void _SetNextElement(Element* element, Element* nextElement) const
|
public: virtual void _setNextElement(Element* element, Element* nextElement) const
|
||||||
// *******************************************************************************
|
// *******************************************************************************
|
||||||
{
|
{
|
||||||
throw Error(_TName("IntrusiveMap") + "::_SetNextElement(...) : should be overrided");
|
throw Error(_TName("IntrusiveMap") + "::_setNextElement(...) : should be overrided");
|
||||||
};
|
};
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
|
@ -373,7 +373,7 @@ template<class Key, class Element> class IntrusiveMap {
|
||||||
{
|
{
|
||||||
if (!_Contains(element)) {
|
if (!_Contains(element)) {
|
||||||
unsigned index = (_getHashValue(_getKey(element)) / 8) % _length;
|
unsigned index = (_getHashValue(_getKey(element)) / 8) % _length;
|
||||||
_SetNextElement(element, _array[index]);
|
_setNextElement(element, _array[index]);
|
||||||
_array[index] = element;
|
_array[index] = element;
|
||||||
_size++;
|
_size++;
|
||||||
_Resize();
|
_Resize();
|
||||||
|
@ -389,15 +389,15 @@ template<class Key, class Element> class IntrusiveMap {
|
||||||
if (currentElement) {
|
if (currentElement) {
|
||||||
if (currentElement == element) {
|
if (currentElement == element) {
|
||||||
_array[index] = _getNextElement(element);
|
_array[index] = _getNextElement(element);
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
_size--;
|
_size--;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
while (_getNextElement(currentElement) && (_getNextElement(currentElement) != element))
|
while (_getNextElement(currentElement) && (_getNextElement(currentElement) != element))
|
||||||
currentElement = _getNextElement(currentElement);
|
currentElement = _getNextElement(currentElement);
|
||||||
if (currentElement && (_getNextElement(currentElement) == element)) {
|
if (currentElement && (_getNextElement(currentElement) == element)) {
|
||||||
_SetNextElement(currentElement, _getNextElement(element));
|
_setNextElement(currentElement, _getNextElement(element));
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
_size--;
|
_size--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ template<class Key, class Element> class IntrusiveMap {
|
||||||
while (element) {
|
while (element) {
|
||||||
Element* nextElement = _getNextElement(element);
|
Element* nextElement = _getNextElement(element);
|
||||||
unsigned newIndex = (_getHashValue(_getKey(element)) / 8) % _length;
|
unsigned newIndex = (_getHashValue(_getKey(element)) / 8) % _length;
|
||||||
_SetNextElement(element, _array[newIndex]);
|
_setNextElement(element, _array[newIndex]);
|
||||||
_array[newIndex] = element;
|
_array[newIndex] = element;
|
||||||
element = nextElement;
|
element = nextElement;
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,7 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
Element* element = _array[index];
|
Element* element = _array[index];
|
||||||
while (element) {
|
while (element) {
|
||||||
_array[index] = _getNextElement(element);
|
_array[index] = _getNextElement(element);
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
element = _array[index];
|
element = _array[index];
|
||||||
}
|
}
|
||||||
_array[index] = NULL;
|
_array[index] = NULL;
|
||||||
|
@ -293,11 +293,11 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
return NULL;
|
return NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
// public: virtual void _SetNextElement(Element* element, Element* nextElement) const = 0; // AD
|
// public: virtual void _setNextElement(Element* element, Element* nextElement) const = 0; // AD
|
||||||
public: virtual void _SetNextElement(Element* element, Element* nextElement) const
|
public: virtual void _setNextElement(Element* element, Element* nextElement) const
|
||||||
// *******************************************************************************
|
// *******************************************************************************
|
||||||
{
|
{
|
||||||
throw Error(_TName("IntrusiveSet") + "::_SetNextElement(...) : should be overrided");
|
throw Error(_TName("IntrusiveSet") + "::_setNextElement(...) : should be overrided");
|
||||||
};
|
};
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
|
@ -374,7 +374,7 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
{
|
{
|
||||||
if (!_Contains(element)) {
|
if (!_Contains(element)) {
|
||||||
unsigned index = (_getHashValue(element) / 8) % _length;
|
unsigned index = (_getHashValue(element) / 8) % _length;
|
||||||
_SetNextElement(element, _array[index]);
|
_setNextElement(element, _array[index]);
|
||||||
_array[index] = element;
|
_array[index] = element;
|
||||||
_size++;
|
_size++;
|
||||||
_Resize();
|
_Resize();
|
||||||
|
@ -390,15 +390,15 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
if (currentElement) {
|
if (currentElement) {
|
||||||
if (currentElement == element) {
|
if (currentElement == element) {
|
||||||
_array[index] = _getNextElement(element);
|
_array[index] = _getNextElement(element);
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
_size--;
|
_size--;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
while (_getNextElement(currentElement) && (_getNextElement(currentElement) != element))
|
while (_getNextElement(currentElement) && (_getNextElement(currentElement) != element))
|
||||||
currentElement = _getNextElement(currentElement);
|
currentElement = _getNextElement(currentElement);
|
||||||
if (currentElement && (_getNextElement(currentElement) == element)) {
|
if (currentElement && (_getNextElement(currentElement) == element)) {
|
||||||
_SetNextElement(currentElement, _getNextElement(element));
|
_setNextElement(currentElement, _getNextElement(element));
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
_size--;
|
_size--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -428,7 +428,7 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
while (element) {
|
while (element) {
|
||||||
Element* nextElement = _getNextElement(element);
|
Element* nextElement = _getNextElement(element);
|
||||||
unsigned newIndex = (_getHashValue(element) / 8) % _length;
|
unsigned newIndex = (_getHashValue(element) / 8) % _length;
|
||||||
_SetNextElement(element, _array[newIndex]);
|
_setNextElement(element, _array[newIndex]);
|
||||||
_array[newIndex] = element;
|
_array[newIndex] = element;
|
||||||
element = nextElement;
|
element = nextElement;
|
||||||
}
|
}
|
||||||
|
@ -444,7 +444,7 @@ template<class Element> class IntrusiveSet : public NestedSlotAdapter {
|
||||||
Element* element = _array[index];
|
Element* element = _array[index];
|
||||||
while (element) {
|
while (element) {
|
||||||
_array[index] = _getNextElement(element);
|
_array[index] = _getNextElement(element);
|
||||||
_SetNextElement(element, NULL);
|
_setNextElement(element, NULL);
|
||||||
element = _array[index];
|
element = _array[index];
|
||||||
}
|
}
|
||||||
_array[index] = NULL;
|
_array[index] = NULL;
|
||||||
|
|
|
@ -87,7 +87,7 @@ void Library::_postCreate()
|
||||||
// ************************
|
// ************************
|
||||||
{
|
{
|
||||||
if (!_library)
|
if (!_library)
|
||||||
_dataBase->_SetRootLibrary(this);
|
_dataBase->_setRootLibrary(this);
|
||||||
else
|
else
|
||||||
_library->_getLibraryMap()._Insert(this);
|
_library->_getLibraryMap()._Insert(this);
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ void Library::_preDestroy()
|
||||||
for_each_library(library, getLibraries()) library->destroy(); end_for;
|
for_each_library(library, getLibraries()) library->destroy(); end_for;
|
||||||
|
|
||||||
if (!_library)
|
if (!_library)
|
||||||
_dataBase->_SetRootLibrary(NULL);
|
_dataBase->_setRootLibrary(NULL);
|
||||||
else
|
else
|
||||||
_library->_getLibraryMap()._Remove(this);
|
_library->_getLibraryMap()._Remove(this);
|
||||||
}
|
}
|
||||||
|
@ -159,10 +159,10 @@ Library* Library::LibraryMap::_getNextElement(Library* library) const
|
||||||
return library->_getNextOfLibraryLibraryMap();
|
return library->_getNextOfLibraryLibraryMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Library::LibraryMap::_SetNextElement(Library* library, Library* nextLibrary) const
|
void Library::LibraryMap::_setNextElement(Library* library, Library* nextLibrary) const
|
||||||
// ************************************************************************************
|
// ************************************************************************************
|
||||||
{
|
{
|
||||||
library->_SetNextOfLibraryLibraryMap(nextLibrary);
|
library->_setNextOfLibraryLibraryMap(nextLibrary);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,10 +195,10 @@ Cell* Library::CellMap::_getNextElement(Cell* cell) const
|
||||||
return cell->_getNextOfLibraryCellMap();
|
return cell->_getNextOfLibraryCellMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Library::CellMap::_SetNextElement(Cell* cell, Cell* nextCell) const
|
void Library::CellMap::_setNextElement(Cell* cell, Cell* nextCell) const
|
||||||
// *********************************************************************
|
// *********************************************************************
|
||||||
{
|
{
|
||||||
cell->_SetNextOfLibraryCellMap(nextCell);
|
cell->_setNextOfLibraryCellMap(nextCell);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ class Library : public DBo {
|
||||||
public: virtual Name _getKey(Library* library) const;
|
public: virtual Name _getKey(Library* library) const;
|
||||||
public: virtual unsigned _getHashValue(Name name) const;
|
public: virtual unsigned _getHashValue(Name name) const;
|
||||||
public: virtual Library* _getNextElement(Library* library) const;
|
public: virtual Library* _getNextElement(Library* library) const;
|
||||||
public: virtual void _SetNextElement(Library* library, Library* nextLibrary) const;
|
public: virtual void _setNextElement(Library* library, Library* nextLibrary) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class Library : public DBo {
|
||||||
public: virtual Name _getKey(Cell* cell) const;
|
public: virtual Name _getKey(Cell* cell) const;
|
||||||
public: virtual unsigned _getHashValue(Name name) const;
|
public: virtual unsigned _getHashValue(Name name) const;
|
||||||
public: virtual Cell* _getNextElement(Cell* cell) const;
|
public: virtual Cell* _getNextElement(Cell* cell) const;
|
||||||
public: virtual void _SetNextElement(Cell* cell, Cell* nextCell) const;
|
public: virtual void _setNextElement(Cell* cell, Cell* nextCell) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ class Library : public DBo {
|
||||||
public: CellMap& _getCellMap() {return _cellMap;};
|
public: CellMap& _getCellMap() {return _cellMap;};
|
||||||
public: Library* _getNextOfLibraryLibraryMap() const {return _nextOfLibraryLibraryMap;};
|
public: Library* _getNextOfLibraryLibraryMap() const {return _nextOfLibraryLibraryMap;};
|
||||||
|
|
||||||
public: void _SetNextOfLibraryLibraryMap(Library* library) {_nextOfLibraryLibraryMap = library;};
|
public: void _setNextOfLibraryLibraryMap(Library* library) {_nextOfLibraryLibraryMap = library;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,23 +27,23 @@ Marker::Marker(Cell* cell)
|
||||||
throw Error("Can't create " + _TName("Marker") + " : null cell");
|
throw Error("Can't create " + _TName("Marker") + " : null cell");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Marker::Materialize()
|
void Marker::materialize()
|
||||||
// ***********************
|
// ***********************
|
||||||
{
|
{
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
QuadTree* quadTree = cell->_getQuadTree();
|
QuadTree* quadTree = cell->_getQuadTree();
|
||||||
quadTree->Insert(this);
|
quadTree->Insert(this);
|
||||||
cell->_Fit(quadTree->getBoundingBox());
|
cell->_fit(quadTree->getBoundingBox());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Marker::Unmaterialize()
|
void Marker::unmaterialize()
|
||||||
// *************************
|
// *************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
cell->_Unfit(getBoundingBox());
|
cell->_unfit(getBoundingBox());
|
||||||
cell->_getQuadTree()->Remove(this);
|
cell->_getQuadTree()->Remove(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,8 +45,8 @@ class Marker : public Go {
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize();
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize();
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
// ******
|
// ******
|
||||||
|
@ -60,7 +60,7 @@ class Marker : public Go {
|
||||||
|
|
||||||
public: Marker* _getNextOfCellMarkerSet() const {return _nextOfCellMarkerSet;};
|
public: Marker* _getNextOfCellMarkerSet() const {return _nextOfCellMarkerSet;};
|
||||||
|
|
||||||
public: void _SetNextOfCellMarkerSet(Marker* marker) {_nextOfCellMarkerSet = marker;};
|
public: void _setNextOfCellMarkerSet(Marker* marker) {_nextOfCellMarkerSet = marker;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -484,28 +484,28 @@ void Net::SetDirection(const Direction& direction)
|
||||||
_direction = direction;
|
_direction = direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Net::Materialize()
|
void Net::materialize()
|
||||||
// ********************
|
// ********************
|
||||||
{
|
{
|
||||||
for_each_component(component, getComponents()) {
|
for_each_component(component, getComponents()) {
|
||||||
component->Materialize();
|
component->materialize();
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
for_each_rubber(rubber, getRubbers()) {
|
for_each_rubber(rubber, getRubbers()) {
|
||||||
rubber->Materialize();
|
rubber->materialize();
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Net::Unmaterialize()
|
void Net::unmaterialize()
|
||||||
// **********************
|
// **********************
|
||||||
{
|
{
|
||||||
for_each_rubber(rubber, getRubbers()) {
|
for_each_rubber(rubber, getRubbers()) {
|
||||||
rubber->Unmaterialize();
|
rubber->unmaterialize();
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
for_each_component(component, getComponents()) {
|
for_each_component(component, getComponents()) {
|
||||||
component->Unmaterialize();
|
component->unmaterialize();
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,8 +550,8 @@ void Net::Merge(Net* net)
|
||||||
if (!IsExternal() && net->IsExternal() && !net->getConnectedSlavePlugs().IsEmpty())
|
if (!IsExternal() && net->IsExternal() && !net->getConnectedSlavePlugs().IsEmpty())
|
||||||
throw Error("Can't merge net : incompatible net");
|
throw Error("Can't merge net : incompatible net");
|
||||||
|
|
||||||
for_each_rubber(rubber, net->getRubbers()) rubber->_SetNet(this); end_for;
|
for_each_rubber(rubber, net->getRubbers()) rubber->_setNet(this); end_for;
|
||||||
for_each_component(component, net->getComponents()) component->_SetNet(this); end_for;
|
for_each_component(component, net->getComponents()) component->_setNet(this); end_for;
|
||||||
|
|
||||||
if (IsExternal() && net->IsExternal()) {
|
if (IsExternal() && net->IsExternal()) {
|
||||||
for_each_plug(plug, net->getConnectedSlavePlugs()) {
|
for_each_plug(plug, net->getConnectedSlavePlugs()) {
|
||||||
|
@ -605,7 +605,7 @@ void Net::_preDestroy()
|
||||||
|
|
||||||
for_each_plug(slavePlug, getSlavePlugs()) slavePlug->_destroy(); end_for;
|
for_each_plug(slavePlug, getSlavePlugs()) slavePlug->_destroy(); end_for;
|
||||||
|
|
||||||
Unmaterialize();
|
unmaterialize();
|
||||||
|
|
||||||
for_each_rubber(rubber, getRubbers()) rubber->_destroy(); end_for;
|
for_each_rubber(rubber, getRubbers()) rubber->_destroy(); end_for;
|
||||||
|
|
||||||
|
@ -759,10 +759,10 @@ Component* Net::ComponentSet::_getNextElement(Component* component) const
|
||||||
return component->_getNextOfNetComponentSet();
|
return component->_getNextOfNetComponentSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Net::ComponentSet::_SetNextElement(Component* component, Component* nextComponent) const
|
void Net::ComponentSet::_setNextElement(Component* component, Component* nextComponent) const
|
||||||
// ******************************************************************************************
|
// ******************************************************************************************
|
||||||
{
|
{
|
||||||
component->_SetNextOfNetComponentSet(nextComponent);
|
component->_setNextOfNetComponentSet(nextComponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -789,10 +789,10 @@ Rubber* Net::RubberSet::_getNextElement(Rubber* rubber) const
|
||||||
return rubber->_getNextOfNetRubberSet();
|
return rubber->_getNextOfNetRubberSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Net::RubberSet::_SetNextElement(Rubber* rubber, Rubber* nextRubber) const
|
void Net::RubberSet::_setNextElement(Rubber* rubber, Rubber* nextRubber) const
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
{
|
{
|
||||||
rubber->_SetNextOfNetRubberSet(nextRubber);
|
rubber->_setNextOfNetRubberSet(nextRubber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ class Net : public Entity {
|
||||||
|
|
||||||
public: virtual unsigned _getHashValue(Component* component) const;
|
public: virtual unsigned _getHashValue(Component* component) const;
|
||||||
public: virtual Component* _getNextElement(Component* component) const;
|
public: virtual Component* _getNextElement(Component* component) const;
|
||||||
public: virtual void _SetNextElement(Component* component, Component* nextComponent) const;
|
public: virtual void _setNextElement(Component* component, Component* nextComponent) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ class Net : public Entity {
|
||||||
|
|
||||||
public: virtual unsigned _getHashValue(Rubber* rubber) const;
|
public: virtual unsigned _getHashValue(Rubber* rubber) const;
|
||||||
public: virtual Rubber* _getNextElement(Rubber* rubber) const;
|
public: virtual Rubber* _getNextElement(Rubber* rubber) const;
|
||||||
public: virtual void _SetNextElement(Rubber* rubber, Rubber* nextRubber) const;
|
public: virtual void _setNextElement(Rubber* rubber, Rubber* nextRubber) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -194,8 +194,8 @@ class Net : public Entity {
|
||||||
public: void SetType(const Type& type);
|
public: void SetType(const Type& type);
|
||||||
public: void SetDirection(const Direction& direction);
|
public: void SetDirection(const Direction& direction);
|
||||||
public: void SetPosition(const Point& position);
|
public: void SetPosition(const Point& position);
|
||||||
public: void Materialize();
|
public: void materialize();
|
||||||
public: void Unmaterialize();
|
public: void unmaterialize();
|
||||||
public: void Merge(Net* net);
|
public: void Merge(Net* net);
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
|
@ -212,7 +212,7 @@ class Net : public Entity {
|
||||||
public: RubberSet& _getRubberSet() {return _rubberSet;};
|
public: RubberSet& _getRubberSet() {return _rubberSet;};
|
||||||
public: Net* _getNextOfCellNetMap() const {return _nextOfCellNetMap;};
|
public: Net* _getNextOfCellNetMap() const {return _nextOfCellNetMap;};
|
||||||
|
|
||||||
public: void _SetNextOfCellNetMap(Net* net) {_nextOfCellNetMap = net;};
|
public: void _setNextOfCellNetMap(Net* net) {_nextOfCellNetMap = net;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ class Pin : public Contact {
|
||||||
|
|
||||||
public: Pin* _getNextOfCellPinMap() const {return _nextOfCellPinMap;};
|
public: Pin* _getNextOfCellPinMap() const {return _nextOfCellPinMap;};
|
||||||
|
|
||||||
public: void _SetNextOfCellPinMap(Pin* pin) {_nextOfCellPinMap = pin;};
|
public: void _setNextOfCellPinMap(Pin* pin) {_nextOfCellPinMap = pin;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -118,16 +118,6 @@ PlugFilter Plug::getIsUnconnectedFilter()
|
||||||
return !Plug_IsConnectedFilter();
|
return !Plug_IsConnectedFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plug::Materialize()
|
|
||||||
// *********************
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Plug::Unmaterialize()
|
|
||||||
// ***********************
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Plug::SetNet(Net* net)
|
void Plug::SetNet(Net* net)
|
||||||
// ************************
|
// ************************
|
||||||
{
|
{
|
||||||
|
@ -139,7 +129,7 @@ void Plug::SetNet(Net* net)
|
||||||
if (!getBodyHook()->getSlaveHooks().IsEmpty())
|
if (!getBodyHook()->getSlaveHooks().IsEmpty())
|
||||||
throw Error("Can't change net of plug : not empty slave hooks");
|
throw Error("Can't change net of plug : not empty slave hooks");
|
||||||
|
|
||||||
_SetNet(net);
|
_setNet(net);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,8 +77,8 @@ class Plug : public Component {
|
||||||
|
|
||||||
public: void SetNet(Net* net);
|
public: void SetNet(Net* net);
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize() {};
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize() {};
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
// ******
|
// ******
|
||||||
|
@ -95,8 +95,8 @@ class Plug : public Component {
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
public: Plug* _getNextOfInstancePlugMap() const {return _nextOfInstancePlugMap;};
|
public: Plug* _getNextOfInstancePlugMap() const {return _nextOfInstancePlugMap;};
|
||||||
|
|
||||||
public: virtual void _SetMasterNet(Net* masterNet) {_masterNet = masterNet;};
|
public: virtual void _setMasterNet(Net* masterNet) {_masterNet = masterNet;};
|
||||||
public: void _SetNextOfInstancePlugMap(Plug* plug) {_nextOfInstancePlugMap = plug;};
|
public: void _setNextOfInstancePlugMap(Plug* plug) {_nextOfInstancePlugMap = plug;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -239,7 +239,7 @@ void QuadTree::Insert(Go* go)
|
||||||
if (!go)
|
if (!go)
|
||||||
throw Error("Can't insert go : null go");
|
throw Error("Can't insert go : null go");
|
||||||
|
|
||||||
if (!go->IsMaterialized()) {
|
if (!go->isMaterialized()) {
|
||||||
Box boundingBox = go->getBoundingBox();
|
Box boundingBox = go->getBoundingBox();
|
||||||
QuadTree* child = _getDeepestChild(boundingBox);
|
QuadTree* child = _getDeepestChild(boundingBox);
|
||||||
child->_goSet._Insert(go);
|
child->_goSet._Insert(go);
|
||||||
|
@ -262,7 +262,7 @@ void QuadTree::Remove(Go* go)
|
||||||
if (!go)
|
if (!go)
|
||||||
throw Error("Can't remove go : null go");
|
throw Error("Can't remove go : null go");
|
||||||
|
|
||||||
if (go->IsMaterialized()) {
|
if (go->isMaterialized()) {
|
||||||
Box boundingBox = go->getBoundingBox();
|
Box boundingBox = go->getBoundingBox();
|
||||||
QuadTree* child = go->_quadTree;
|
QuadTree* child = go->_quadTree;
|
||||||
child->_goSet._Remove(go);
|
child->_goSet._Remove(go);
|
||||||
|
@ -523,10 +523,10 @@ Go* QuadTree::GoSet::_getNextElement(Go* go) const
|
||||||
return go->_getNextOfQuadTreeGoSet();
|
return go->_getNextOfQuadTreeGoSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuadTree::GoSet::_SetNextElement(Go* go, Go* nextGo) const
|
void QuadTree::GoSet::_setNextElement(Go* go, Go* nextGo) const
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
{
|
{
|
||||||
go->_SetNextOfQuadTreeGoSet(nextGo);
|
go->_setNextOfQuadTreeGoSet(nextGo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ class QuadTree {
|
||||||
|
|
||||||
public: virtual unsigned _getHashValue(Go* go) const;
|
public: virtual unsigned _getHashValue(Go* go) const;
|
||||||
public: virtual Go* _getNextElement(Go* go) const;
|
public: virtual Go* _getNextElement(Go* go) const;
|
||||||
public: virtual void _SetNextElement(Go* go, Go* nextGo) const;
|
public: virtual void _setNextElement(Go* go, Go* nextGo) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ class Quark : public DBo {
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
public: Quark* _getNextOfSharedPathQuarkMap() const {return _nextOfSharedPathQuarkMap;};
|
public: Quark* _getNextOfSharedPathQuarkMap() const {return _nextOfSharedPathQuarkMap;};
|
||||||
|
|
||||||
public: void _SetNextOfSharedPathQuarkMap(Quark* quark) {_nextOfSharedPathQuarkMap = quark;};
|
public: void _setNextOfSharedPathQuarkMap(Quark* quark) {_nextOfSharedPathQuarkMap = quark;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -283,7 +283,7 @@ void Region_Tile::SplitVertical(Region* region, const Unit& x)
|
||||||
|
|
||||||
_boundingBox = Box(getXMin(), getYMin(), x, getYMax());
|
_boundingBox = Box(getXMin(), getYMin(), x, getYMax());
|
||||||
|
|
||||||
if (region->_getBottomRightTile() == this) region->_SetBottomRightTile(newTile);
|
if (region->_getBottomRightTile() == this) region->_setBottomRightTile(newTile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,7 +324,7 @@ void Region_Tile::SplitHorizontal(Region* region, const Unit& y)
|
||||||
|
|
||||||
_boundingBox = Box(getXMin(), getYMin(), getXMax(), y);
|
_boundingBox = Box(getXMin(), getYMin(), getXMax(), y);
|
||||||
|
|
||||||
if (region->_getTopLeftTile() == this) region->_SetTopLeftTile(newTile);
|
if (region->_getTopLeftTile() == this) region->_setTopLeftTile(newTile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ bool Region_Tile::MergeLeftTile(Region* region)
|
||||||
|
|
||||||
_boundingBox.merge(uselessTile->_boundingBox);
|
_boundingBox.merge(uselessTile->_boundingBox);
|
||||||
|
|
||||||
if (region->_getTopLeftTile() == uselessTile) region->_SetTopLeftTile(this);
|
if (region->_getTopLeftTile() == uselessTile) region->_setTopLeftTile(this);
|
||||||
|
|
||||||
delete uselessTile;
|
delete uselessTile;
|
||||||
|
|
||||||
|
@ -405,7 +405,7 @@ bool Region_Tile::MergeBottomTile(Region* region)
|
||||||
|
|
||||||
_boundingBox.merge(uselessTile->_boundingBox);
|
_boundingBox.merge(uselessTile->_boundingBox);
|
||||||
|
|
||||||
if (region->_getBottomRightTile() == uselessTile) region->_SetBottomRightTile(this);
|
if (region->_getBottomRightTile() == uselessTile) region->_setBottomRightTile(this);
|
||||||
|
|
||||||
delete uselessTile;
|
delete uselessTile;
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ bool Region_Tile::MergeTopTile(Region* region)
|
||||||
|
|
||||||
_boundingBox.merge(uselessTile->_boundingBox);
|
_boundingBox.merge(uselessTile->_boundingBox);
|
||||||
|
|
||||||
if (region->_getTopLeftTile() == uselessTile) region->_SetTopLeftTile(this);
|
if (region->_getTopLeftTile() == uselessTile) region->_setTopLeftTile(this);
|
||||||
|
|
||||||
delete uselessTile;
|
delete uselessTile;
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ bool Region_Tile::MergeRightTile(Region* region)
|
||||||
|
|
||||||
_boundingBox.merge(uselessTile->_boundingBox);
|
_boundingBox.merge(uselessTile->_boundingBox);
|
||||||
|
|
||||||
if (region->_getBottomRightTile() == uselessTile) region->_SetBottomRightTile(this);
|
if (region->_getBottomRightTile() == uselessTile) region->_setBottomRightTile(this);
|
||||||
|
|
||||||
delete uselessTile;
|
delete uselessTile;
|
||||||
|
|
||||||
|
|
|
@ -208,8 +208,8 @@ class Region {
|
||||||
public: GenericCollection<Tile*> _getTiles() const;
|
public: GenericCollection<Tile*> _getTiles() const;
|
||||||
public: GenericCollection<Tile*> _getTilesUnder(const Box& area, Tile* startTile = NULL) const;
|
public: GenericCollection<Tile*> _getTilesUnder(const Box& area, Tile* startTile = NULL) const;
|
||||||
|
|
||||||
public: void _SetBottomRightTile(Tile* bottomRightTile) {_bottomRightTile = bottomRightTile;};
|
public: void _setBottomRightTile(Tile* bottomRightTile) {_bottomRightTile = bottomRightTile;};
|
||||||
public: void _SetTopLeftTile(Tile* topLeftTile) {_topLeftTile = topLeftTile;};
|
public: void _setTopLeftTile(Tile* topLeftTile) {_topLeftTile = topLeftTile;};
|
||||||
public: void _Split(const Box& box);
|
public: void _Split(const Box& box);
|
||||||
public: void _GrowthToFit(const Box& box);
|
public: void _GrowthToFit(const Box& box);
|
||||||
public: void _Update(const Box& box, bool isVoid, Tile* startTile = NULL);
|
public: void _Update(const Box& box, bool isVoid, Tile* startTile = NULL);
|
||||||
|
|
|
@ -75,7 +75,7 @@ void RoutingPad::_postCreate()
|
||||||
Inherit::_postCreate();
|
Inherit::_postCreate();
|
||||||
|
|
||||||
if (!_occurrence.getPath().IsEmpty())
|
if (!_occurrence.getPath().IsEmpty())
|
||||||
_occurrence.getMasterCell()->_AddSlaveEntity(_occurrence.getEntity(),this);
|
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Unit RoutingPad::getX() const
|
Unit RoutingPad::getX() const
|
||||||
|
@ -225,7 +225,7 @@ void RoutingPad::_preDestroy()
|
||||||
|
|
||||||
|
|
||||||
if (!_occurrence.getPath().IsEmpty())
|
if (!_occurrence.getPath().IsEmpty())
|
||||||
_occurrence.getMasterCell()->_RemoveSlaveEntity(_occurrence.getEntity(),this);
|
_occurrence.getMasterCell()->_removeSlaveEntity(_occurrence.getEntity(),this);
|
||||||
Inherit::_preDestroy();
|
Inherit::_preDestroy();
|
||||||
|
|
||||||
// trace << "exiting RoutingPad::preDestroy:" << endl;
|
// trace << "exiting RoutingPad::preDestroy:" << endl;
|
||||||
|
@ -276,14 +276,14 @@ Segment* RoutingPad::_getEntityAsSegment () const
|
||||||
void RoutingPad::SetExternalComponent(Component* component)
|
void RoutingPad::SetExternalComponent(Component* component)
|
||||||
// ********************************************************
|
// ********************************************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) Invalidate(false);
|
if (isMaterialized()) Invalidate(false);
|
||||||
|
|
||||||
Occurrence plugOccurrence = getPlugOccurrence();
|
Occurrence plugOccurrence = getPlugOccurrence();
|
||||||
Plug* plug= static_cast<Plug*>(plugOccurrence.getEntity());
|
Plug* plug= static_cast<Plug*>(plugOccurrence.getEntity());
|
||||||
if (plug->getMasterNet() != component->getNet())
|
if (plug->getMasterNet() != component->getNet())
|
||||||
throw Error("Cannot Set External Component to Routing Pad : Inconsistant Net");
|
throw Error("Cannot Set External Component to Routing Pad : Inconsistant Net");
|
||||||
|
|
||||||
_occurrence.getMasterCell()->_RemoveSlaveEntity(_occurrence.getEntity(),this);
|
_occurrence.getMasterCell()->_removeSlaveEntity(_occurrence.getEntity(),this);
|
||||||
_occurrence = Occurrence(component,Path(plugOccurrence.getPath(),plug->getInstance()));
|
_occurrence = Occurrence(component,Path(plugOccurrence.getPath(),plug->getInstance()));
|
||||||
|
|
||||||
Point position = _occurrence.getPath().getTransformation().getPoint ( component->getPosition() );
|
Point position = _occurrence.getPath().getTransformation().getPoint ( component->getPosition() );
|
||||||
|
@ -301,10 +301,10 @@ void RoutingPad::SetExternalComponent(Component* component)
|
||||||
SetPosition ( position );
|
SetPosition ( position );
|
||||||
}
|
}
|
||||||
|
|
||||||
_occurrence.getMasterCell()->_AddSlaveEntity(_occurrence.getEntity(),this);
|
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
|
||||||
|
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
Materialize();
|
materialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,62 +328,13 @@ Occurrence RoutingPad::getPlugOccurrence()
|
||||||
void RoutingPad::RestorePlugOccurrence()
|
void RoutingPad::RestorePlugOccurrence()
|
||||||
// *************************************
|
// *************************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) Unmaterialize();
|
if (isMaterialized()) unmaterialize();
|
||||||
|
|
||||||
_occurrence=getPlugOccurrence();
|
_occurrence=getPlugOccurrence();
|
||||||
SetPosition ( _occurrence.getPath().getTransformation().getPoint
|
SetPosition ( _occurrence.getPath().getTransformation().getPoint
|
||||||
( dynamic_cast<Component*>(_occurrence.getEntity())->getPosition() ) );
|
( dynamic_cast<Component*>(_occurrence.getEntity())->getPosition() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
// ****************************************************************************************************
|
|
||||||
// RoutingPad::Builder declaration
|
|
||||||
// ****************************************************************************************************
|
|
||||||
|
|
||||||
RoutingPad::Builder::Builder(const string& token)
|
|
||||||
// *******************************************
|
|
||||||
: Inherit(token),
|
|
||||||
_layer(NULL),
|
|
||||||
_x(0),
|
|
||||||
_y(0),
|
|
||||||
_width(0),
|
|
||||||
_height(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void RoutingPad::Builder::Scan(InputFile& inputFile, char*& arguments)
|
|
||||||
// ****************************************************************
|
|
||||||
{
|
|
||||||
Inherit::Scan(inputFile, arguments);
|
|
||||||
|
|
||||||
unsigned layerId;
|
|
||||||
unsigned n;
|
|
||||||
|
|
||||||
|
|
||||||
if (r != 6)
|
|
||||||
throw Error("Can't create RoutingPad : syntax error");
|
|
||||||
|
|
||||||
arguments = &arguments[n];
|
|
||||||
|
|
||||||
DBo* dbo = inputFile.getDBo(layerId);
|
|
||||||
if (!dbo || !is_a<Layer*>(dbo))
|
|
||||||
throw Error("Can't create RoutingPad : bad layer");
|
|
||||||
|
|
||||||
_layer = (Layer*)dbo;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBo* RoutingPad::Builder::CreateDBo()
|
|
||||||
// *******************************
|
|
||||||
{
|
|
||||||
return RoutingPad::create(getNet(), getLayer(), getX(), getY(), getWidth(), getHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
RoutingPad::Builder ROUTINGPAD_BUILDER("RP");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
RoutingPad* createRoutingPad ( Net* net, Occurrence plugOccurrence )
|
RoutingPad* createRoutingPad ( Net* net, Occurrence plugOccurrence )
|
||||||
// *****************************************************************
|
// *****************************************************************
|
||||||
{
|
{
|
||||||
|
|
|
@ -96,23 +96,23 @@ Hooks Rubber::getHooks() const
|
||||||
return (_hook) ? _hook->getHooks().getSubSet(Hook::getIsMasterFilter()) : Hooks();
|
return (_hook) ? _hook->getHooks().getSubSet(Hook::getIsMasterFilter()) : Hooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rubber::Materialize()
|
void Rubber::materialize()
|
||||||
// ***********************
|
// ***********************
|
||||||
{
|
{
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
QuadTree* quadTree = cell->_getQuadTree();
|
QuadTree* quadTree = cell->_getQuadTree();
|
||||||
quadTree->Insert(this);
|
quadTree->Insert(this);
|
||||||
cell->_Fit(quadTree->getBoundingBox());
|
cell->_fit(quadTree->getBoundingBox());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rubber::Unmaterialize()
|
void Rubber::unmaterialize()
|
||||||
// *************************
|
// *************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
Cell* cell = getCell();
|
Cell* cell = getCell();
|
||||||
cell->_Unfit(getBoundingBox());
|
cell->_unfit(getBoundingBox());
|
||||||
cell->_getQuadTree()->Remove(this);
|
cell->_getQuadTree()->Remove(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ void Rubber::_postCreate()
|
||||||
_net->_getRubberSet()._Insert(this);
|
_net->_getRubberSet()._Insert(this);
|
||||||
|
|
||||||
for_each_hook(hook, getHooks()) {
|
for_each_hook(hook, getHooks()) {
|
||||||
hook->getComponent()->_SetRubber(this);
|
hook->getComponent()->_setRubber(this);
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ void Rubber::_preDestroy()
|
||||||
_count = (unsigned)-1; // to avoid a new destruction
|
_count = (unsigned)-1; // to avoid a new destruction
|
||||||
|
|
||||||
for_each_hook(hook, getHooks()) {
|
for_each_hook(hook, getHooks()) {
|
||||||
hook->getComponent()->_SetRubber(NULL);
|
hook->getComponent()->_setRubber(NULL);
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ Record* Rubber::_getRecord() const
|
||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rubber::_SetNet(Net* net)
|
void Rubber::_setNet(Net* net)
|
||||||
// ***************************
|
// ***************************
|
||||||
{
|
{
|
||||||
if (net != _net) {
|
if (net != _net) {
|
||||||
|
@ -217,7 +217,7 @@ void Rubber::_SetNet(Net* net)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rubber::_SetHook(Hook* hook)
|
void Rubber::_setHook(Hook* hook)
|
||||||
// ******************************
|
// ******************************
|
||||||
{
|
{
|
||||||
assert(hook->IsMaster());
|
assert(hook->IsMaster());
|
||||||
|
|
|
@ -64,8 +64,8 @@ class Rubber : public Go {
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize();
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize();
|
||||||
public: virtual void Translate(const Unit& dx, const Unit& dy);
|
public: virtual void Translate(const Unit& dx, const Unit& dy);
|
||||||
public: virtual void Invalidate(bool propagateFlag = true);
|
public: virtual void Invalidate(bool propagateFlag = true);
|
||||||
|
|
||||||
|
@ -83,9 +83,9 @@ class Rubber : public Go {
|
||||||
public: virtual Record* _getRecord() const;
|
public: virtual Record* _getRecord() const;
|
||||||
public: Rubber* _getNextOfNetRubberSet() const {return _nextOfNetRubberSet;};
|
public: Rubber* _getNextOfNetRubberSet() const {return _nextOfNetRubberSet;};
|
||||||
|
|
||||||
public: void _SetNet(Net* net);
|
public: void _setNet(Net* net);
|
||||||
public: void _SetHook(Hook* hook);
|
public: void _setHook(Hook* hook);
|
||||||
public: void _SetNextOfNetRubberSet(Rubber* rubber) {_nextOfNetRubberSet = rubber;};
|
public: void _setNextOfNetRubberSet(Rubber* rubber) {_nextOfNetRubberSet = rubber;};
|
||||||
|
|
||||||
public: void _Capture();
|
public: void _Capture();
|
||||||
public: void _Release();
|
public: void _Release();
|
||||||
|
|
|
@ -248,10 +248,10 @@ Quark* SharedPath::QuarkMap::_getNextElement(Quark* quark) const
|
||||||
return quark->_getNextOfSharedPathQuarkMap();
|
return quark->_getNextOfSharedPathQuarkMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SharedPath::QuarkMap::_SetNextElement(Quark* quark, Quark* nextQuark) const
|
void SharedPath::QuarkMap::_setNextElement(Quark* quark, Quark* nextQuark) const
|
||||||
// *****************************************************************************
|
// *****************************************************************************
|
||||||
{
|
{
|
||||||
quark->_SetNextOfSharedPathQuarkMap(nextQuark);
|
quark->_setNextOfSharedPathQuarkMap(nextQuark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ class SharedPath {
|
||||||
public: virtual const Entity* _getKey(Quark* quark) const;
|
public: virtual const Entity* _getKey(Quark* quark) const;
|
||||||
public: virtual unsigned _getHashValue(const Entity* entity) const;
|
public: virtual unsigned _getHashValue(const Entity* entity) const;
|
||||||
public: virtual Quark* _getNextElement(Quark* quark) const;
|
public: virtual Quark* _getNextElement(Quark* quark) const;
|
||||||
public: virtual void _SetNextElement(Quark* quark, Quark* nextQuark) const;
|
public: virtual void _setNextElement(Quark* quark, Quark* nextQuark) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class SharedPath {
|
||||||
public: QuarkMap& _getQuarkMap() {return _quarkMap;};
|
public: QuarkMap& _getQuarkMap() {return _quarkMap;};
|
||||||
public: SharedPath* _getNextOfInstanceSharedPathMap() const {return _nextOfInstanceSharedPathMap;};
|
public: SharedPath* _getNextOfInstanceSharedPathMap() const {return _nextOfInstanceSharedPathMap;};
|
||||||
|
|
||||||
public: void _SetNextOfInstanceSharedPathMap(SharedPath* sharedPath) {_nextOfInstanceSharedPathMap = sharedPath;};
|
public: void _setNextOfInstanceSharedPathMap(SharedPath* sharedPath) {_nextOfInstanceSharedPathMap = sharedPath;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ class Slice {
|
||||||
public: QuadTree* _getQuadTree() {return &_quadTree;};
|
public: QuadTree* _getQuadTree() {return &_quadTree;};
|
||||||
public: Slice* _getNextOfCellSliceMap() const {return _nextOfCellSliceMap;};
|
public: Slice* _getNextOfCellSliceMap() const {return _nextOfCellSliceMap;};
|
||||||
|
|
||||||
public: void _SetNextOfCellSliceMap(Slice* slice) {_nextOfCellSliceMap = slice;};
|
public: void _setNextOfCellSliceMap(Slice* slice) {_nextOfCellSliceMap = slice;};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ void Technology::_postCreate()
|
||||||
{
|
{
|
||||||
Inherit::_postCreate();
|
Inherit::_postCreate();
|
||||||
|
|
||||||
_dataBase->_SetTechnology(this);
|
_dataBase->_setTechnology(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Technology::_preDestroy()
|
void Technology::_preDestroy()
|
||||||
|
@ -178,7 +178,7 @@ void Technology::_preDestroy()
|
||||||
|
|
||||||
for_each_layer(layer, getLayers()) layer->destroy(); end_for;
|
for_each_layer(layer, getLayers()) layer->destroy(); end_for;
|
||||||
|
|
||||||
_dataBase->_SetTechnology(NULL);
|
_dataBase->_setTechnology(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
string Technology::_getString() const
|
string Technology::_getString() const
|
||||||
|
|
|
@ -76,7 +76,7 @@ void UpdateSession::_preDestroy()
|
||||||
UPDATOR_STACK->pop();
|
UPDATOR_STACK->pop();
|
||||||
|
|
||||||
for_each_dbo(owner, getOwners()) {
|
for_each_dbo(owner, getOwners()) {
|
||||||
if (is_a<Go*>(owner)) ((Go*)owner)->Materialize();
|
if (is_a<Go*>(owner)) ((Go*)owner)->materialize();
|
||||||
end_for;
|
end_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +142,8 @@ void Go::Invalidate(bool propagateFlag)
|
||||||
if (go) go->Invalidate(propagateFlag);
|
if (go) go->Invalidate(propagateFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
Unmaterialize();
|
unmaterialize();
|
||||||
put(UPDATOR_STACK->top());
|
put(UPDATOR_STACK->top());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,22 +95,22 @@ UserGo::UserGo(DisplaySlot* displaySlot)
|
||||||
throw Error("Can't Create " + _TName("UserGo") + " null displaySlot");
|
throw Error("Can't Create " + _TName("UserGo") + " null displaySlot");
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserGo::Materialize()
|
void UserGo::materialize()
|
||||||
// ***********************
|
// ***********************
|
||||||
{
|
{
|
||||||
if (!IsMaterialized()) {
|
if (!isMaterialized()) {
|
||||||
QuadTree& quadTree = _displaySlot->_getQuadTree();
|
QuadTree& quadTree = _displaySlot->_getQuadTree();
|
||||||
quadTree.Insert(this);
|
quadTree.Insert(this);
|
||||||
getCell()->_Fit(quadTree.getBoundingBox());
|
getCell()->_fit(quadTree.getBoundingBox());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserGo::Unmaterialize()
|
void UserGo::unmaterialize()
|
||||||
// *************************
|
// *************************
|
||||||
{
|
{
|
||||||
if (IsMaterialized()) {
|
if (isMaterialized()) {
|
||||||
QuadTree& quadTree = _displaySlot->_getQuadTree();
|
QuadTree& quadTree = _displaySlot->_getQuadTree();
|
||||||
getCell()->_Unfit(getBoundingBox());
|
getCell()->_unfit(getBoundingBox());
|
||||||
quadTree.Remove(this);
|
quadTree.Remove(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,8 @@ class UserGo : public Go {
|
||||||
// Updators
|
// Updators
|
||||||
// ********
|
// ********
|
||||||
|
|
||||||
public: virtual void Materialize();
|
public: virtual void materialize();
|
||||||
public: virtual void Unmaterialize();
|
public: virtual void unmaterialize();
|
||||||
|
|
||||||
// Others
|
// Others
|
||||||
// ******
|
// ******
|
||||||
|
|
|
@ -535,18 +535,18 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// Attribute Method : "PyCell_SetName ()"
|
// Attribute Method : "PyCell_setName ()"
|
||||||
|
|
||||||
static PyObject* PyCell_SetName ( PyCell *self, PyObject* args )
|
static PyObject* PyCell_setName ( PyCell *self, PyObject* args )
|
||||||
{
|
{
|
||||||
trace << "Cell.SetName()" << endl;
|
trace << "Cell.setName()" << endl;
|
||||||
|
|
||||||
HTRY
|
HTRY
|
||||||
METHOD_HEAD ( "Cell.SetName()" )
|
METHOD_HEAD ( "Cell.setName()" )
|
||||||
|
|
||||||
PyName* name;
|
PyName* name;
|
||||||
if ( ! ParseOneArg ( "Cell.SetName", args, NAME_ARG, (PyObject**)&name ) ) return ( NULL );
|
if ( ! ParseOneArg ( "Cell.setName", args, NAME_ARG, (PyObject**)&name ) ) return ( NULL );
|
||||||
cell->SetName ( *PYNAME_O(name) );
|
cell->setName ( *PYNAME_O(name) );
|
||||||
HCATCH
|
HCATCH
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
@ -554,17 +554,17 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// Attribute Method : "PyCell_SetAbutmentBox ()"
|
// Attribute Method : "PyCell_setAbutmentBox ()"
|
||||||
|
|
||||||
static PyObject* PyCell_SetAbutmentBox ( PyCell *self, PyObject* args ) {
|
static PyObject* PyCell_setAbutmentBox ( PyCell *self, PyObject* args ) {
|
||||||
trace << "Cell.SetAbutmentBox()" << endl;
|
trace << "Cell.setAbutmentBox()" << endl;
|
||||||
|
|
||||||
HTRY
|
HTRY
|
||||||
METHOD_HEAD ( "Cell.SetAbutmentBox()" )
|
METHOD_HEAD ( "Cell.setAbutmentBox()" )
|
||||||
|
|
||||||
PyBox* abutmentBox;
|
PyBox* abutmentBox;
|
||||||
if ( ! ParseOneArg ( "Cell.SetAbutmentBox", args, BOX_ARG, (PyObject**)&abutmentBox ) ) return ( NULL );
|
if ( ! ParseOneArg ( "Cell.setAbutmentBox", args, BOX_ARG, (PyObject**)&abutmentBox ) ) return ( NULL );
|
||||||
cell->SetAbutmentBox ( *PYBOX_O(abutmentBox) );
|
cell->setAbutmentBox ( *PYBOX_O(abutmentBox) );
|
||||||
HCATCH
|
HCATCH
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
@ -572,17 +572,17 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// Attribute Method : "PyCell_SetTerminal ()"
|
// Attribute Method : "PyCell_setTerminal ()"
|
||||||
|
|
||||||
static PyObject* PyCell_SetTerminal ( PyCell *self, PyObject* args ) {
|
static PyObject* PyCell_setTerminal ( PyCell *self, PyObject* args ) {
|
||||||
trace << "PyCell_SetTerminal ()" << endl;
|
trace << "PyCell_setTerminal ()" << endl;
|
||||||
|
|
||||||
HTRY
|
HTRY
|
||||||
METHOD_HEAD ( "Cell.SetTerminal()" )
|
METHOD_HEAD ( "Cell.setTerminal()" )
|
||||||
|
|
||||||
PyObject* arg0;
|
PyObject* arg0;
|
||||||
if ( ! ParseOneArg ( "Cell.SetTerminal", args, INT_ARG, (PyObject**)&arg0 ) ) return ( NULL );
|
if ( ! ParseOneArg ( "Cell.setTerminal", args, INT_ARG, (PyObject**)&arg0 ) ) return ( NULL );
|
||||||
cell->SetTerminal ( PyInt_AsLong(arg0) != 0 );
|
cell->setTerminal ( PyInt_AsLong(arg0) != 0 );
|
||||||
HCATCH
|
HCATCH
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
@ -590,10 +590,10 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
// Standart Predicates (Attributes).
|
// Standart Predicates (Attributes).
|
||||||
DirectGetBoolAttribute(PyCell_IsTerminal, IsTerminal ,PyCell,Cell)
|
DirectGetBoolAttribute(PyCell_isTerminal, isTerminal ,PyCell,Cell)
|
||||||
DirectGetBoolAttribute(PyCell_IsLeaf, IsLeaf ,PyCell,Cell)
|
DirectGetBoolAttribute(PyCell_isLeaf, isLeaf ,PyCell,Cell)
|
||||||
|
|
||||||
GetBoundStateAttribute(PyCell_IsPyBound ,PyCell,Cell)
|
GetBoundStateAttribute(PyCell_isPyBound ,PyCell,Cell)
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// PyCell Attribute Method table.
|
// PyCell Attribute Method table.
|
||||||
|
@ -613,27 +613,18 @@ extern "C" {
|
||||||
, { "getHyperNetsLocator" , (PyCFunction)PyCell_getHyperNetsLocator , METH_VARARGS, "Returns the collection of all hyperNets belonging to the cell." }
|
, { "getHyperNetsLocator" , (PyCFunction)PyCell_getHyperNetsLocator , METH_VARARGS, "Returns the collection of all hyperNets belonging to the cell." }
|
||||||
, { "getNet" , (PyCFunction)PyCell_getNet , METH_VARARGS, "Returns the net of name <name> if it exists, else NULL." }
|
, { "getNet" , (PyCFunction)PyCell_getNet , METH_VARARGS, "Returns the net of name <name> if it exists, else NULL." }
|
||||||
, { "getNetsLocator" , (PyCFunction)PyCell_getNetsLocator , METH_NOARGS , "Returns the collection of all nets of the cell." }
|
, { "getNetsLocator" , (PyCFunction)PyCell_getNetsLocator , METH_NOARGS , "Returns the collection of all nets of the cell." }
|
||||||
//, { "getGlobalNets" , (PyCFunction)PyCell_getGlobalNets , METH_NOARGS , "Returns the collection of all global nets of the cell." }
|
|
||||||
, { "getExternalNetsLocator", (PyCFunction)PyCell_getExternalNetsLocator, METH_NOARGS , "Returns the collection of all external nets of the cell." }
|
, { "getExternalNetsLocator", (PyCFunction)PyCell_getExternalNetsLocator, METH_NOARGS , "Returns the collection of all external nets of the cell." }
|
||||||
//, { "getInternalNets" , (PyCFunction)PyCell_getInternalNets , METH_NOARGS , "Returns the collection of all internal nets of the cell." }
|
|
||||||
, { "getClockNetsLocator" , (PyCFunction)PyCell_getClockNetsLocator , METH_NOARGS , "Returns the collection of all clock nets of the cell." }
|
, { "getClockNetsLocator" , (PyCFunction)PyCell_getClockNetsLocator , METH_NOARGS , "Returns the collection of all clock nets of the cell." }
|
||||||
, { "getSupplyNetsLocator", (PyCFunction)PyCell_getSupplyNetsLocator, METH_NOARGS , "Returns the collection of all supply nets of the cell." }
|
, { "getSupplyNetsLocator", (PyCFunction)PyCell_getSupplyNetsLocator, METH_NOARGS , "Returns the collection of all supply nets of the cell." }
|
||||||
, { "getPowerNetsLocator" , (PyCFunction)PyCell_getPowerNetsLocator , METH_NOARGS , "Returns the collection of all power nets of the cell." }
|
, { "getPowerNetsLocator" , (PyCFunction)PyCell_getPowerNetsLocator , METH_NOARGS , "Returns the collection of all power nets of the cell." }
|
||||||
, { "getGroundNetsLocator", (PyCFunction)PyCell_getGroundNetsLocator, METH_NOARGS , "Returns the collection of all ground nets of the cell." }
|
, { "getGroundNetsLocator", (PyCFunction)PyCell_getGroundNetsLocator, METH_NOARGS , "Returns the collection of all ground nets of the cell." }
|
||||||
//, { "getComponents" , (PyCFunction)PyCell_getComponents , METH_NOARGS , "Returns the collection of all components of the cell." }
|
|
||||||
//, { "getComponentsUnder" , (PyCFunction)PyCell_getComponentsUnder , METH_VARARGS, "Returns the collection of cell components which intersect the given rectangular area." }
|
|
||||||
, { "getAbutmentBox" , (PyCFunction)PyCell_getAbutmentBox , METH_NOARGS , "Returns the abutment box of the cell(which is defined by the designer unlike the bounding box which is managed dynamically)" }
|
, { "getAbutmentBox" , (PyCFunction)PyCell_getAbutmentBox , METH_NOARGS , "Returns the abutment box of the cell(which is defined by the designer unlike the bounding box which is managed dynamically)" }
|
||||||
//, { "getSymbol" , (PyCFunction)PyCell_getSymbol , METH_NOARGS , "Returns the symbol associated to the cell." }
|
, { "isTerminal" , (PyCFunction)PyCell_isTerminal , METH_NOARGS , "Returns true if the cell is marked as terminal, else false." }
|
||||||
//, { "IsCalledBy" , (PyCFunction)PyCell_IsCalledBy , METH_VARARGS, "Returns true if the cell <this> is directly or indirectly called by the cell <cell>." }
|
, { "isLeaf" , (PyCFunction)PyCell_isLeaf , METH_NOARGS , "Returns true if the cell is a leaf of the hierarchy, else false." }
|
||||||
, { "IsTerminal" , (PyCFunction)PyCell_IsTerminal , METH_NOARGS , "Returns true if the cell is marked as terminal, else false." }
|
, { "isBound" , (PyCFunction)PyCell_isPyBound , METH_NOARGS, "Returns true if the cell is bounded to the hurricane cell" }
|
||||||
, { "IsLeaf" , (PyCFunction)PyCell_IsLeaf , METH_NOARGS , "Returns true if the cell is a leaf of the hierarchy, else false." }
|
, { "setName" , (PyCFunction)PyCell_setName , METH_VARARGS, "Allows to change the cell name." }
|
||||||
, { "IsBound" , (PyCFunction)PyCell_IsPyBound , METH_NOARGS, "Returns true if the cell is bounded to the hurricane cell" }
|
, { "setAbutmentBox" , (PyCFunction)PyCell_setAbutmentBox , METH_VARARGS, "Sets the cell abutment box." }
|
||||||
, { "SetName" , (PyCFunction)PyCell_SetName , METH_VARARGS, "Allows to change the cell name." }
|
, { "setTerminal" , (PyCFunction)PyCell_setTerminal , METH_VARARGS, "Sets the cell terminal status." }
|
||||||
, { "SetAbutmentBox" , (PyCFunction)PyCell_SetAbutmentBox , METH_VARARGS, "Sets the cell abutment box." }
|
|
||||||
, { "SetTerminal" , (PyCFunction)PyCell_SetTerminal , METH_VARARGS, "Sets the cell terminal status." }
|
|
||||||
//, { "SetSymbol" , (PyCFunction)PyCell_SetSymbol , METH_VARARGS, "Associates the symbol <symbol> to the cell." }
|
|
||||||
//, { "Materialize" , (PyCFunction)PyCell_Materialize , METH_NOARGS , "Materializes all components of all the nets of the cell." }
|
|
||||||
//, { "Unmaterialize" , (PyCFunction)PyCell_Unmaterialize , METH_NOARGS , "De-materializes all components of all the nets of the cell." }
|
|
||||||
, { "destroy" , (PyCFunction)PyCell_destroy , METH_NOARGS
|
, { "destroy" , (PyCFunction)PyCell_destroy , METH_NOARGS
|
||||||
, "Destroy associated hurricane object The python object remains." }
|
, "Destroy associated hurricane object The python object remains." }
|
||||||
, {NULL, NULL, 0, NULL} /* sentinel */
|
, {NULL, NULL, 0, NULL} /* sentinel */
|
||||||
|
@ -714,5 +705,3 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
} // End of Isobar namespace.
|
} // End of Isobar namespace.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue