Has anyone tried the FP_CONTEXT_DEF and FP_CONTEXT_LEF options? I was going through the OpenLane documentation when I read the following statements in the IO Placement section (https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/hardening_macros.md#io-placement)
_Using contextualized pin placement, which will automatically optimize the placement of the pins based on their context in the larger design that includes them. This relevant for macros since they will be included inside a core, and also relevant for the core since it will be part of a bigger chip. For this to happen, you need to point to the LEF and DEF of the container/parent design using these two variables: FP_CONTEXT_DEF and FP_CONTEXT_LEF. Note that currently this script can only handle the existance of a single instance of that macro._
Now I am a bit confused. How can we have the DEF/LEF of the parent module before generating the macros, instantiating them in the parent module, and running OpenLANE flow for the parent module. Or do we need to blackbox the macros, generate the DEF/LEF for the parent module and then proceed with hardening the macros, if we're following this approach?
03/20/2022, 5:33 AM
Yeah, it should be it. Generate the DEF/LEF for parent with sub macros placed + some random IO connections of the submacro.
Then use the top DEF/LEF as context to optimize the IO locations on sub macros.
I never used it, typically I do manual placement of IOs, but I also never did sub macroing, as it was not needed by my designs.