- (Remove) Restrictions rules for analog devices are now set in hurricaneAMS

This commit is contained in:
EricLaoGitHub 2016-06-22 13:36:17 +02:00
parent da423ab308
commit d16d6d1988
5 changed files with 2 additions and 31 deletions

View File

@ -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)

View File

@ -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} )

View File

@ -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();

View File

@ -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 {

View File

@ -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); }