diff --git a/coloquinte/src/rough_legalizers.cxx b/coloquinte/src/rough_legalizers.cxx index a2cde3e9..b70c9372 100644 --- a/coloquinte/src/rough_legalizers.cxx +++ b/coloquinte/src/rough_legalizers.cxx @@ -2,6 +2,7 @@ #include "coloquinte/rough_legalizers.hxx" #include "coloquinte/optimization_subproblems.hxx" +#include #include #include #include @@ -10,6 +11,9 @@ namespace coloquinte{ namespace gp{ + using std::cerr; + using std::endl; + namespace{ const capacity_t default_density_mul = 256; } diff --git a/etesian/src/EtesianEngine.cpp b/etesian/src/EtesianEngine.cpp index 9cb9b54e..27c72e2b 100644 --- a/etesian/src/EtesianEngine.cpp +++ b/etesian/src/EtesianEngine.cpp @@ -477,6 +477,15 @@ namespace Etesian { occurrence.makeInvalid(); instance->slaveAbutmentBox(); } + + if (not masterCell->getAbutmentBox().isEmpty() + and ( (instance->getPlacementStatus() != Instance::PlacementStatus::PLACED) + or (instance->getPlacementStatus() != Instance::PlacementStatus::FIXED ) ) ) { + throw Error( "EtesianEngine::toColoquinte(): Non-leaf instance \"%s\" of \"%s\" has an abutment box but is *not* placed." + , getString(instance ->getName()).c_str() + , getString(masterCell->getName()).c_str() + ); + } } UpdateSession::close(); @@ -590,7 +599,9 @@ namespace Etesian { } - void EtesianEngine::preplace (){ + + void EtesianEngine::preplace () + { using namespace coloquinte::gp; // Perform a very quick legalization pass