Skip to content

Top-down hierarchical - #814

Draft
harrisonliew wants to merge 9 commits into
masterfrom
top_down_hier
Draft

Top-down hierarchical#814
harrisonliew wants to merge 9 commits into
masterfrom
top_down_hier

Conversation

@harrisonliew

@harrisonliew harrisonliew commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

This implements the top-down hierarchical flow in Innovus. Users are required to use a channel-based methodology, because feedthrus are not yet supported. Some notes:

  • Previously, vlsi.inputs.hierarchical.mode was purely dynamically-set. Hence, user setting it to "hierarchical" didn't actually do anything. I've repurposed this to be user-facing to be able to select between bottom-up and top-down flows.
  • That key is now renamed to vlsi.inputs.hierarchical.module_mode. A similar dynamically-set key is vlsi.inputs.hierarchical.partitioning, which is needed to know if we are traversing up or down the dependency graph.
  • Innovus implementation uses full databases, so par.in/outputs.in/output_dbs are added and are also dynamically set.

Note: currently, this flow requires a full top-level synthesis; however, to make it more practical for agile methodologies, we will need to implement hierarchical synthesis as well. The inputs to the flow would start from leaf node synthesis in a bottom-up fashion to top-level synthesis, then top-down to bottom-up traversal of par.

A major additional change is making the Makefile generation much more DRY (see the total rewrite of hammer_build_systems.py). Also closes #616.

TODOs before merging:

  • Test the Innovus implementation
  • Fix many outstanding hierarchical mode issues
  • Documentation
  • Hierarchical synthesis

Related PRs / Issues

Type of change:

  • Bug fix
  • New feature
  • Other enhancement

Impact:

  • Change to core Hammer
  • Change to a Hammer plugin
  • Other

Contributor Checklist:

  • Did you set master as the base branch?
  • Did you state the type-of-change/impact?
  • Did you delete any extraneous prints/debugging code?
  • (If applicable) Did you add documentation for the feature?
  • (If applicable) Did you update the poetry.lock file if you updated the requirements in pyproject.toml?
  • (If applicable) Did you add a unit test demonstrating the PR?
  • (If applicable) Did you run this through the e2e integration tests?
  • (If applicable) Did you update the submodules in e2e/ if this feature depends on updated plugins?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Cadence Specific to a Cadence tool enhancement hierarchical

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename hammer.d -> hammer.mk

2 participants