Export polarity of multi-row cells
This commit is contained in:
parent
764464911e
commit
06ea3d6e09
|
@ -54,6 +54,7 @@ namespace {
|
||||||
using namespace Hurricane;
|
using namespace Hurricane;
|
||||||
using Etesian::EtesianEngine;
|
using Etesian::EtesianEngine;
|
||||||
using coloquinte::CellOrientation;
|
using coloquinte::CellOrientation;
|
||||||
|
using coloquinte::CellRowPolarity;
|
||||||
|
|
||||||
Instance* extractInstance ( const RoutingPad* rp )
|
Instance* extractInstance ( const RoutingPad* rp )
|
||||||
{
|
{
|
||||||
|
@ -804,7 +805,7 @@ namespace Etesian {
|
||||||
vector<int> cellHeight( instancesNb+1 );
|
vector<int> cellHeight( instancesNb+1 );
|
||||||
vector<bool> cellIsFixed( instancesNb+1 );
|
vector<bool> cellIsFixed( instancesNb+1 );
|
||||||
vector<bool> cellIsObstruction( instancesNb+1 );
|
vector<bool> cellIsObstruction( instancesNb+1 );
|
||||||
vector<coloquinte::CellRowPolarity> cellRowPolarity( instancesNb+1, coloquinte::CellRowPolarity::SAME );
|
vector<CellRowPolarity> cellRowPolarity( instancesNb+1, CellRowPolarity::SAME );
|
||||||
|
|
||||||
cmess1 << " - Building RoutingPads (transhierarchical)" << endl;
|
cmess1 << " - Building RoutingPads (transhierarchical)" << endl;
|
||||||
//getCell()->flattenNets( Cell::Flags::BuildRings|Cell::Flags::NoClockFlatten );
|
//getCell()->flattenNets( Cell::Flags::BuildRings|Cell::Flags::NoClockFlatten );
|
||||||
|
@ -888,6 +889,11 @@ namespace Etesian {
|
||||||
cellWidth[instanceId] = xsize;
|
cellWidth[instanceId] = xsize;
|
||||||
cellHeight[instanceId] = ysize;
|
cellHeight[instanceId] = ysize;
|
||||||
|
|
||||||
|
int nbRows = ysize / rowHeight;
|
||||||
|
if (nbRows % 2 != 1) {
|
||||||
|
cellRowPolarity[instanceId] = CellRowPolarity::NW;
|
||||||
|
}
|
||||||
|
|
||||||
if ( not instance->isFixed() and instance->isTerminalNetlist() ) {
|
if ( not instance->isFixed() and instance->isTerminalNetlist() ) {
|
||||||
cellIsFixed[instanceId] = false;
|
cellIsFixed[instanceId] = false;
|
||||||
cellIsObstruction[instanceId] = false;
|
cellIsObstruction[instanceId] = false;
|
||||||
|
@ -1027,7 +1033,7 @@ namespace Etesian {
|
||||||
, (int)(topAb.getYMin() / vpitch)
|
, (int)(topAb.getYMin() / vpitch)
|
||||||
, (int)(topAb.getYMax() / vpitch)
|
, (int)(topAb.getYMax() / vpitch)
|
||||||
);
|
);
|
||||||
_circuit->setupRows(*_surface, (getSliceHeight() + vpitch - 1) / vpitch);
|
_circuit->setupRows(*_surface, rowHeight);
|
||||||
_circuit->check();
|
_circuit->check();
|
||||||
_placementLB = new coloquinte::PlacementSolution ();
|
_placementLB = new coloquinte::PlacementSolution ();
|
||||||
_placementUB = new coloquinte::PlacementSolution ( *_placementLB );
|
_placementUB = new coloquinte::PlacementSolution ( *_placementLB );
|
||||||
|
|
Loading…
Reference in New Issue