You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/dpl/README.md
+24-49Lines changed: 24 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,59 +1,34 @@
1
1
# Detailed Placement
2
2
3
-
The detailed placement module in OpenROAD (`dpl`) is based on OpenDP, or
4
-
Open-Source Detailed Placement Engine. Its key features are:
5
-
6
-
- Fence region support
7
-
- Fragmented row support
8
-
- Mixed-cell-height (1x–4x) legalization
9
-
- Two placement engines selectable at runtime
3
+
The detailed placement module in OpenROAD (`dpl`) legalizes the result of
4
+
global placement: it moves instances to legal sites on rows while
5
+
minimizing displacement. It is also used to re-legalize the design after
6
+
incremental changes such as resizing and buffer insertion. It originated from OpenDP (Open-Source Detailed
7
+
Placement Engine) and now uses a negotiation-based legalizer (NBLG) by
8
+
default, with the original OpenDP diamond search available as a legacy
9
+
engine. It supports:
10
+
11
+
- Mixed-cell-height (1x–4x) designs
12
+
- Fence regions
13
+
- Fragmented rows
14
+
- Placement padding and filler insertion
10
15
11
16
## Placement Engines
12
17
18
+
DPL provides two options for legalization. Negotiation legalizer is the default and is slightly slower, but can handle dense designs. Diamond search is faster (linear runtime), although it is not able to handle dense designs. Diamond search is also used at the end of Negotiation for handling potential failed corner cases.
19
+
20
+
#### NegotiationLegalizer
21
+
22
+
The default two-pass legalizer based on the NBLG paper. Used on
23
+
the `detailed_placement` command. The legacy diamond search engine can be
24
+
selected with `-use_diamond_legalizer`.
25
+
13
26
#### Diamond Search
14
27
15
-
The default engine performs a BFS-style diamond search from each cell's
28
+
Former engine performs a BFS-style diamond search from each cell's
16
29
global placement position, expanding outward in Manhattan order until a
17
30
legal site is found.
18
31
19
-
#### NegotiationLegalizer
20
-
21
-
An optional two-pass legalizer based on the NBLG paper. Enabled with
22
-
`-use_negotiation` on the `detailed_placement` command.
│ (Skipped) │ Cell swap via bipartite matching within groups.
51
-
│ │
52
-
└────────┬──────────┘
53
-
│
54
-
▼
55
-
Legal placement written back to OpenDB
56
-
```
57
32
# Commands
58
33
59
34
```{note}
@@ -71,7 +46,7 @@ detailed_placement
71
46
[-max_displacement disp|{disp_x disp_y}]
72
47
[-disallow_one_site_gaps]
73
48
[-report_file_name filename]
74
-
[-use_negotiation]
49
+
[-use_diamond_legalizer]
75
50
[-abacus]
76
51
[-site_search_window sites]
77
52
[-row_search_window rows]
@@ -88,7 +63,7 @@ detailed_placement
88
63
|`-report_file_name`| File name for saving the report to (e.g. `report.json`.) |
89
64
|`-incremental`| By default DPL initiates with all instances unplaced. With this flag DPL will check for already legalized instances and set them as placed. |
90
65
|`-report_file_name`| File name for saving the report to (e.g. `report.json`.) |
91
-
|`-use_negotiation`| Use the NegotiationLegalizer instead of the default diamond search engine. |
66
+
|`-use_diamond_legalizer`| Use the legacy diamond search engine instead of the default NegotiationLegalizer. |
92
67
|`-abacus`| Enable the Abacus pre-pass within the NegotiationLegalizer. Only effective when `-use_negotiation` is set. |
93
68
|`-site_search_window`| NegotiationLegalizer: base number of sites a cell may be moved left or right of its initial position, capped by `-max_displacement`. Default `20`, `0` allowed (no horizontal movement). |
94
69
|`-row_search_window`| NegotiationLegalizer: base number of rows a cell may be moved up or down from its initial position, capped by `-max_displacement`. Default `5`, `0` allowed (no row changes). |
@@ -234,7 +209,7 @@ Simply run the following script:
234
209
235
210
## Limitations
236
211
237
-
The following limitations apply when using the NegotiationLegalizer (`-use_negotiation`):
212
+
The following limitations apply when using the NegotiationLegalizer (default):
238
213
239
214
1.**Abacus cluster chain**: The current Abacus implementation uses a
240
215
simplified cluster structure. A production version should maintain an
0 commit comments