@@ -22,14 +22,16 @@ Design::Design(odb::dbDatabase* db,
2222 sta::dbSta* sta,
2323 const Constants& constants,
2424 const int min_routing_layer,
25- const int max_routing_layer)
25+ const int max_routing_layer,
26+ std::set<odb::dbNet*> clock_nets)
2627 : block_(db->getChip ()->getBlock()),
2728 tech_(db->getTech ()),
2829 logger_(logger),
2930 sta_(sta),
3031 constants_(constants),
3132 min_routing_layer_(min_routing_layer),
32- max_routing_layer_(max_routing_layer)
33+ max_routing_layer_(max_routing_layer),
34+ clock_nets_(clock_nets)
3335{
3436 read ();
3537 setUnitCosts ();
@@ -138,7 +140,7 @@ void Design::readNetlist()
138140
139141 LayerRange layer_range
140142 = {.min_layer = min_routing_layer_, .max_layer = max_routing_layer_};
141- if (isNonLeafClock (db_net)) {
143+ if (clock_nets_. find (db_net) != clock_nets_. end ( )) {
142144 layer_range.min_layer = block_->getMinLayerForClock () - 1 ;
143145 layer_range.max_layer = block_->getMaxLayerForClock () - 1 ;
144146 }
@@ -302,34 +304,6 @@ void Design::setUnitCosts()
302304 }
303305}
304306
305- bool Design::isClkTerm (odb::dbITerm* iterm, sta::dbNetwork* network)
306- {
307- const sta::Pin* pin = network->dbToSta (iterm);
308- sta::LibertyPort* lib_port = network->libertyPort (pin);
309- bool connected_to_pad = false ;
310- if (lib_port != nullptr ) {
311- sta::LibertyCell* lib_cell = lib_port->libertyCell ();
312- connected_to_pad = lib_cell != nullptr && lib_cell->isPad ();
313- }
314-
315- return lib_port && (lib_port->isRegClk () || connected_to_pad);
316- }
317-
318- bool Design::isNonLeafClock (odb::dbNet* db_net)
319- {
320- sta::dbNetwork* network = sta_->getDbNetwork ();
321- if (db_net->getSigType () != odb::dbSigType::CLOCK ) {
322- return false ;
323- }
324-
325- for (odb::dbITerm* iterm : db_net->getITerms ()) {
326- if (isClkTerm (iterm, network)) {
327- return false ;
328- }
329- }
330- return true ;
331- }
332-
333307void Design::getAllObstacles (std::vector<std::vector<BoxT>>& all_obstacles,
334308 const bool skip_m1) const
335309{
0 commit comments