hammer icon indicating copy to clipboard operation
hammer copied to clipboard

Auto-ungrouping in synthesis

Open jwright6323 opened this issue 5 years ago • 0 comments

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-ungrouping 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).

jwright6323 avatar Mar 18 '19 18:03 jwright6323