- (Remove) Restrictions rules for analog devices are now set in hurricaneAMS
This commit is contained in:
parent
da423ab308
commit
d16d6d1988
|
@ -22,7 +22,6 @@
|
||||||
find_package(VLSISAPD REQUIRED)
|
find_package(VLSISAPD REQUIRED)
|
||||||
find_package(HURRICANE REQUIRED)
|
find_package(HURRICANE REQUIRED)
|
||||||
find_package(CORIOLIS REQUIRED)
|
find_package(CORIOLIS REQUIRED)
|
||||||
find_package(HURRICANEAMS REQUIRED)
|
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(cmake_modules)
|
add_subdirectory(cmake_modules)
|
||||||
|
|
|
@ -11,7 +11,6 @@ endif ( CHECK_DETERMINISM )
|
||||||
${Boost_INCLUDE_DIRS}
|
${Boost_INCLUDE_DIRS}
|
||||||
${QtX_INCLUDE_DIR}
|
${QtX_INCLUDE_DIR}
|
||||||
${PYTHON_INCLUDE_PATH}
|
${PYTHON_INCLUDE_PATH}
|
||||||
${HURRICANEAMS_INCLUDE_DIR}
|
|
||||||
)
|
)
|
||||||
set( includes anabatic/Constants.h
|
set( includes anabatic/Constants.h
|
||||||
anabatic/Configuration.h
|
anabatic/Configuration.h
|
||||||
|
@ -56,7 +55,6 @@ endif ( CHECK_DETERMINISM )
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
${LIBXML2_LIBRARIES}
|
${LIBXML2_LIBRARIES}
|
||||||
${PYTHON_LIBRARIES} -lutil
|
${PYTHON_LIBRARIES} -lutil
|
||||||
${HURRICANEAMS_LIBRARIES}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library( anabatic ${cpps} ${mocCpps} )
|
add_library( anabatic ${cpps} ${mocCpps} )
|
||||||
|
|
|
@ -233,29 +233,6 @@ namespace Anabatic {
|
||||||
vertex->clearRestriction();
|
vertex->clearRestriction();
|
||||||
cdebug_log(112,0) << "Add Vertex: " << vertex << endl;
|
cdebug_log(112,0) << "Add Vertex: " << vertex << endl;
|
||||||
}
|
}
|
||||||
// Analog Restrictions
|
|
||||||
Plug* plug = dynamic_cast<Plug*>(rp->getPlugOccurrence().getEntity());
|
|
||||||
Cell* cell = plug->getInstance()->getMasterCell();
|
|
||||||
Device* dev = dynamic_cast<Device* >(cell);
|
|
||||||
TransistorFamily* tf = dynamic_cast<TransistorFamily*>(dev);
|
|
||||||
|
|
||||||
if (tf){
|
|
||||||
Transistor* t = dynamic_cast<Transistor* >(tf);
|
|
||||||
SimpleCurrentMirror* scm = dynamic_cast<SimpleCurrentMirror*>(tf);
|
|
||||||
DifferentialPair* dp = dynamic_cast<DifferentialPair* >(tf);
|
|
||||||
CommonSourcePair* csp = dynamic_cast<CommonSourcePair* >(tf);
|
|
||||||
|
|
||||||
unsigned int rule = 0;
|
|
||||||
if (t) { rule = t->getRestriction(plug->getMasterNet());
|
|
||||||
} else if (scm) { rule = scm->getRestriction(plug->getMasterNet());
|
|
||||||
} else if (dp) { rule = dp->getRestriction(plug->getMasterNet());
|
|
||||||
} else if (csp) { rule = csp->getRestriction(plug->getMasterNet());
|
|
||||||
}
|
|
||||||
if (!(rule&0x3 )) vertex->setWRestricted();
|
|
||||||
if (!(rule&0xC )) vertex->setERestricted();
|
|
||||||
if (!(rule&0x30)) vertex->setSRestricted();
|
|
||||||
if (!(rule&0xC0)) vertex->setNRestricted();
|
|
||||||
}
|
|
||||||
|
|
||||||
Contact* gcontact = vertex->getGContact( _net );
|
Contact* gcontact = vertex->getGContact( _net );
|
||||||
rp->getBodyHook()->detach();
|
rp->getBodyHook()->detach();
|
||||||
|
|
|
@ -25,11 +25,6 @@ namespace Hurricane {
|
||||||
class RoutingPad;
|
class RoutingPad;
|
||||||
}
|
}
|
||||||
#include "anabatic/GCell.h"
|
#include "anabatic/GCell.h"
|
||||||
#include "hurricaneAMS/analogic/Device.h"
|
|
||||||
#include "hurricaneAMS/devices/Transistor.h"
|
|
||||||
#include "hurricaneAMS/devices/SimpleCurrentMirror.h"
|
|
||||||
#include "hurricaneAMS/devices/DifferentialPair.h"
|
|
||||||
#include "hurricaneAMS/devices/CommonSourcePair.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Anabatic {
|
namespace Anabatic {
|
||||||
|
|
|
@ -90,6 +90,7 @@ namespace Anabatic {
|
||||||
inline const vector<Edge*>& getEastEdges () const;
|
inline const vector<Edge*>& getEastEdges () const;
|
||||||
inline const vector<Edge*>& getNorthEdges () const;
|
inline const vector<Edge*>& getNorthEdges () const;
|
||||||
inline const vector<Edge*>& getSouthEdges () const;
|
inline const vector<Edge*>& getSouthEdges () const;
|
||||||
|
inline const vector<Contact*>& getContacts () const;
|
||||||
inline Edges getEdges () const;
|
inline Edges getEdges () const;
|
||||||
inline GCell* getWest () const;
|
inline GCell* getWest () const;
|
||||||
inline GCell* getEast () const;
|
inline GCell* getEast () const;
|
||||||
|
@ -174,6 +175,7 @@ namespace Anabatic {
|
||||||
inline const vector<Edge*>& GCell::getEastEdges () const { return _eastEdges; }
|
inline const vector<Edge*>& GCell::getEastEdges () const { return _eastEdges; }
|
||||||
inline const vector<Edge*>& GCell::getNorthEdges () const { return _northEdges; }
|
inline const vector<Edge*>& GCell::getNorthEdges () const { return _northEdges; }
|
||||||
inline const vector<Edge*>& GCell::getSouthEdges () const { return _southEdges; }
|
inline const vector<Edge*>& GCell::getSouthEdges () const { return _southEdges; }
|
||||||
|
inline const vector<Contact*>& GCell::getContacts () const { return _contacts; }
|
||||||
inline GCell* GCell::getWest () const { return _westEdges.empty() ? NULL : _westEdges[0]->getOpposite(this); }
|
inline GCell* GCell::getWest () const { return _westEdges.empty() ? NULL : _westEdges[0]->getOpposite(this); }
|
||||||
inline GCell* GCell::getEast () const { return _eastEdges.empty() ? NULL : _eastEdges[0]->getOpposite(this); }
|
inline GCell* GCell::getEast () const { return _eastEdges.empty() ? NULL : _eastEdges[0]->getOpposite(this); }
|
||||||
inline GCell* GCell::getSouth () const { return _southEdges.empty() ? NULL : _southEdges[0]->getOpposite(this); }
|
inline GCell* GCell::getSouth () const { return _southEdges.empty() ? NULL : _southEdges[0]->getOpposite(this); }
|
||||||
|
|
Loading…
Reference in New Issue