hammer
hammer copied to clipboard
Auto-ungrouping in synthesis
Globally disabling auto-ungroup is not good for QoR- this feature should be enabled by default. However, turning this off will break floorplanning (and, although not in master
, metrics) commands in their current state because module paths may not exist with the original hierarchy.
https://github.com/ucb-bar/hammer-cad-plugins/blob/84920a04b61c2dc9ebd89c1bea141a70fb6bfe85/synthesis/genus/init.py#L213
We discussed this offline and seem to have a consensus that this feature should ideally be turned off globally, however not with the way things exist today.
I propose that global auto-ungrouping be enabled if using the generate
floorplan method (i.e. no custom TCL) or a new ungroup switch is turned on (new API needed here)
I think the ungroup switch should look something like vlsi.synthesis.ungrouping: <string>
where string is one of:
-
auto
- enable auto-ungrouping -
disable
- disable auto-ungrouping -
force
- force-ungroup everything
And there should be a list of prevent_ungroup
and force_ungroup
modules (open to name suggestions), e.g. vlsi.synthesis.prevent_ungroup
and vlsi.synthesis.force_ungroup
.
Referencing a module in the floorplan (or metrics API) should automatically add it to the prevent_ungroup
list with a message (not sure if warning or info) if it wasn't there already. There are some other interactions with force-ungroup
ing that we may want to think about.
Since these are not innovus-specific settings, they themselves should live in core hammer. The bulk of the code changes will need to be to this repo. We should also probably start a doc that contains what core assumptions each tool plugin makes (e.g. you could build a synopsys plugin that behaves differently than cadence, which would be bad).