Add setters for space margin and aspect ratio in Etesian.
* Change: In EtesianEngine, add setters for space margin and aspect ratio. Export them in Python.
This commit is contained in:
parent
b0a3bb33af
commit
1ccb9c340f
|
@ -548,9 +548,8 @@ namespace Etesian {
|
||||||
topTransformation.applyOn( topAb );
|
topTransformation.applyOn( topAb );
|
||||||
|
|
||||||
size_t instancesNb = getCell()->getTerminalNetlistInstanceOccurrences(getBlockInstance()).getSize();
|
size_t instancesNb = getCell()->getTerminalNetlistInstanceOccurrences(getBlockInstance()).getSize();
|
||||||
if (not instancesNb) {
|
if (not instancesNb)
|
||||||
cerr << Error( "EtesianEngine::toColoquinte(): No instance to place. We're gonna crash..." ) << endl;
|
throw Error( "EtesianEngine::toColoquinte(): No instance to place." );
|
||||||
}
|
|
||||||
|
|
||||||
// Coloquinte circuit description data-structures.
|
// Coloquinte circuit description data-structures.
|
||||||
// One dummy fixed instance at the end
|
// One dummy fixed instance at the end
|
||||||
|
|
|
@ -69,7 +69,9 @@ extern "C" {
|
||||||
|
|
||||||
DirectVoidMethod(EtesianEngine,etesian,setDefaultAb)
|
DirectVoidMethod(EtesianEngine,etesian,setDefaultAb)
|
||||||
DirectVoidMethod(EtesianEngine,etesian,resetPlacement)
|
DirectVoidMethod(EtesianEngine,etesian,resetPlacement)
|
||||||
DirectSetLongAttribute(PyEtesianEngine_setFixedAbHeight,setFixedAbHeight,PyEtesianEngine,EtesianEngine)
|
DirectSetLongAttribute (PyEtesianEngine_setFixedAbHeight,setFixedAbHeight,PyEtesianEngine,EtesianEngine)
|
||||||
|
DirectSetDoubleAttribute(PyEtesianEngine_setSpaceMargin ,setSpaceMargin ,PyEtesianEngine,EtesianEngine)
|
||||||
|
DirectSetDoubleAttribute(PyEtesianEngine_setAspectRatio ,setAspectRatio ,PyEtesianEngine,EtesianEngine)
|
||||||
|
|
||||||
|
|
||||||
static PyObject* PyEtesianEngine_get ( PyObject*, PyObject* args )
|
static PyObject* PyEtesianEngine_get ( PyObject*, PyObject* args )
|
||||||
|
@ -211,6 +213,10 @@ extern "C" {
|
||||||
, "Compute and set the abutment box using the aspect ratio and the space margin." }
|
, "Compute and set the abutment box using the aspect ratio and the space margin." }
|
||||||
, { "setFixedAbHeight" , (PyCFunction)PyEtesianEngine_setFixedAbHeight , METH_VARARGS
|
, { "setFixedAbHeight" , (PyCFunction)PyEtesianEngine_setFixedAbHeight , METH_VARARGS
|
||||||
, "Use this height when computing the size of the default abutment box (disable aspect ratio)." }
|
, "Use this height when computing the size of the default abutment box (disable aspect ratio)." }
|
||||||
|
, { "setSpaceMargin" , (PyCFunction)PyEtesianEngine_setSpaceMargin , METH_VARARGS
|
||||||
|
, "Override the configuration space margin parameter value." }
|
||||||
|
, { "setAspectRatio" , (PyCFunction)PyEtesianEngine_setAspectRatio , METH_VARARGS
|
||||||
|
, "Override the configuration aspect ratio parameter value." }
|
||||||
, { "resetPlacement" , (PyCFunction)PyEtesianEngine_resetPlacement , METH_NOARGS
|
, { "resetPlacement" , (PyCFunction)PyEtesianEngine_resetPlacement , METH_NOARGS
|
||||||
, "Compute and set the abutment box using the aspect ratio and the space margin." }
|
, "Compute and set the abutment box using the aspect ratio and the space margin." }
|
||||||
, { "place" , (PyCFunction)PyEtesianEngine_place , METH_NOARGS
|
, { "place" , (PyCFunction)PyEtesianEngine_place , METH_NOARGS
|
||||||
|
|
|
@ -74,6 +74,8 @@ namespace Etesian {
|
||||||
inline double getAspectRatio () const;
|
inline double getAspectRatio () const;
|
||||||
inline string getFeedNames () const;
|
inline string getFeedNames () const;
|
||||||
inline string getBloat () const;
|
inline string getBloat () const;
|
||||||
|
inline void setSpaceMargin ( double );
|
||||||
|
inline void setAspectRatio ( double );
|
||||||
void print ( Cell* ) const;
|
void print ( Cell* ) const;
|
||||||
Record* _getRecord () const;
|
Record* _getRecord () const;
|
||||||
string _getString () const;
|
string _getString () const;
|
||||||
|
@ -106,6 +108,8 @@ namespace Etesian {
|
||||||
inline double Configuration::getAspectRatio () const { return _aspectRatio; }
|
inline double Configuration::getAspectRatio () const { return _aspectRatio; }
|
||||||
inline string Configuration::getFeedNames () const { return _feedNames; }
|
inline string Configuration::getFeedNames () const { return _feedNames; }
|
||||||
inline string Configuration::getBloat () const { return _bloat; }
|
inline string Configuration::getBloat () const { return _bloat; }
|
||||||
|
inline void Configuration::setSpaceMargin ( double margin ) { _spaceMargin = margin; }
|
||||||
|
inline void Configuration::setAspectRatio ( double ratio ) { _aspectRatio = ratio; }
|
||||||
|
|
||||||
|
|
||||||
} // Etesian namespace.
|
} // Etesian namespace.
|
||||||
|
|
|
@ -1,22 +1,20 @@
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
//
|
//
|
||||||
// This file is part of the Coriolis Software.
|
// This file is part of the Coriolis Software.
|
||||||
// Copyright (c) UPMC 2014-2018, All Rights Reserved
|
// Copyright (c) SU 2014-2020, All Rights Reserved
|
||||||
//
|
//
|
||||||
// +-----------------------------------------------------------------+
|
// +-----------------------------------------------------------------+
|
||||||
// | C O R I O L I S |
|
// | C O R I O L I S |
|
||||||
// | E t e s i a n - A n a l y t i c P l a c e r |
|
// | E t e s i a n - A n a l y t i c P l a c e r |
|
||||||
// | |
|
// | |
|
||||||
// | Author : Jean-Paul CHAPUT |
|
// | Author : Jean-Paul CHAPUT |
|
||||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||||
// | =============================================================== |
|
// | =============================================================== |
|
||||||
// | C++ Header : "./etesian/EtesianEngine.h" |
|
// | C++ Header : "./etesian/EtesianEngine.h" |
|
||||||
// +-----------------------------------------------------------------+
|
// +-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
#ifndef ETESIAN_ETESIAN_ENGINE_H
|
#pragma once
|
||||||
#define ETESIAN_ETESIAN_ENGINE_H
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include "coloquinte/circuit.hxx"
|
#include "coloquinte/circuit.hxx"
|
||||||
|
@ -82,6 +80,8 @@ namespace Etesian {
|
||||||
inline Instance* getBlockInstance () const;
|
inline Instance* getBlockInstance () const;
|
||||||
inline void setBlock ( Instance* );
|
inline void setBlock ( Instance* );
|
||||||
inline void setFixedAbHeight ( DbU::Unit );
|
inline void setFixedAbHeight ( DbU::Unit );
|
||||||
|
inline void setSpaceMargin ( double );
|
||||||
|
inline void setAspectRatio ( double );
|
||||||
void setDefaultAb ();
|
void setDefaultAb ();
|
||||||
void adjustSliceHeight ();
|
void adjustSliceHeight ();
|
||||||
void resetPlacement ();
|
void resetPlacement ();
|
||||||
|
@ -161,6 +161,8 @@ namespace Etesian {
|
||||||
inline Instance* EtesianEngine::getBlockInstance () const { return _block; }
|
inline Instance* EtesianEngine::getBlockInstance () const { return _block; }
|
||||||
inline void EtesianEngine::setBlock ( Instance* block ) { _block = block; _placed = _block->getMasterCell()->isPlaced(); }
|
inline void EtesianEngine::setBlock ( Instance* block ) { _block = block; _placed = _block->getMasterCell()->isPlaced(); }
|
||||||
inline void EtesianEngine::setFixedAbHeight ( DbU::Unit abHeight ) { _fixedAbHeight = abHeight; }
|
inline void EtesianEngine::setFixedAbHeight ( DbU::Unit abHeight ) { _fixedAbHeight = abHeight; }
|
||||||
|
inline void EtesianEngine::setSpaceMargin ( double margin ) { getConfiguration()->setSpaceMargin(margin); }
|
||||||
|
inline void EtesianEngine::setAspectRatio ( double ratio ) { getConfiguration()->setAspectRatio(ratio); }
|
||||||
|
|
||||||
// Variables.
|
// Variables.
|
||||||
extern const char* missingEtesian;
|
extern const char* missingEtesian;
|
||||||
|
@ -170,6 +172,3 @@ namespace Etesian {
|
||||||
|
|
||||||
|
|
||||||
INSPECTOR_P_SUPPORT(Etesian::EtesianEngine);
|
INSPECTOR_P_SUPPORT(Etesian::EtesianEngine);
|
||||||
|
|
||||||
|
|
||||||
#endif // ETESIAN_ETESIAN_ENGINE_H
|
|
||||||
|
|
|
@ -2,22 +2,20 @@
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
//
|
//
|
||||||
// This file is part of the Coriolis Software.
|
// This file is part of the Coriolis Software.
|
||||||
// Copyright (c) UPMC/LIP6 2014-2018, All Rights Reserved
|
// Copyright (c) SU/LIP6 2014-2020, All Rights Reserved
|
||||||
//
|
//
|
||||||
// +-----------------------------------------------------------------+
|
// +-----------------------------------------------------------------+
|
||||||
// | C O R I O L I S |
|
// | C O R I O L I S |
|
||||||
// | E t e s i a n - A n a l y t i c P l a c e r |
|
// | E t e s i a n - A n a l y t i c P l a c e r |
|
||||||
// | |
|
// | |
|
||||||
// | Author : Jean-Paul CHAPUT |
|
// | Author : Jean-Paul CHAPUT |
|
||||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||||
// | =============================================================== |
|
// | =============================================================== |
|
||||||
// | C++ Header : "./etesian/PyEtesianEngine.cpp" |
|
// | C++ Header : "./etesian/PyEtesianEngine.cpp" |
|
||||||
// +-----------------------------------------------------------------+
|
// +-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
#ifndef PY_ETESIAN_ENGINE_H
|
#pragma once
|
||||||
#define PY_ETESIAN_ENGINE_H
|
|
||||||
|
|
||||||
#include "hurricane/isobar/PyHurricane.h"
|
#include "hurricane/isobar/PyHurricane.h"
|
||||||
#include "crlcore/PyToolEngine.h"
|
#include "crlcore/PyToolEngine.h"
|
||||||
#include "etesian/EtesianEngine.h"
|
#include "etesian/EtesianEngine.h"
|
||||||
|
@ -55,5 +53,3 @@ extern "C" {
|
||||||
} // extern "C".
|
} // extern "C".
|
||||||
|
|
||||||
} // Etesian namespace.
|
} // Etesian namespace.
|
||||||
|
|
||||||
#endif // PY_ETESIAN_ENGINE_H
|
|
||||||
|
|
Loading…
Reference in New Issue