Skip to content

Commit fb62c2c

Browse files
authored
Merge pull request The-OpenROAD-Project#6800 from The-OpenROAD-Project-staging/rsz-fix-buffer-ball
rsz: Fix "buffer ball" issues
2 parents 017d5f6 + 37b8627 commit fb62c2c

File tree

7 files changed

+766
-777
lines changed

7 files changed

+766
-777
lines changed

src/rsz/src/RepairSetup.cc

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,20 @@ bool RepairSetup::repairSetup(const float setup_slack_margin,
232232
} else {
233233
prev_termination = true;
234234
}
235-
resizer_->journalEnd();
235+
236+
// Restore to previous good checkpoint
237+
debugPrint(logger_,
238+
RSZ,
239+
"repair_setup",
240+
2,
241+
"Restoring best slack end slack {} worst slack {}",
242+
delayAsString(prev_end_slack, sta_, digits),
243+
delayAsString(prev_worst_slack, sta_, digits));
244+
resizer_->journalRestore(resize_count_,
245+
inserted_buffer_count_,
246+
cloned_gate_count_,
247+
swap_pin_count_,
248+
removed_buffer_count_);
236249
break;
237250
}
238251
if (opto_iteration % opto_small_interval_ == 0) {
@@ -1586,8 +1599,11 @@ int RepairSetup::fanout(Vertex* vertex)
15861599
int fanout = 0;
15871600
VertexOutEdgeIterator edge_iter(vertex, graph_);
15881601
while (edge_iter.hasNext()) {
1589-
edge_iter.next();
1590-
fanout++;
1602+
Edge* edge = edge_iter.next();
1603+
// Disregard output->output timing arcs
1604+
if (edge->isWire()) {
1605+
fanout++;
1606+
}
15911607
}
15921608
return fanout;
15931609
}

src/rsz/test/clone_flat.ok

Lines changed: 191 additions & 169 deletions
Large diffs are not rendered by default.

src/rsz/test/clone_flat_out.vok

