Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pdn: Failure due to missing follow pins vias #5952

Open
titan73 opened this issue Oct 15, 2024 · 7 comments
Open

pdn: Failure due to missing follow pins vias #5952

titan73 opened this issue Oct 15, 2024 · 7 comments
Assignees
Labels
pdn Power Grid Generation

Comments

@titan73
Copy link
Contributor

titan73 commented Oct 15, 2024

Describe the bug

pdngen fails with the errors in log below.

The pdn script part is:

add_global_connection -net VDD -pin_pattern {^VDD$} -power
add_global_connection -net GND -pin_pattern {^GND$} -ground

set_voltage_domain -power VDD -ground GND

define_pdn_grid -name "Core"

add_pdn_stripe -followpins -layer M1 -width 2.630

add_pdn_stripe -layer M3     -width 11.280 -pitch 924.960 -spacing 16.920 -offset 37.000
add_pdn_stripe -layer M4 -width 11.280 -pitch 723.800   -spacing 16.920 -offset 107.910

add_pdn_connect -layers {M3 M4}
add_pdn_connect -layers {M1 M4}

pdn::debug_renderer 1
pdn::debug_renderer_update

pdngen

With the debug feature, we can see the missing vias:

missing_fp_vias_1

missing_fp_vias_2

Expected Behavior

No missing vias and pdn created succesfully.

Environment

Latest OR

To Reproduce

openroad test.tcl -gui with following test case:

missing_fp_vias.zip

Relevant log output

[INFO PDN-0001] Inserting grid: Core
[WARNING PDN-0178] Remaining channel (0.0000, 17.1850) - (2621.0800, 84.5650) on M1 for nets: VDD, GND
[WARNING PDN-0178] Remaining channel (0.0000, 942.1850) - (1812.5800, 1009.5650) on M1 for nets: VDD, GND
[ERROR PDN-0179] Unable to repair all channels.
[ERROR GUI-0070] Error: test.tcl, 40 PDN-0179

Screenshots

No response

Additional Context

No response

@maliberty maliberty added the pdn Power Grid Generation label Oct 15, 2024
@gadfort
Copy link
Collaborator

gadfort commented Oct 15, 2024

@titan73 It's not clear to me what the M3 strap is doing for you, but it's the cause of this issue.

#add_pdn_stripe -layer M3     -width 11.280 -pitch 924.960 -spacing 16.920 -offset 37.000
add_pdn_stripe -layer M4 -width 11.280 -pitch 723.800   -spacing 16.920 -offset 107.910

#add_pdn_connect -layers {M3 M4}
add_pdn_connect -layers {M1 M4}

Without the M3 strap it compiles without issue. If you are worried about IR drop you can always reduce the pitch on M4.

@titan73
Copy link
Contributor Author

titan73 commented Oct 15, 2024

@gadfort The pictures show only the lower left part of the floorplan to show the details. There are several M4 strap P/G pairs and only 2 M4 pins in the top edge for power & ground (not in the test case) so these M4 straps need to be connected together with M3 ones.

@gadfort
Copy link
Collaborator

gadfort commented Oct 15, 2024

Can you provide a complete testcase then? With what is provided, removing the M3 strap is sufficient.

@titan73
Copy link
Contributor Author

titan73 commented Oct 15, 2024

I can't provide the full test case for legal reasons and we don't have support contract with PII yet. The request has been done to my hierarchy but it will be difficult since it's evaluation work. That's why I made a simplified one.
That said removing M3 straps is a workaround. Having a power grid using 2 metals is not something rare. The problem comes from the fact that M3 has the same direction as M1 so M1 needs to connect to M4 and pdn does not handle the M3 straps blocking the way while there are part of the same P/G net.

@gadfort
Copy link
Collaborator

gadfort commented Oct 16, 2024

If you must have the M3 straps, then you can add back:

add_pdn_connect -layers {M1 M3}

That will complete the power grid, but because the M3 and M1 overlap completely you will have one giant via array and a massive routing blockage on M2.
To limit the size of M2 you could use of a routing blockage, however the via code will reject the via due to the obstruction. This could be fixed however, but will require some time.

@titan73
Copy link
Contributor Author

titan73 commented Oct 16, 2024

Ok. With this command, I have a power grid closer to the expected one. Thanks.
That could be good to have a fix. No hurry though.

@titan73
Copy link
Contributor Author

titan73 commented Oct 16, 2024

I didn't pay attention but with the 2 lines:

add_pdn_connect -layers {M1 M3}
add_pdn_connect -layers {M1 M4}

This create a barrier that prevent routing vertically on M2 on top & bottom edges (M4 is too thick and not much used for routing):

m2_cut

I'll comment out pdngen for now then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pdn Power Grid Generation
Projects
None yet
Development

No branches or pull requests

3 participants