Skip to content

Commit 74096e7

Browse files
committed
Merge remote-tracking branch 'origin' into ant_prints_issue
Signed-off-by: luis201420 <luisemv@precisioninno.com>
2 parents 8d0809e + 369e8f0 commit 74096e7

11 files changed

Lines changed: 1025 additions & 725 deletions

File tree

src/pad/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ cc_library(
1515
srcs = [
1616
"src/ICeWall.cpp",
1717
"src/MakeICeWall.cpp",
18+
"src/PadPlacer.cpp",
19+
"src/PadPlacer.h",
1820
"src/RDLGui.cpp",
1921
"src/RDLGui.h",
2022
"src/RDLRoute.cpp",

src/pad/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ target_sources(pad
1616
PRIVATE
1717
src/MakeICeWall.cpp
1818
src/ICeWall.cpp
19+
src/PadPlacer.cpp
1920
src/RDLRouter.cpp
2021
src/RDLRoute.cpp
2122
src/RDLGui.cpp

src/pad/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ place_pads
228228
| Switch Name | Description |
229229
| ----- | ----- |
230230
| `-row` | Name of the row to place the pad into, examples include: `IO_NORTH`, `IO_SOUTH`, `IO_WEST`, `IO_EAST`, `IO_NORTH_0`, `IO_NORTH_1`. |
231-
| `-mode` | Select the mode to use during pad placement, choices are `bump_aligned` and `uniform`. Default will select `bump_aligned` if possible, otherwise fallback to `uniform`. |
231+
| `-mode` | Select the mode to use during pad placement, choices are `bump_aligned`, `linear`, and `uniform`. Default will select `bump_aligned` if possible, otherwise fallback to `uniform`. |
232232
| `pads` | Name of the instances in the order they should be placed (left to right for `IO_SOUTH` and `IO_NORTH` and bottom to top for `IO_WEST` and `IO_EAST`). |
233233

234234
#### Modes
@@ -241,6 +241,10 @@ In `bump_aligned` mode, the pads will be clustered near their assigned bumps to
241241

242242
<img src="./doc/image/mode_bump_aligned.png" width=450px>
243243

244+
In `linear` mode, the pads will be place starting from the bottom or left of the row next to eachother.
245+
246+
<img src="./doc/image/mode_linear.png" width=450px>
247+
244248
### Placing Pads Manually
245249

246250
To place a pad into the pad ring.

src/pad/doc/image/mode_linear.png

10.6 KB
Loading

src/pad/include/pad/ICeWall.h

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ enum class PlacementStrategy
3030
{
3131
DEFAULT,
3232
BUMP_ALIGNED,
33-
UNIFORM
33+
UNIFORM,
34+
LINEAR
3435
};
3536

3637
class ICeWall
@@ -110,19 +111,11 @@ class ICeWall
110111

111112
private:
112113
odb::dbBlock* getBlock() const;
113-
int snapToRowSite(odb::dbRow* row, int location) const;
114114

115115
std::vector<odb::dbRow*> getRows() const;
116116
std::vector<odb::dbInst*> getPadInstsInRow(odb::dbRow* row) const;
117117
std::vector<odb::dbInst*> getPadInsts() const;
118118

119-
int placeInstance(odb::dbRow* row,
120-
int index,
121-
odb::dbInst* inst,
122-
const odb::dbOrientType& base_orient,
123-
bool allow_overlap = false,
124-
bool allow_shift = false) const;
125-
126119
void makeBTerm(odb::dbNet* net,
127120
odb::dbTechLayer* layer,
128121
const odb::Rect& shape) const;
@@ -138,43 +131,6 @@ class ICeWall
138131
std::string getRowName(const std::string& name, int ring_index) const;
139132
odb::Direction2D::Value getRowEdge(odb::dbRow* row) const;
140133

141-
int64_t estimateWirelengths(odb::dbInst* inst,
142-
const std::set<odb::dbITerm*>& iterms) const;
143-
int64_t computePadBumpDistance(odb::dbInst* inst,
144-
int inst_width,
145-
odb::dbITerm* bump,
146-
odb::dbRow* row,
147-
int center_pos) const;
148-
void placePadsUniform(const std::vector<odb::dbInst*>& insts,
149-
odb::dbRow* row,
150-
const std::map<odb::dbInst*, int>& inst_widths,
151-
int pads_width,
152-
int row_width,
153-
int row_start) const;
154-
void placePadsBumpAligned(
155-
const std::vector<odb::dbInst*>& insts,
156-
odb::dbRow* row,
157-
const std::map<odb::dbInst*, int>& inst_widths,
158-
int pads_width,
159-
int row_width,
160-
int row_start,
161-
const std::map<odb::dbInst*, std::set<odb::dbITerm*>>& iterm_connections)
162-
const;
163-
std::map<odb::dbInst*, odb::dbITerm*> getBumpAlignmentGroup(
164-
odb::dbRow* row,
165-
int offset,
166-
const std::map<odb::dbInst*, int>& inst_widths,
167-
const std::map<odb::dbInst*, std::set<odb::dbITerm*>>& iterm_connections,
168-
const std::vector<odb::dbInst*>::const_iterator& itr,
169-
const std::vector<odb::dbInst*>::const_iterator& inst_end) const;
170-
void performPadFlip(odb::dbRow* row,
171-
odb::dbInst* inst,
172-
const std::map<odb::dbInst*, std::set<odb::dbITerm*>>&
173-
iterm_connections) const;
174-
std::optional<std::pair<odb::dbInst*, odb::Rect>> checkInstancePlacement(
175-
odb::dbInst* inst,
176-
odb::dbRow* row) const;
177-
178134
// Data members
179135
odb::dbDatabase* db_ = nullptr;
180136
utl::Logger* logger_ = nullptr;

0 commit comments

Comments
 (0)