The-OpenROAD-Project / The-OpenROAD-Project/OpenROAD

gpl: top-level region limitation

Open
#11,128 3 comments 0 reactions 2 assignees View on GitHub

@LucasYuki is already working on this.

Since Aug 12, 2026.

gpl
Dominant language
Verilog
Stars
3.1k
Forks
1k
Avg merge
2d 23h
Merged PRs (30d)
136

Description

Description

In the past, we used dummy cells to occupy all space outside a given region, meaning the region sees its outer space as fully occupied. This acted as a soft constraint, as GPL still allows overlaps. In other words, every region had access to the entire core area, but the space outside its bounds was pre-filled with dummy instances.

To enforce a hard constraint, I modified the region space in OpenROAD PR #8693. Instead of spanning the whole core area and relying on dummy cells, the bin grid is now restricted directly to the region’s area. As a result, the region has no access to or awareness of space beyond its boundary. This successfully guarantees that every region-assigned instance remains strictly within its designated region. However, this hard constraint does not apply to top-level instances.

The Issue: Top-level (regionless) still uses dummy instances to occupy regions. Because this relies on soft density penalties rather than strict boundary constraints, top-level instances can still bleed inside regions. Macros work the same, using dummy instances.

I considered creating holes/voids in the bin grid for the top-level, but I suspect this approach will introduce grid continuity and density calculation issues. Alternative ideas or suggestions are welcome.

The upf_aes.tcl test clearly demonstrates this issue. For example, here is how DPL pull top-level instances out into regionless space:

Image
Suggested Solution

No response

Additional Context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.