Export Cell::flattenNets() & revlevant Cell flags.

This commit is contained in:
Jean-Paul Chaput 2020-12-27 12:21:14 +01:00
parent 49ffe1e1ba
commit b0ae6be652
5 changed files with 59 additions and 11 deletions

View File

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

View File

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

View File

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

View File

@ -872,6 +872,7 @@ extern "C" {
PyRoutingPad_postModuleInit();
PyNet_postModuleInit();
PyNetRoutingState_postModuleInit();
PyCell_postModuleInit();
PyInstance_postModuleInit();
PyQuery_postModuleInit();

View File

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