The-OpenROAD-Project-Attic / ioPlacer

IO and Pin Placer for Floorplan-Placement Subflow
BSD 3-Clause "New" or "Revised" License
23 stars 11 forks source link

ioPlacer often leaves a gap on the lower left side when spreading pins #4

Closed tajayi closed 5 years ago

tajayi commented 5 years ago

Priority: Low

Version: 4b98e40f12e1acbe95da6bc6a997ab8493c5e168

Details Several designs in the alpha-release flow often have large gaps when spreading pins around the die. See the image below as an example image

The command to ioPlacer in the flow is here: https://github.com/The-OpenROAD-Project/alpha-release/blob/master/flow/Makefile#L187

Steps to reproduce:

  1. Setup the latest version of the flow (commit e7abe2a8a010019f5a0c74472b96842cb66c2a71)
  2. run the dynamic_node_nangate45 test.
  3. Open up the ./results/nangate45/dynamic_node_top_wrap/2_2_floorplan_io.def to observe the gap described (and pictured above)
vvbandeira commented 5 years ago

Hi @tajayi, the new version in master should fix this. Please note that the spread pin option is to allocate pins to neighbour sections if the current is full. For initial pin placement (when other cells are not placed), use --random NUMBER (0 = default to no random, 1 = fully random, 2 = evenly spaced, 3 = group in the middle of the edges). Please close the issue if you think this is done. Thanks

tajayi commented 5 years ago

Thanks. I'll try to validate soon, but may not get to it for a few weeks (About to go on vacation).

Can you please elaborate on what a "slot", "section" and "edge" is? Can this be added to the readme along with the options for --random.

Also, how does --force-spread work with --random 2? Seems like what I should be using in the scripts should be --random 2 (no --force-spread) if I want a simple random (evenly spaced) spreading of pins around the die?

vvbandeira commented 5 years ago

Will update the README, thanks for the reminder.

But a quick description is:

An "Edge" is one of the core boundaries (south, north, east, west) A "Slot" is a position in the edge where a pin can be placed. A "Section" is a group of sequential slots.

--force-spread has no effect when using any random placement. Will clarify in documentation and warnings in the code to avoid further confusion.

tajayi commented 5 years ago

Issue is resolved in all the designs. Thanks