Skip to content

Commit

Permalink
Merge pull request The-OpenROAD-Project#4991 from AcKoucher/mpl2-glob…
Browse files Browse the repository at this point in the history
…al-align

mpl2: post-annealing step to push macros to boundaries
  • Loading branch information
maliberty authored May 17, 2024
2 parents 1aae39c + ef9c3d0 commit 22c98c9
Show file tree
Hide file tree
Showing 7 changed files with 423 additions and 460 deletions.
17 changes: 12 additions & 5 deletions src/mpl2/doc/debugMessages.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# MPL2 Debug Messages

MPL2 debug messages are divided in:
- 4 groups according to HierRTLMP flow stages.
- 5 groups according to HierRTLMP flow stages.
- 1 group for a post-process stage responsible for pushing the macros to the boundaries if possible.
- 1 group for the special case in which bus planning is used.

## Groups
Expand Down Expand Up @@ -34,11 +35,17 @@ MPL2 debug messages are divided in:
* Clusters' connections;
* Simulated annealing results for both SoftMacro and HardMacro.

### Orientation Improvement
- Group Name: `flipping`
- Levels:
1. Print the wire length before and after flipping

### Boundary Push
- Group Name: `boundary_push`
- Levels:
1. Print name of the macro cluster currently being pushed, its distance to the close boundaries and a message if the move was not possible due to overlap.

### Bus Planning
Special case for bus planning with a single level.
- Group Name: `bus_planning`

### Fine Shaping
- Group Name: `flipping`
- Levels:
1. Print the wire length before and after flipping
2 changes: 1 addition & 1 deletion src/mpl2/src/bus_synthesis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1030,7 +1030,7 @@ bool calNetPaths(std::vector<SoftMacro>& soft_macros, // placed soft macros
debugPrint(logger, MPL, "bus_planning", 1, "working on path {}", i);
auto target_cluster
= soft_macros[nets[path_net_map[i]].terminals.second].getCluster();
PinAccess src_pin = NONE;
Boundary src_pin = NONE;
Cluster* pre_cluster = nullptr;
int last_edge_id = -1;
const float net_weight = nets[path_net_map[i]].weight;
Expand Down
2 changes: 1 addition & 1 deletion src/mpl2/src/bus_synthesis.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ struct Edge
std::pair<int, int> terminals; // the vertex_id of two terminal vertices
bool direction = false; // True for horizontal and False for vertical
bool internal = true; // True for edge within one SoftMacro otherwise false
PinAccess pin_access
Boundary pin_access
= NONE; // pin_access for internal == false (for src vertex)
float length = 0.0; // the length of edge
float length_w = 0.0; // weighted length : weight * length
Expand Down
Loading

0 comments on commit 22c98c9

Please sign in to comment.