Hi all. When using "FP_PDN_MULTILAYER": false, I e...
# openlane-2
f
Hi all. When using "FP_PDN_MULTILAYER": false, I expect no power rail routing to be done on metal4, but I get rails on met4 anyway. I can add "FP_PDN_VERTICAL_LAYER": "met2", "FP_PDN_HORIZONTAL_LAYER": "met3", to force it to use different layers, but that is not ideal. Am I wrong that macros should not be using met4? Is this a bug?
m
@Francisco Aguirre this is not a definitive answer, but from what I understand from the documentation here,
FP_PDN_MULTILAYER
prevents the insertion of the top horizontal metal5 power rails. Macros instantiated in the top level that connect to metal5 horizontal power rails should not use metal5, but should use metal4 vertical power rails. If you are using macros at a deeper hierarchy, you’ll need to use a custom pdn (
FP_PDN_VERTICAL_LAYER
and
FP_PDN_HORIZONTAL_LAYER
) to remove a metal layer for each hierarchy. For example, a macro 2 levels down should have the top power rails on metal3 and a macro3 levels down should have the top power rail on metal2. You can avoid this limitation by using power rings. See this document on power connectivity to macros.
f
I have been playing with using rings. I am confused by one thing: •
FP_PDN_HORIZONTAL_LAYER
While the vertical layer may remain unchanged, the horizontal layer should be different from the integrator (i.e.) met5. In the attached diagram, the macro uses met5 for horizontal. However, the documentation says the horizontal layer should be different (not met5). My design will only successfully build with horizontal met5.
Also when trying to integrate the macro, i don't think straps are being correctly hooked up to the macro ring. I am getting LVS violations involving the power nets. The included json is my macro integration config, and the included yaml is for creating the macro in the first place. Any suggestions on how to fix the pdn? Will i need a pdn tcl script?
m
@Francisco Wilken 2 things. 1. openlane will not move the horizontal power or vertical power rails so that they intersect with the macro. It’s your responsibility to place the macro at a position that will intersect with either the horizontal or vertical power rails. 2. Check the obstruction layers in the lef view of the wrapper. I think ideally, the vertical metal4 on the left and right of the macro should have no metal5 obstruction and the horizontal metal5 at the top and bottom of the macro should have no metal4 obstruction. The current macro has internal metal5 connections to the vertical metal4 and internal metal4 connections to the horizontal metal5 power ring. Make sure that these are pins in lef or obstructed so that the power network doesn’t short.
f
Thank you immensely for your help! With some adjustments to the pdn and placement, my macro placing worked!
👍 1