Skip to content

Commit

Permalink
Merge pull request #6800 from The-OpenROAD-Project-staging/rsz-fix-bu…
Browse files Browse the repository at this point in the history
…ffer-ball

rsz: Fix "buffer ball" issues
  • Loading branch information
eder-matheus authored Mar 4, 2025
2 parents 017d5f6 + 37b8627 commit fb62c2c
Show file tree
Hide file tree
Showing 7 changed files with 766 additions and 777 deletions.
22 changes: 19 additions & 3 deletions src/rsz/src/RepairSetup.cc
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,20 @@ bool RepairSetup::repairSetup(const float setup_slack_margin,
} else {
prev_termination = true;
}
resizer_->journalEnd();

// Restore to previous good checkpoint
debugPrint(logger_,
RSZ,
"repair_setup",
2,
"Restoring best slack end slack {} worst slack {}",
delayAsString(prev_end_slack, sta_, digits),
delayAsString(prev_worst_slack, sta_, digits));
resizer_->journalRestore(resize_count_,
inserted_buffer_count_,
cloned_gate_count_,
swap_pin_count_,
removed_buffer_count_);
break;
}
if (opto_iteration % opto_small_interval_ == 0) {
Expand Down Expand Up @@ -1586,8 +1599,11 @@ int RepairSetup::fanout(Vertex* vertex)
int fanout = 0;
VertexOutEdgeIterator edge_iter(vertex, graph_);
while (edge_iter.hasNext()) {
edge_iter.next();
fanout++;
Edge* edge = edge_iter.next();
// Disregard output->output timing arcs
if (edge->isWire()) {
fanout++;
}
}
return fanout;
}
Expand Down
360 changes: 191 additions & 169 deletions src/rsz/test/clone_flat.ok

Large diffs are not rendered by default.

