The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.53k stars 536 forks source link

Option to create reserved space during floorplan #3844

Closed vijayank88 closed 3 months ago

vijayank88 commented 1 year ago

Description

We are working on a design to fabricate with 180nm.

The fab require 274um x 85um reserved space between IO pads and core area to keep fab structure and silicon number. In that area no signal should be crossing.

So looking for feature to implement the reserved space within the die area using OpenROAD.

cc/ @maliberty

Suggested Solution

No response

Additional Context

No response

maliberty commented 1 year ago

I think the main piece needed is support for dbObstruction in drt. I believe grt supports them (@eder-matheus please confirm).

eder-matheus commented 1 year ago

I think the main piece needed is support for dbObstruction in drt. I believe grt supports them (@eder-matheus please confirm).

Yes, GRT considers dbObstruction when calculating the routing resources. Is the idea to support dbObstruction in the detailed router as obstacles that would create DRCs with nets?

maliberty commented 1 year ago

Yes we should not route through obstructions (the same as if they belonged to a macro)

eder-matheus commented 1 year ago

@maliberty Apparently, DRT already has support for dbObstructions. When reading the design, the function io::Parser::setObstructions is called, which traverses all the dbObstructions and adds them as blockages to the frBlock.

How can I create a test case for the dbObstructions? Can I represent them in the DEF file somehow?

maliberty commented 1 year ago

I guess I missed that when I look a quick look. You can add a BLOCKAGES section to DEF

eder-matheus commented 1 year ago

I've added a met1 blockage between the pins of a net, and DRT is respecting it:

image

GRT also respects it, so we have full support for obstructions in our routers. I will create a PR to add unit tests for both GRT and DRT.

maliberty commented 1 year ago

@vijayank88 it looks like you can use this already. You would have to create the dbObstruction through odb APIs currently. If needed we could make a more high level command.

vijayank88 commented 1 year ago

@maliberty Thanks for the update.

If needed we could make a more high level command.

If it is easy to add mean, please add high level command option... If it is time consuming one mean, we will wait for fab confirmation to implement the same. Until if needed close this issue, can be re-opened again when needed.

rovinski commented 1 year ago

Maybe it's just because this is an old process, but most fabs should give you a LEF for the obstruction which you then manually place like a macro. The LEF will have the necessary obstruction info in it. This allows you to also merge in the fiducial cell GDS without any extra scripting.

If the fab really didn't provide a LEF/GDS and asked to reserve a space, then yes, creating an obstruction/blockage is the right way to go.

maliberty commented 3 months ago

Please reopen if this is still needed. It appears to be stale.