

CONNECT_POWER_PADS defines in your code. Did you manage to get the PNL to properly connect the core PDN to the I/O power/ground bondpad pins?

add_pdn_ring -connect_to_pads function should be more flexible. If we have a core ring with Metal5 and Metal4, it should still be able to make all connections with Metal2 and then drop vias. Maybe this function just needs another argument to override this. I'll ask the folks at OpenROAD what they think about this.
place_io_terminals to place the BTerms for the I/O pads, since the bondpads are integrated into the cells (as opposed to IHP):
place_io_terminals gf180mcu_fd_io__*/DVSS
place_io_terminals gf180mcu_fd_io__*/DVDD
It seems that place_io_terminals simply promotes the first pin of the specified port to a BTerm.place_io_terminals command cannot work as we want it to work.
Therefore, I tried to add a PAD port, just like the other I/O pads, which initially seemed to work fine: I could global-connect it to the respective VDD/VSS net. However, PSM would throw an error, because there is no physical connection between PAD and any of the power pins.
[18:32:56] ERROR [PSM-0069] Check connectivity failed on VDD.
[18:33:07] ERROR [PSM-0069] Check connectivity failed on VSS.place_io_terminals promotes the correct pin to a BTerm.
However, instead of:
place_io_terminals gf180mcu_fd_io__*/DVSS
place_io_terminals gf180mcu_fd_io__*/DVDD
We have to write:
place_io_terminals gf180mcu_fd_io__dvss*/DVSS
place_io_terminals gf180mcu_fd_io__dvdd*/DVDD
As otherwise we would still get one BTerm at the side of the power/ground pad.[INFO PSM-0040] All shapes on net VDD are connected.
[INFO PSM-0040] All shapes on net VSS are connected.
And netgen as well:
Final result:
Circuits match uniquely.





gf180mcu_fd_io__dvss and gf180mcu_fd_io__dvdd to add the pin geometry.