diff --git a/hurricane/doc/analog/MainPage.dox b/hurricane/doc/analog/MainPage.dox
index 1d3d8ba1..f8ec3cde 100644
--- a/hurricane/doc/analog/MainPage.dox
+++ b/hurricane/doc/analog/MainPage.dox
@@ -69,33 +69,45 @@ Instance* instance = cell->getSlaveInstances().getFirst();
*
* For the Transistor device:
*
- * -# The netlist is fixed and generated (in C++) in the Transistor, by
- * instanciating one MetaTransistor.
- * -# The layout is generated on the fly by calling the relevant
- * python sceript.
- * -# The parameters, which are commons to all the Transistor based
- * devices are created in TransistorFamily. The parameters are created
- * through the Device parameter factory and stored at the Device level.
- * A pointer to the concrete type of Parameter is also kept at the
- * TransistorFamily level.
- * -# The Device::getParameters() method is implemented at this level
- * and returns a TransistorArguments pointer.
- * -# Parameters are used to set up the Device characteristics, either
- * programmatically or through the Pharos
graphical
- * interface.
- * -# Arguments
, on the other hand, are mostly used to
- * transmit the setting of a Device (i.e. it's Parameters values)
- * to the Python script in charge of the layout generation.
- * Arguments have Python wrapper PyArguments, and it is copies of
- * the values that are transmitted.
+ * -# The netlist is fixed and generated (in C++) in the Transistor, by
+ * instanciating one MetaTransistor.
+ *
+ * -# The layout is generated on the fly by calling the relevant
+ * python script.
+ *
+ * -# The parameters, which are commons to all the Transistor based
+ * devices are created in TransistorFamily. The parameters are created
+ * through the Device parameter factory and stored at the Device level.
+ * A pointer to the concrete type of Parameter is also kept at the
+ * TransistorFamily level.
+ *
+ * -# The Device::getParameters() method is implemented at this level
+ * and returns a reference to the set of parameters.
+ *
+ * -# Parameters are used to set up the Device characteristics, either
+ * programmatically or through the graphical interface.
+ *
+ * The layout Python generation scripts also uses the Parameter
+ * to know the settings of a device.
+ *
+ * Deprecateds:
+ *
+ * -# Arguments
where fully redundant with Parameters, so
+ * we did remove them.
+ *
+ * The Arguments must be removed from the UML schema.
*
*
* \subsection ssecOpenQuestions Open questions
*
- * -# As Arguments are used to transmit parameters, why not simply
- * encapsulate Parameters in a Python wrapper? Thus completly
- * suppressing Arguments. And by the way, using pointers to
- * to make the relationship bi-directionnal (event if it's not
- * needed now).
+ * -# In Bora::channelRouting, what is implemented is in fact an
+ * interval tree (or segment tree). We should try to use their
+ * \c Boost implementation.
+ *
+ * -# In Bora::SlicingTree, whe should merge the list of user nodes
+ * (devices and hierarchical) with the routing nodes (channels and
+ * struts) to unify the underlying management. This sould enable
+ * us to move lots method implementation \e upward in the class
+ * hierarchy.
*/
diff --git a/hurricane/src/hurricane/Cell.cpp b/hurricane/src/hurricane/Cell.cpp
index 60e9df28..9549ced1 100644
--- a/hurricane/src/hurricane/Cell.cpp
+++ b/hurricane/src/hurricane/Cell.cpp
@@ -1584,7 +1584,21 @@ Name Cell::NetMap::_getKey(Net* net) const
unsigned Cell::NetMap::_getHashValue(Name name) const
// **************************************************
{
- return (unsigned int)name._getSharedName()->getId() / 8;
+ unsigned long hash = 0;
+ unsigned long sum4 = 0;
+ const string& s = name._getSharedName()->_getSString();
+ for ( size_t i=0 ; igetId() / 8;
}
Net* Cell::NetMap::_getNextElement(Net* net) const
diff --git a/hurricane/src/hurricane/Entity.cpp b/hurricane/src/hurricane/Entity.cpp
index a042a179..c18e7f8f 100644
--- a/hurricane/src/hurricane/Entity.cpp
+++ b/hurricane/src/hurricane/Entity.cpp
@@ -34,11 +34,11 @@ namespace Hurricane {
// ****************************************************************************************************
- unsigned int Entity::_memoryLimit = 0;
- unsigned long Entity::_flags = 0;
- unsigned int Entity::_nextId = 0;
- unsigned int Entity::_idCounterLimit = 0;
- unsigned int Entity::_idCounter = 1;
+ unsigned int Entity::_memoryLimit = 0;
+ unsigned long Entity::_flags = 0;
+ unsigned int Entity::_nextId = 0;
+ unsigned int Entity::_idCounterLimit = 0;
+ unsigned int Entity::_idCounter = 1;
void Entity::setIdCounterLimit ( unsigned int limit )
@@ -99,7 +99,7 @@ namespace Hurricane {
}
}
- return _idCounter++;
+ return ++_idCounter;
}
@@ -130,6 +130,14 @@ namespace Hurricane {
}
+ void Entity::_postCreate()
+ {
+ Inherit::_postCreate();
+
+ //cerr << _getString() << endl;
+ }
+
+
void Entity::_preDestroy()
{
//ltrace(10) << "Entity::_preDestroy() - " << (void*)this << endl;
diff --git a/hurricane/src/hurricane/hurricane/Entity.h b/hurricane/src/hurricane/hurricane/Entity.h
index 8ba92e52..ae8ef382 100644
--- a/hurricane/src/hurricane/hurricane/Entity.h
+++ b/hurricane/src/hurricane/hurricane/Entity.h
@@ -40,8 +40,8 @@ namespace Hurricane {
public:
typedef DBo Inherit;
public:
- enum EntityFlags { ForcedIdMode = (1<<0)
- , NextIdSet = (1<<1)
+ enum EntityFlags { ForcedIdMode = (1<<0)
+ , NextIdSet = (1<<1)
};
public:
static void setMemoryLimit ( unsigned int );
@@ -52,6 +52,7 @@ namespace Hurricane {
static bool inForcedIdMode ();
static void enableForcedIdMode ();
static void disableForcedIdMode ();
+ static void useIdCounter2 ();
public:
inline unsigned int getId () const;
virtual Cell* getCell () const = 0;
@@ -63,6 +64,7 @@ namespace Hurricane {
Quark* _getQuark ( SharedPath* sharedPath = NULL ) const;
protected:
Entity ();
+ virtual void _postCreate ();
virtual void _preDestroy ();
private:
static unsigned int _memoryLimit;