91 changes: 38 additions & 53 deletions src/rsz/test/clone_flat_out.vok
Original file line number Diff line number Diff line change
Expand Up @@ -316,10 +316,6 @@ module hi_fanout (clk1,
wire net288;
wire net289;
wire net291;
wire net597;
wire net598;
wire net599;
wire net618;

DFF_X2 drvr_1 (.D(data),
.CK(clk1),
Expand Down Expand Up @@ -663,103 +659,103 @@ module hi_fanout (clk1,
DFF_X1 load64 (.D(net3),
.CK(clk1),
.Q(output64));
DFF_X1 load65 (.D(net598),
DFF_X1 load65 (.D(net0),
.CK(clk1),
.Q(output65));
DFF_X1 load66 (.D(net598),
DFF_X1 load66 (.D(net0),
.CK(clk1),
.Q(output66));
DFF_X1 load67 (.D(net598),
DFF_X1 load67 (.D(net0),
.CK(clk1),
.Q(output67));
DFF_X1 load68 (.D(net598),
DFF_X1 load68 (.D(net0),
.CK(clk1),
.Q(output68));
DFF_X1 load69 (.D(net598),
DFF_X1 load69 (.D(net0),
.CK(clk1),
.Q(output69));
DFF_X1 load7 (.D(net598),
DFF_X1 load7 (.D(net0),
.CK(clk1),
.Q(output7));
DFF_X1 load70 (.D(net598),
DFF_X1 load70 (.D(net0),
.CK(clk1),
.Q(output70));
DFF_X1 load71 (.D(net598),
DFF_X1 load71 (.D(net0),
.CK(clk1),
.Q(output71));
DFF_X1 load72 (.D(net598),
DFF_X1 load72 (.D(net0),
.CK(clk1),
.Q(output72));
DFF_X1 load73 (.D(net598),
DFF_X1 load73 (.D(net0),
.CK(clk1),
.Q(output73));
DFF_X1 load74 (.D(net598),
DFF_X1 load74 (.D(net0),
.CK(clk1),
.Q(output74));
DFF_X1 load75 (.D(net598),
DFF_X1 load75 (.D(net0),
.CK(clk1),
.Q(output75));
DFF_X1 load76 (.D(net598),
DFF_X1 load76 (.D(net0),
.CK(clk1),
.Q(output76));
DFF_X1 load77 (.D(net598),
DFF_X1 load77 (.D(net0),
.CK(clk1),
.Q(output77));
DFF_X1 load78 (.D(net598),
DFF_X1 load78 (.D(net0),
.CK(clk1),
.Q(output78));
DFF_X1 load79 (.D(net598),
DFF_X1 load79 (.D(net0),
.CK(clk1),
.Q(output79));
DFF_X1 load8 (.D(net598),
DFF_X1 load8 (.D(net0),
.CK(clk1),
.Q(output8));
DFF_X1 load80 (.D(net598),
DFF_X1 load80 (.D(net0),
.CK(clk1),
.Q(output80));
DFF_X1 load81 (.D(net598),
DFF_X1 load81 (.D(net0),
.CK(clk1),
.Q(output81));
DFF_X1 load82 (.D(net599),
DFF_X1 load82 (.D(net0),
.CK(clk1),
.Q(output82));
DFF_X1 load83 (.D(net599),
DFF_X1 load83 (.D(net0),
.CK(clk1),
.Q(output83));
DFF_X1 load84 (.D(net599),
DFF_X1 load84 (.D(net0),
.CK(clk1),
.Q(output84));
DFF_X1 load85 (.D(net599),
DFF_X1 load85 (.D(net0),
.CK(clk1),
.Q(output85));
DFF_X1 load86 (.D(net599),
DFF_X1 load86 (.D(net0),
.CK(clk1),
.Q(output86));
DFF_X1 load87 (.D(net599),
DFF_X1 load87 (.D(net0),
.CK(clk1),
.Q(output87));
DFF_X1 load88 (.D(net599),
DFF_X1 load88 (.D(net0),
.CK(clk1),
.Q(output88));
DFF_X1 load89 (.D(net599),
DFF_X1 load89 (.D(net0),
.CK(clk1),
.Q(output89));
DFF_X1 load9 (.D(net599),
DFF_X1 load9 (.D(net0),
.CK(clk1),
.Q(output9));
DFF_X1 load90 (.D(net618),
DFF_X1 load90 (.D(net0),
.CK(clk1),
.Q(output90));
DFF_X1 load91 (.D(net618),
DFF_X1 load91 (.D(net0),
.CK(clk1),
.Q(output91));
DFF_X1 load92 (.D(net618),
DFF_X1 load92 (.D(net0),
.CK(clk1),
.Q(output92));
DFF_X1 load93 (.D(net618),
DFF_X1 load93 (.D(net0),
.CK(clk1),
.Q(output93));
DFF_X1 load94 (.D(net618),
DFF_X1 load94 (.D(net0),
.CK(clk1),
.Q(output94));
DFF_X1 load95 (.D(net0),
Expand All @@ -780,10 +776,10 @@ module hi_fanout (clk1,
NAND2_X4 nand_inst_0 (.A1(clk_to_nand1),
.A2(clk_to_nand0),
.ZN(net0));
NAND2_X4 clone1 (.A1(net597),
NAND2_X4 clone1 (.A1(clk_to_nand0),
.A2(net289),
.ZN(net1));
NAND2_X4 clone2 (.A1(net597),
NAND2_X4 clone2 (.A1(clk_to_nand0),
.A2(net289),
.ZN(net2));
NAND2_X4 clone3 (.A1(clk_to_nand1),
Expand All @@ -792,10 +788,10 @@ module hi_fanout (clk1,
NAND2_X2 clone124 (.A1(clk_to_nand0),
.A2(clk_to_nand1),
.ZN(net124));
NAND2_X2 clone127 (.A1(net597),
NAND2_X2 clone127 (.A1(clk_to_nand0),
.A2(net289),
.ZN(net127));
NAND2_X2 clone129 (.A1(net597),
NAND2_X2 clone129 (.A1(clk_to_nand0),
.A2(net289),
.ZN(net129));
NAND2_X2 clone284 (.A1(clk_to_nand0),
Expand All @@ -806,18 +802,7 @@ module hi_fanout (clk1,
.ZN(net288));
BUF_X8 split289 (.A(clk_to_nand1),
.Z(net289));
NAND2_X2 clone291 (.A1(net597),
NAND2_X2 clone291 (.A1(clk_to_nand0),
.A2(net289),
.ZN(net291));
BUF_X4 split597 (.A(clk_to_nand0),
.Z(net597));
NAND2_X2 clone598 (.A1(clk_to_nand1),
.A2(clk_to_nand0),
.ZN(net598));
NAND2_X2 clone599 (.A1(clk_to_nand1),
.A2(clk_to_nand0),
.ZN(net599));
NAND2_X2 clone618 (.A1(clk_to_nand1),
.A2(clk_to_nand0),
.ZN(net618));
endmodule
Loading

0 comments on commit fb62c2c

Please sign in to comment.