Add a register count in Etesian initialization, just for stats.

This commit is contained in:
Jean-Paul Chaput 2021-03-30 11:36:25 +02:00
parent 2140737e10
commit 946cba8209
1 changed files with 10 additions and 3 deletions

View File

@ -720,6 +720,7 @@ namespace Etesian {
size_t instancesNb = 0; size_t instancesNb = 0;
size_t fixedNb = 0; size_t fixedNb = 0;
size_t registerNb = 0;
Box topAb = _placeArea; Box topAb = _placeArea;
Transformation topTransformation; Transformation topTransformation;
if (getBlockInstance()) { if (getBlockInstance()) {
@ -727,6 +728,8 @@ namespace Etesian {
topTransformation.applyOn( topAb ); topTransformation.applyOn( topAb );
for ( Instance* instance : getCell()->getInstances() ) { for ( Instance* instance : getCell()->getInstances() ) {
if (instance == getBlockInstance()) continue; if (instance == getBlockInstance()) continue;
string masterName = getString( instance->getMasterCell()->getName() );
if (masterName.substr(0,3) == "sff") ++registerNb;
Box instanceAb = instance->getAbutmentBox(); Box instanceAb = instance->getAbutmentBox();
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) { if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
if (topAb.intersect(instanceAb)) { if (topAb.intersect(instanceAb)) {
@ -742,6 +745,8 @@ namespace Etesian {
++instancesNb; ++instancesNb;
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() );
if (masterName.substr(0,3) == "sff") ++registerNb;
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();
@ -770,11 +775,13 @@ namespace Etesian {
cmess1 << ::Dots::asUInt( " - Number of instances ", instancesNb ) << endl; cmess1 << ::Dots::asUInt( " - Number of instances ", instancesNb ) << endl;
if (instancesNb) { if (instancesNb) {
float bufferRatio = ((float)_bufferCount / (float)instancesNb) * 100.0; float ratio = ((float)registerNb / (float)instancesNb) * 100.0;
ostringstream os; ostringstream os;
os << _bufferCount << " (" << fixed << setprecision(2) << bufferRatio << "%)"; os << registerNb << " (" << fixed << setprecision(2) << ratio << "%)";
cmess1 << ::Dots::asString( " - Registers (DFF) ", os.str() ) << endl;
ratio = ((float)_bufferCount / (float)instancesNb) * 100.0;
os << _bufferCount << " (" << fixed << setprecision(2) << ratio << "%)";
cmess1 << ::Dots::asString( " - Buffers ", os.str() ) << endl; cmess1 << ::Dots::asString( " - Buffers ", os.str() ) << endl;
} }
cout.flush(); cout.flush();