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:
Suggested Solution
No response
Additional Context
No response
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:
Suggested Solution
No response
Additional Context
No response