I have a macro that is essentially a special-via (two metal layers connected through a cut layer). My netlist includes several of these macros as physical-only cells defined in a LEF file with the following class
CLASS BLOCK ; PROPERTY LEF58_CLASS "CLASS COVER FILL ; " ;
I want to place and route the design with these cells in it. Since they are metal-only I want the tool to place them on top of the normal cells and place them in an optimal for delay and congestion position. In the design if I use the standard cell placement to place these macros, it will ignore the blockage in the macros and place them on top of one another. So I use the macroPlacer (planDesign) to preplace them. Using the medium effort it will place them in an array disregarding their proximity to the cells/nets they connect to. If I use the high effort option, it seems to ignore my macroSpacing and minMacrotoCore constraints and keeps placing some outside the core or too close to one another.
I have used various LEF classes, various planDesign constraints, and various planDesign options, using Halos and etc., and nothing seems to work perfectly. Why can't the tool simply understand that there is an internal blockage in the macro on metal 2 and 3 and place them accordingly?
Is there any way to improve upon this situation? :-(