efabless / caravel

Caravel is a standard SoC harness with on chip resources to control and read/write operations from a user-dedicated space.
https://caravel-harness.readthedocs.io/
Apache License 2.0
263 stars 63 forks source link

Openframe DEF File PR boundary #500

Closed marwaneltoukhy closed 8 months ago

marwaneltoukhy commented 9 months ago

The openframe example def file has the PR boundary overlapping the PR boundary of the chip_io, which makes the router rout over pins inside the chip_io boundary.

RTimothyEdwards commented 9 months ago

@marwaneltoukhy : Are you sure it's the PR boundary, or is it just that the DEF file did not contain blockages where the non-pin metal shapes are? Can you post a screenshot of where the error is?

marwaneltoukhy commented 9 months ago

From my understanding, OpenLane doesn't take the obstructions into consideration from the template def file, it only uses it to get the pin coordinates. As OpenLane doesn't see the whole chip when hardening the user wrapper, it is legal for it to route anywhere in the PR boundary, which is the source of the problem, because the PR boundaries of the chip_io and the wrapper overlap it routed over the pins. image

RTimothyEdwards commented 9 months ago

@marwaneltoukhy : Then you need to fix openlane. I'm sure OpenROAD will respect obstructions in the input DEF file.

RTimothyEdwards commented 9 months ago

@marwaneltoukhy : There is another solution I could employ, which would be to create another gpiov2 cell wrapper that would be just for the openframe version and would just remove all the unused pins. Then I could probably keep everything else exactly as it is currently defined and openlane would be fine routing anywhere within the boundary.