@@ -131,22 +131,22 @@ void InitialPlace::placeInstsCenter()
131131 const auto db_inst = inst->dbInst ();
132132 const auto group = db_inst->getGroup ();
133133
134- if (group && group->getType () == odb::dbGroupType::POWER_DOMAIN ) {
135- auto domain_region = group->getRegion ();
136- int domain_x_min = std::numeric_limits<int >::max ();
137- int domain_y_min = std::numeric_limits<int >::max ();
138- int domain_x_max = std::numeric_limits<int >::min ();
139- int domain_y_max = std::numeric_limits<int >::min ();
140-
141- for (auto boundary : domain_region ->getBoundaries ()) {
142- domain_x_min = std::min (domain_x_min , boundary->xMin ());
143- domain_y_min = std::min (domain_y_min , boundary->yMin ());
144- domain_x_max = std::max (domain_x_max , boundary->xMax ());
145- domain_y_max = std::max (domain_y_max , boundary->yMax ());
134+ if (group && group->getRegion () ) {
135+ auto region = group->getRegion ();
136+ int region_x_min = std::numeric_limits<int >::max ();
137+ int region_y_min = std::numeric_limits<int >::max ();
138+ int region_x_max = std::numeric_limits<int >::min ();
139+ int region_y_max = std::numeric_limits<int >::min ();
140+
141+ for (auto boundary : region ->getBoundaries ()) {
142+ region_x_min = std::min (region_x_min , boundary->xMin ());
143+ region_y_min = std::min (region_y_min , boundary->yMin ());
144+ region_x_max = std::max (region_x_max , boundary->xMax ());
145+ region_y_max = std::max (region_y_max , boundary->yMax ());
146146 }
147147
148- inst->setCenterLocation (domain_x_max - (domain_x_max - domain_x_min ) / 2 ,
149- domain_y_max - (domain_y_max - domain_y_min ) / 2 );
148+ inst->setCenterLocation (region_x_max - (region_x_max - region_x_min ) / 2 ,
149+ region_y_max - (region_y_max - region_y_min ) / 2 );
150150 ++count_region_center;
151151 } else if (pbc_->isSkipIoMode () && db_inst->isPlaced ()) {
152152 // It is helpful to pick up the placement from mpl if available,
0 commit comments