Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel
This commit is contained in:
commit
0864db6c2f
|
@ -93,7 +93,7 @@ namespace Bora {
|
||||||
_picker->setStateMachine(new QwtPickerClickPointMachine());
|
_picker->setStateMachine(new QwtPickerClickPointMachine());
|
||||||
setStyleSheet ( "border: 0px" );
|
setStyleSheet ( "border: 0px" );
|
||||||
|
|
||||||
int ptSize = Graphics::isHighDpi() ? 5 : 3;
|
int ptSize = Graphics::isHighDpi() ? 2 : 2;
|
||||||
|
|
||||||
QwtText xTitle ( QString::fromUtf8("Width (µm)") );
|
QwtText xTitle ( QString::fromUtf8("Width (µm)") );
|
||||||
QwtText yTitle ( QString::fromUtf8("Height (µm)") );
|
QwtText yTitle ( QString::fromUtf8("Height (µm)") );
|
||||||
|
@ -124,8 +124,8 @@ namespace Bora {
|
||||||
_STreeCurve->attach ( _plot );
|
_STreeCurve->attach ( _plot );
|
||||||
|
|
||||||
QwtSymbol* symbol = new QwtSymbol();
|
QwtSymbol* symbol = new QwtSymbol();
|
||||||
symbol->setStyle( QwtSymbol::Cross );
|
symbol->setStyle( QwtSymbol::Triangle );
|
||||||
symbol->setSize ( 20 );
|
symbol->setSize ( 6 );
|
||||||
symbol->setPen ( dotPen );
|
symbol->setPen ( dotPen );
|
||||||
_STreeCurve->setSymbol( symbol );
|
_STreeCurve->setSymbol( symbol );
|
||||||
|
|
||||||
|
|
|
@ -735,6 +735,7 @@ namespace Etesian {
|
||||||
cmess2 << " - Sub-place Area: " << _placeArea << "." << endl;
|
cmess2 << " - Sub-place Area: " << _placeArea << "." << endl;
|
||||||
DbU::Unit totalLength = (_placeArea.getHeight()/sliceHeight) * _placeArea.getWidth();
|
DbU::Unit totalLength = (_placeArea.getHeight()/sliceHeight) * _placeArea.getWidth();
|
||||||
DbU::Unit usedLength = 0;
|
DbU::Unit usedLength = 0;
|
||||||
|
DbU::Unit registerLength = 0;
|
||||||
|
|
||||||
Dots dots ( cmess2, " ", 80, 1000 );
|
Dots dots ( cmess2, " ", 80, 1000 );
|
||||||
if (not cmess2.enabled()) dots.disable();
|
if (not cmess2.enabled()) dots.disable();
|
||||||
|
@ -750,8 +751,11 @@ namespace Etesian {
|
||||||
for ( Instance* instance : getCell()->getInstances() ) {
|
for ( Instance* instance : getCell()->getInstances() ) {
|
||||||
if (instance == getBlockInstance()) continue;
|
if (instance == getBlockInstance()) continue;
|
||||||
string masterName = getString( instance->getMasterCell()->getName() );
|
string masterName = getString( instance->getMasterCell()->getName() );
|
||||||
if (masterName.substr(0,3) == "sff") ++registerNb;
|
|
||||||
Box instanceAb = instance->getAbutmentBox();
|
Box instanceAb = instance->getAbutmentBox();
|
||||||
|
if (masterName.substr(0,3) == "sff") {
|
||||||
|
++registerNb;
|
||||||
|
registerLength += instanceAb.getWidth();
|
||||||
|
}
|
||||||
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
|
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
|
||||||
if (topAb.intersect(instanceAb)) {
|
if (topAb.intersect(instanceAb)) {
|
||||||
++instancesNb;
|
++instancesNb;
|
||||||
|
@ -759,6 +763,9 @@ namespace Etesian {
|
||||||
totalLength -= (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
totalLength -= (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (instance->getPlacementStatus() == Instance::PlacementStatus::PLACED) {
|
||||||
|
cerr << "PLACED " << instance << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -767,10 +774,15 @@ namespace Etesian {
|
||||||
Instance* instance = static_cast<Instance*>(occurrence.getEntity());
|
Instance* instance = static_cast<Instance*>(occurrence.getEntity());
|
||||||
Box instanceAb = instance->getAbutmentBox();
|
Box instanceAb = instance->getAbutmentBox();
|
||||||
string masterName = getString( instance->getMasterCell()->getName() );
|
string masterName = getString( instance->getMasterCell()->getName() );
|
||||||
if (masterName.substr(0,3) == "sff") ++registerNb;
|
if (masterName.substr(0,3) == "sff") {
|
||||||
|
++registerNb;
|
||||||
|
registerLength += instanceAb.getWidth();
|
||||||
|
}
|
||||||
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
|
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
|
||||||
++fixedNb;
|
++fixedNb;
|
||||||
totalLength -= (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
totalLength -= (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
||||||
|
} else if (instance->getPlacementStatus() == Instance::PlacementStatus::PLACED) {
|
||||||
|
cerr << "PLACED " << instance << endl;
|
||||||
} else {
|
} else {
|
||||||
usedLength += (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
usedLength += (instanceAb.getHeight()/sliceHeight) * instanceAb.getWidth();
|
||||||
//cerr << DbU::getValueString(usedLength) << " " << instance << endl;
|
//cerr << DbU::getValueString(usedLength) << " " << instance << endl;
|
||||||
|
@ -800,6 +812,8 @@ namespace Etesian {
|
||||||
ostringstream os1;
|
ostringstream os1;
|
||||||
os1 << registerNb << " (" << fixed << setprecision(2) << ratio << "%)";
|
os1 << registerNb << " (" << fixed << setprecision(2) << ratio << "%)";
|
||||||
cmess1 << ::Dots::asString ( " - Registers (DFF) ", os1.str() ) << endl;
|
cmess1 << ::Dots::asString ( " - Registers (DFF) ", os1.str() ) << endl;
|
||||||
|
cmess1 << ::Dots::asPercentage( " - Registers (DFF) area "
|
||||||
|
, (float)(registerLength)/(float)totalLength ) << endl;
|
||||||
ratio = ((float)_bufferCount / (float)instancesNb) * 100.0;
|
ratio = ((float)_bufferCount / (float)instancesNb) * 100.0;
|
||||||
ostringstream os2;
|
ostringstream os2;
|
||||||
os2 << _bufferCount << " (" << fixed << setprecision(2) << ratio << "%)";
|
os2 << _bufferCount << " (" << fixed << setprecision(2) << ratio << "%)";
|
||||||
|
|
|
@ -287,8 +287,8 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
PyMethodDef PyLayoutGenerator_Methods[] =
|
PyMethodDef PyLayoutGenerator_Methods[] =
|
||||||
{ { "getVerboseLevel" , (PyCFunction)PyLayoutGenerator_getVerboseLevel , METH_NOARGS|METH_CLASS, "Return the verbosity level." }
|
{ { "getVerboseLevel" , (PyCFunction)PyLayoutGenerator_getVerboseLevel , METH_NOARGS |METH_STATIC, "Return the verbosity level." }
|
||||||
, { "setVerboseLevel" , (PyCFunction)PyLayoutGenerator_setVerboseLevel , METH_CLASS, "Sets the verbosity level." }
|
, { "setVerboseLevel" , (PyCFunction)PyLayoutGenerator_setVerboseLevel , METH_VARARGS|METH_STATIC, "Sets the verbosity level." }
|
||||||
, { "getDevice" , (PyCFunction)PyLayoutGenerator_getDevice , METH_NOARGS , "Return the Device currently loaded." }
|
, { "getDevice" , (PyCFunction)PyLayoutGenerator_getDevice , METH_NOARGS , "Return the Device currently loaded." }
|
||||||
, { "getNumberTransistor", (PyCFunction)PyLayoutGenerator_getNumberTransistor, METH_NOARGS , "Return how many real transistors (fingers) are useds." }
|
, { "getNumberTransistor", (PyCFunction)PyLayoutGenerator_getNumberTransistor, METH_NOARGS , "Return how many real transistors (fingers) are useds." }
|
||||||
, { "getNumberStack" , (PyCFunction)PyLayoutGenerator_getNumberStack , METH_NOARGS , "Return how many transistor stacks are useds." }
|
, { "getNumberStack" , (PyCFunction)PyLayoutGenerator_getNumberStack , METH_NOARGS , "Return how many transistor stacks are useds." }
|
||||||
|
|
Loading…
Reference in New Issue