Something like a register file implemented wiht FF...
# openlane
t
Something like a register file implemented wiht FFs for instance. It's a very regular grid, and sure I can let the tools try to come up with something, but I can quickly code a placer that will places all those FFs in a regular more intelligent structure.
a
@User: I haven't dealt with this use case so far, but it's definitely interesting. I think it can be implemented as a custom functionality at a high level in openlane using
add_macro_placement <cell_instance_name> <x> <y>
and
manual_macro_placement
knowing that you probably have access to most variables needed like SITE_HEIGHT, SITE_WIDTH, CORE_MARGIN, PDN pitches, etc.. For even lower-level access, you can use the very powerful OpenDB, which has a tcl and python interfaces. We have some scripts that make use of it that you can check out (e.g., https://github.com/efabless/openlane/blob/master/scripts/contextualize.py). You can read both designs and move the cells from the submacro to the one that contains it while maintaining their relative positions. You can then mark those cells as FIXED/FIRM so that the placer doesn't touch them.
t
Ah great pointers thanks !