Lines changed: 38 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -316,10 +316,6 @@ module hi_fanout (clk1,
316316
wire net288;
317317
wire net289;
318318
wire net291;
319-
wire net597;
320-
wire net598;
321-
wire net599;
322-
wire net618;
323319

324320
DFF_X2 drvr_1 (.D(data),
325321
.CK(clk1),
@@ -663,103 +659,103 @@ module hi_fanout (clk1,
663659
DFF_X1 load64 (.D(net3),
664660
.CK(clk1),
665661
.Q(output64));
666-
DFF_X1 load65 (.D(net598),
662+
DFF_X1 load65 (.D(net0),
667663
.CK(clk1),
668664
.Q(output65));
669-
DFF_X1 load66 (.D(net598),
665+
DFF_X1 load66 (.D(net0),
670666
.CK(clk1),
671667
.Q(output66));
672-
DFF_X1 load67 (.D(net598),
668+
DFF_X1 load67 (.D(net0),
673669
.CK(clk1),
674670
.Q(output67));
675-
DFF_X1 load68 (.D(net598),
671+
DFF_X1 load68 (.D(net0),
676672
.CK(clk1),
677673
.Q(output68));
678-
DFF_X1 load69 (.D(net598),
674+
DFF_X1 load69 (.D(net0),
679675
.CK(clk1),
680676
.Q(output69));
681-
DFF_X1 load7 (.D(net598),
677+
DFF_X1 load7 (.D(net0),
682678
.CK(clk1),
683679
.Q(output7));
684-
DFF_X1 load70 (.D(net598),
680+
DFF_X1 load70 (.D(net0),
685681
.CK(clk1),
686682
.Q(output70));
687-
DFF_X1 load71 (.D(net598),
683+
DFF_X1 load71 (.D(net0),
688684
.CK(clk1),
689685
.Q(output71));
690-
DFF_X1 load72 (.D(net598),
686+
DFF_X1 load72 (.D(net0),
691687
.CK(clk1),
692688
.Q(output72));
693-
DFF_X1 load73 (.D(net598),
689+
DFF_X1 load73 (.D(net0),
694690
.CK(clk1),
695691
.Q(output73));
696-
DFF_X1 load74 (.D(net598),
692+
DFF_X1 load74 (.D(net0),
697693
.CK(clk1),
698694
.Q(output74));
699-
DFF_X1 load75 (.D(net598),
695+
DFF_X1 load75 (.D(net0),
700696
.CK(clk1),
701697
.Q(output75));
702-
DFF_X1 load76 (.D(net598),
698+
DFF_X1 load76 (.D(net0),
703699
.CK(clk1),
704700
.Q(output76));
705-
DFF_X1 load77 (.D(net598),
701+
DFF_X1 load77 (.D(net0),
706702
.CK(clk1),
707703
.Q(output77));
708-
DFF_X1 load78 (.D(net598),
704+
DFF_X1 load78 (.D(net0),
709705
.CK(clk1),
710706
.Q(output78));
711-
DFF_X1 load79 (.D(net598),
707+
DFF_X1 load79 (.D(net0),
712708
.CK(clk1),
713709
.Q(output79));
714-
DFF_X1 load8 (.D(net598),
710+
DFF_X1 load8 (.D(net0),
715711
.CK(clk1),
716712
.Q(output8));
717-
DFF_X1 load80 (.D(net598),
713+
DFF_X1 load80 (.D(net0),
718714
.CK(clk1),
719715
.Q(output80));
720-
DFF_X1 load81 (.D(net598),
716+
DFF_X1 load81 (.D(net0),
721717
.CK(clk1),
722718
.Q(output81));
723-
DFF_X1 load82 (.D(net599),
719+
DFF_X1 load82 (.D(net0),
724720
.CK(clk1),
725721
.Q(output82));
726-
DFF_X1 load83 (.D(net599),
722+
DFF_X1 load83 (.D(net0),
727723
.CK(clk1),
728724
.Q(output83));
729-
DFF_X1 load84 (.D(net599),
725+
DFF_X1 load84 (.D(net0),
730726
.CK(clk1),
731727
.Q(output84));
732-
DFF_X1 load85 (.D(net599),
728+
DFF_X1 load85 (.D(net0),
733729
.CK(clk1),
734730
.Q(output85));
735-
DFF_X1 load86 (.D(net599),
731+
DFF_X1 load86 (.D(net0),
736732
.CK(clk1),
737733
.Q(output86));
738-
DFF_X1 load87 (.D(net599),
734+
DFF_X1 load87 (.D(net0),
739735
.CK(clk1),
740736
.Q(output87));
741-
DFF_X1 load88 (.D(net599),
737+
DFF_X1 load88 (.D(net0),
742738
.CK(clk1),
743739
.Q(output88));
744-
DFF_X1 load89 (.D(net599),
740+
DFF_X1 load89 (.D(net0),
745741
.CK(clk1),
746742
.Q(output89));
747-
DFF_X1 load9 (.D(net599),
743+
DFF_X1 load9 (.D(net0),
748744
.CK(clk1),
749745
.Q(output9));
750-
DFF_X1 load90 (.D(net618),
746+
DFF_X1 load90 (.D(net0),
751747
.CK(clk1),
752748
.Q(output90));
753-
DFF_X1 load91 (.D(net618),
749+
DFF_X1 load91 (.D(net0),
754750
.CK(clk1),
755751
.Q(output91));
756-
DFF_X1 load92 (.D(net618),
752+
DFF_X1 load92 (.D(net0),
757753
.CK(clk1),
758754
.Q(output92));
759-
DFF_X1 load93 (.D(net618),
755+
DFF_X1 load93 (.D(net0),
760756
.CK(clk1),
761757
.Q(output93));
762-
DFF_X1 load94 (.D(net618),
758+
DFF_X1 load94 (.D(net0),
763759
.CK(clk1),
764760
.Q(output94));
765761
DFF_X1 load95 (.D(net0),
@@ -780,10 +776,10 @@ module hi_fanout (clk1,
780776
NAND2_X4 nand_inst_0 (.A1(clk_to_nand1),
781777
.A2(clk_to_nand0),
782778
.ZN(net0));
783-
NAND2_X4 clone1 (.A1(net597),
779+
NAND2_X4 clone1 (.A1(clk_to_nand0),
784780
.A2(net289),
785781
.ZN(net1));
786-
NAND2_X4 clone2 (.A1(net597),
782+
NAND2_X4 clone2 (.A1(clk_to_nand0),
787783
.A2(net289),
788784
.ZN(net2));
789785
NAND2_X4 clone3 (.A1(clk_to_nand1),
@@ -792,10 +788,10 @@ module hi_fanout (clk1,
792788
NAND2_X2 clone124 (.A1(clk_to_nand0),
793789
.A2(clk_to_nand1),
794790
.ZN(net124));
795-
NAND2_X2 clone127 (.A1(net597),
791+
NAND2_X2 clone127 (.A1(clk_to_nand0),
796792
.A2(net289),
797793
.ZN(net127));
798-
NAND2_X2 clone129 (.A1(net597),
794+
NAND2_X2 clone129 (.A1(clk_to_nand0),
799795
.A2(net289),
800796
.ZN(net129));
801797
NAND2_X2 clone284 (.A1(clk_to_nand0),
@@ -806,18 +802,7 @@ module hi_fanout (clk1,
806802
.ZN(net288));
807803
BUF_X8 split289 (.A(clk_to_nand1),
808804
.Z(net289));
809-
NAND2_X2 clone291 (.A1(net597),
805+
NAND2_X2 clone291 (.A1(clk_to_nand0),
810806
.A2(net289),
811807
.ZN(net291));
812-
BUF_X4 split597 (.A(clk_to_nand0),
813-
.Z(net597));
814-
NAND2_X2 clone598 (.A1(clk_to_nand1),
815-
.A2(clk_to_nand0),
816-
.ZN(net598));
817-
NAND2_X2 clone599 (.A1(clk_to_nand1),
818-
.A2(clk_to_nand0),
819-
.ZN(net599));
820-
NAND2_X2 clone618 (.A1(clk_to_nand1),
821-
.A2(clk_to_nand0),
822-
.ZN(net618));
823808
endmodule

0 commit comments

Comments
 (0)