Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Top-down hierarchical #814

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from
Draft

Top-down hierarchical #814

wants to merge 9 commits into from

Conversation

harrisonliew
Copy link
Contributor

@harrisonliew harrisonliew commented Oct 27, 2023

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