In Etesian, issue an error message in case of unplaced macro-block.

In Etesian, issue an error message in case of unplaced macro-block.
This commit is contained in:
Jean-Paul Chaput 2017-11-18 12:13:16 +01:00
parent 20eadc85f3
commit a8322252ce
1 changed files with 17 additions and 1 deletions

View File

@ -425,8 +425,24 @@ namespace Etesian {
if (not cmess2.enabled()) dots.disable();
size_t instancesNb = 0;
for ( Occurrence occurrence : getCell()->getLeafInstanceOccurrences() ) {
Instance* instance = static_cast<Instance*>(occurrence.getEntity());
Cell* masterCell = instance->getMasterCell();
if ( (instance->getPlacementStatus() != Instance::PlacementStatus::PLACED)
and (instance->getPlacementStatus() != Instance::PlacementStatus::FIXED )
and (masterCell->getAbutmentBox().getHeight() != getSliceHeight()) ) {
throw Error( "EtesianEngine::toColoquinte(): Cannot manage unplaced block, instance \"%s\" of \"%s\"."
, getString(instance ->getName()).c_str()
, getString(masterCell->getName()).c_str()
);
}
++instancesNb;
}
// Coloquinte circuit description data-structures.
size_t instancesNb = getCell()->getLeafInstanceOccurrences().getSize();
vector<Transformation> idsToTransf ( instancesNb );
vector<temporary_cell> instances ( instancesNb );
vector< point<int_t> > positions ( instancesNb );