OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

Feature request: support "HALO" annotation in DEFs

Open nmoroze opened this issue 3 years ago • 9 comments

I want to be able to initialize a floorplan based on a provided DEF file where a component has a "HALO" annotation, and noticed this currently isn't supported (read_def -floorplan_initialize outputs "error: HALO on component is unsupported"). Are there plans to add this feature eventually? It'd be helpful for my use case.

Thanks!

nmoroze avatar Jul 22 '21 22:07 nmoroze

It would be helpful to have the exact message which makes it easier to see where in the code the problem is. Even better is a small test case.

maliberty avatar Jul 22 '21 23:07 maliberty

I see, it is one of our old pre-logger messages. Are you in need of ROUTEHALO too? Are you applying this to a macro? If so that macro placer supports a halo option though it has to be specified outside of DEF.

maliberty avatar Jul 22 '21 23:07 maliberty

Thanks for the prompt reply! We don't need ROUTEHALO, and yes, we are applying it to a macro. Thanks for the note about the macro placer - I think that could be a helpful workaround, but for our case it would ultimately be ideal to read the DEF file annotation (I'm trying to prepare a floorplan that could in theory be fed into a variety of tools with minimal tool-specific configuration).

nmoroze avatar Jul 23 '21 03:07 nmoroze

I agree that the macro placer should be able to pick up the halo from DEF as well. We are in the middle of bringing up a new macro placer so I'll suggest this for the new one (@ravi-varadarajan).

maliberty avatar Jul 23 '21 13:07 maliberty

@nmoroze To confirm your use model you are initializing a floorplan with read_def -floorplan_initialize and in the COMPONENT section of the DEF there is +HALO which is currently throwing an error. You would like this to be to used as the halo specification for the component. Also if there is a global halo specification as in the call macro_placement command, would this be additive?

ravi-varadarajan avatar Jul 28 '21 23:07 ravi-varadarajan

@ahmadelrouby please take care of the opendb part of this problem (taking the halo from def and storing it).

maliberty avatar Jul 28 '21 23:07 maliberty

If it is stored as a PORPERTY on the COMPONENT, we can use during macro placement

ravi-varadarajan avatar Jul 28 '21 23:07 ravi-varadarajan

There is a dbInst::getHalo but oddly not setHalo. There is a field to store the data so we just need to hook it up and make it functional. There is no field for a soft halo but we could add a bit if needed.

maliberty avatar Jul 28 '21 23:07 maliberty

@nmoroze To confirm your use model you are initializing a floorplan with read_def -floorplan_initialize and in the COMPONENT section of the DEF there is +HALO which is currently throwing an error. You would like this to be to used as the halo specification for the component. Also if there is a global halo specification as in the call macro_placement command, would this be additive?

That's correct! I haven't thought about how this would interact with a global halo specification. Maybe the HALO in the DEF could take priority, since it's more specific? I won't be needing a macro_placement command for my use case though (all macros will be placed in the provided DEF), so I have no specific needs for how those two should interact.

nmoroze avatar Jul 29 '21 04:07 nmoroze