@@ -418,45 +418,52 @@ void UnbufferMove::removeBuffer(Instance* buffer)
418418 }
419419
420420 // jk: behavior change point3
421- if (db_network_->hasHierarchy () == false ) {
422- if (db_removed) {
423- db_survivor->mergeNet (db_removed);
424- }
425- sta_->disconnectPin (in_pin);
426- sta_->disconnectPin (out_pin);
427- } else {
428- // Disconnect buffer input/output pins
429- sta_->disconnectPin (in_pin);
430- sta_->disconnectPin (out_pin);
431-
432- // Merge hier net
433- // - mergeModNet() should be done before mergeNet() because
434- // mergeNet() can involve the hierarchical net traversal during the merge
435- // operation.
436- if (survivor_modnet != nullptr && removed_modnet != nullptr ) {
437- // Merge two hier nets
438- survivor_modnet->mergeModNet (removed_modnet);
439- } else if (survivor_modnet != nullptr ) {
440- // If there is a single modnet, copy terminals of the flat net to be
441- // removed
442- survivor_modnet->connectTermsOf (db_removed);
443- } else if (removed_modnet != nullptr ) {
444- // If there is a single modnet, it should survive.
445- survivor_modnet = removed_modnet;
446- removed_modnet = nullptr ;
447-
448- // Copy terminals of the survivor flat net
449- survivor_modnet->connectTermsOf (db_survivor);
450-
451- // survivor_modnet should be renamed later.
452- new_modnet_name = db_survivor->getBlock ()->getBaseName (
453- db_survivor->getName ().c_str ());
454- }
455-
456- // Merge flat net
457- db_survivor->mergeNet (db_removed);
421+ // if (db_network_->hasHierarchy() == false) {
422+ // if (db_removed) {
423+ // db_survivor->mergeNet(db_removed);
424+ // }
425+ // sta_->disconnectPin(in_pin);
426+ // sta_->disconnectPin(out_pin);
427+ // } else {
428+
429+ // jk: behavior change point4
430+ // Disconnect buffer input/output pins
431+ // sta_->disconnectPin(in_pin);
432+ // sta_->disconnectPin(out_pin);
433+
434+ // Merge hier net
435+ // - mergeModNet() should be done before mergeNet() because
436+ // mergeNet() can involve the hierarchical net traversal during the merge
437+ // operation.
438+ if (survivor_modnet != nullptr && removed_modnet != nullptr ) {
439+ // Merge two hier nets
440+ survivor_modnet->mergeModNet (removed_modnet);
441+ } else if (survivor_modnet != nullptr ) {
442+ // If there is a single modnet, copy terminals of the flat net to be
443+ // removed
444+ survivor_modnet->connectTermsOf (db_removed);
445+ } else if (removed_modnet != nullptr ) {
446+ // If there is a single modnet, it should survive.
447+ survivor_modnet = removed_modnet;
448+ removed_modnet = nullptr ;
449+
450+ // Copy terminals of the survivor flat net
451+ survivor_modnet->connectTermsOf (db_survivor);
452+
453+ // survivor_modnet should be renamed later.
454+ new_modnet_name
455+ = db_survivor->getBlock ()->getBaseName (db_survivor->getName ().c_str ());
458456 }
459457
458+ // Merge flat net
459+ db_survivor->mergeNet (db_removed);
460+
461+ // jk: behavior change point4
462+ // Disconnect buffer input/output pins
463+ sta_->disconnectPin (in_pin);
464+ sta_->disconnectPin (out_pin);
465+ // }
466+
460467 // Remove buffer
461468 sta_->deleteInstance (buffer);
462469
0 commit comments