Export Cell::flattenNets() & revlevant Cell flags.
This commit is contained in:
parent
49ffe1e1ba
commit
b0ae6be652
|
@ -646,6 +646,9 @@ namespace Etesian {
|
|||
|
||||
_cellsToIds.insert( make_pair(getString(instance->getName()),instanceId) );
|
||||
_idsToInsts.push_back( instance );
|
||||
// cerr << "FIXED id=" << instanceId
|
||||
// << " " << instance << " size:(" << xsize << " " << ysize
|
||||
// << ") pos:(" << xpos << " " << ypos << ")" << endl;
|
||||
++instanceId;
|
||||
dots.dot();
|
||||
}
|
||||
|
@ -710,8 +713,9 @@ namespace Etesian {
|
|||
|coloquinte::YFlippable;
|
||||
} else {
|
||||
instances[instanceId].attributes = 0;
|
||||
//cerr << "FIXED: " << instance << " size:(" << xsize << " " << ysize
|
||||
// << ") pos:(" << xpos << " " << ypos << ")" << endl;
|
||||
// cerr << "FIXED id=" << instanceId
|
||||
// << " " << instance << " size:(" << xsize << " " << ysize
|
||||
// << ") pos:(" << xpos << " " << ypos << ")" << endl;
|
||||
}
|
||||
|
||||
_cellsToIds.insert( make_pair(instanceName,instanceId) );
|
||||
|
|
|
@ -137,7 +137,7 @@ void Plug::setNet(Net* net)
|
|||
if (net != getNet()) {
|
||||
if (net and (getCell() != net->getCell()))
|
||||
throw Error( "Plug::setNet(): Can't set Net of plug %s to %s\n"
|
||||
"Net belong to %s instead of %s."
|
||||
"Net belong to %s while plug belong to of %s."
|
||||
, getString(this).c_str()
|
||||
, getString(net).c_str()
|
||||
, getString(net->getCell()).c_str()
|
||||
|
|
|
@ -708,6 +708,39 @@ extern "C" {
|
|||
}
|
||||
|
||||
|
||||
static PyObject* PyCell_flattenNets ( PyCell* self, PyObject *args )
|
||||
{
|
||||
cdebug_log(20,0) << "PyCell_flattenNets()" << endl;
|
||||
|
||||
Instance* instance = NULL;
|
||||
PyObject* arg0 = NULL;
|
||||
PyObject* arg1 = NULL;
|
||||
|
||||
HTRY
|
||||
METHOD_HEAD ( "Cell.flattenNets()" )
|
||||
__cs.init( "Cell.flattenNets" );
|
||||
if (not PyArg_ParseTuple(args,"O&O&:Cell.flattenNets"
|
||||
,Converter,&arg0
|
||||
,Converter,&arg1
|
||||
)) {
|
||||
PyErr_SetString( ConstructorError, "Cell.flattenNets(): Takes exactly two parameters." );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (arg0 == Py_None) {
|
||||
cell->flattenNets( NULL, PyInt_AsLong(arg1) );
|
||||
} else if (__cs.getObjectIds() == ":ent:int") {
|
||||
cell->flattenNets( PYINSTANCE_O(arg0), PyInt_AsLong(arg1) );
|
||||
} else {
|
||||
string message = "Cell.flattenNets(): Bad type of parameter(s), \"" + __cs.getObjectIds() + "\".";
|
||||
PyErr_SetString( ConstructorError, message.c_str() );
|
||||
return NULL;
|
||||
}
|
||||
HCATCH
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// Attribute Method : "PyCell_destroyPhysical ()"
|
||||
|
||||
|
@ -778,6 +811,7 @@ extern "C" {
|
|||
, { "setRouted" , (PyCFunction)PyCell_setRouted , METH_VARARGS, "Sets the cell routed status." }
|
||||
, { "uniquify" , (PyCFunction)PyCell_uniquify , METH_VARARGS, "Uniquify the Cell and it's instances up to <depth>." }
|
||||
, { "getClone" , (PyCFunction)PyCell_getClone , METH_NOARGS , "Return a copy of the Cell (placement only)." }
|
||||
, { "flattenNets" , (PyCFunction)PyCell_flattenNets , METH_VARARGS, "Perform a virtual flatten, possibly limited to one instance." }
|
||||
, { "destroyPhysical" , (PyCFunction)PyCell_destroyPhysical , METH_NOARGS , "Destroy all physical components, including DeepNets (vflatten)." }
|
||||
, { "destroy" , (PyCFunction)PyCell_destroy , METH_NOARGS , "Destroy associated hurricane object The python object remains." }
|
||||
, {NULL, NULL, 0, NULL} /* sentinel */
|
||||
|
@ -804,6 +838,18 @@ extern "C" {
|
|||
PyTypeInheritedObjectDefinitions(Cell, Entity)
|
||||
|
||||
|
||||
extern void PyCell_postModuleInit ()
|
||||
{
|
||||
PyObject* constant;
|
||||
|
||||
LoadObjectConstant(PyTypeCell.tp_dict,Cell::Flags::NoFlags ,"Flags_NoFlags");
|
||||
LoadObjectConstant(PyTypeCell.tp_dict,Cell::Flags::BuildRings ,"Flags_BuildRings");
|
||||
LoadObjectConstant(PyTypeCell.tp_dict,Cell::Flags::BuildClockRings ,"Flags_BuildClockRings");
|
||||
LoadObjectConstant(PyTypeCell.tp_dict,Cell::Flags::BuildSupplyRings,"Flags_BuildSupplyRings");
|
||||
LoadObjectConstant(PyTypeCell.tp_dict,Cell::Flags::NoClockFlatten ,"Flags_NoClockFlatten");
|
||||
}
|
||||
|
||||
|
||||
#endif // End of Shared Library Code Part.
|
||||
|
||||
|
||||
|
|
|
@ -872,6 +872,7 @@ extern "C" {
|
|||
PyRoutingPad_postModuleInit();
|
||||
PyNet_postModuleInit();
|
||||
PyNetRoutingState_postModuleInit();
|
||||
PyCell_postModuleInit();
|
||||
PyInstance_postModuleInit();
|
||||
PyQuery_postModuleInit();
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2006-2018, All Rights Reserved
|
||||
// Copyright (c) UPMC 2006-2020, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef PY_CELL_H
|
||||
#define PY_CELL_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/isobar/PyEntity.h"
|
||||
#include "hurricane/Cell.h"
|
||||
|
||||
|
@ -40,8 +38,9 @@ namespace Isobar {
|
|||
extern PyTypeObject PyTypeCell;
|
||||
extern PyMethodDef PyCell_Methods[];
|
||||
|
||||
extern PyObject* PyCell_Link ( Hurricane::Cell* object );
|
||||
extern void PyCell_LinkPyType ();
|
||||
extern PyObject* PyCell_Link ( Hurricane::Cell* object );
|
||||
extern void PyCell_LinkPyType ();
|
||||
extern void PyCell_postModuleInit ();
|
||||
|
||||
|
||||
#define IsPyCell(v) ((v)->ob_type == &PyTypeCell)
|
||||
|
@ -52,5 +51,3 @@ namespace Isobar {
|
|||
} // extern "C".
|
||||
|
||||
} // Isobar namespace.
|
||||
|
||||
#endif // PY_CELL_H
|
||||
|
|
Loading…
Reference in New Issue