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

Rework Vivado optimisations for wide compatibility #311

Merged
merged 1 commit into from
Nov 11, 2024

Conversation

elliotb-lowrisc
Copy link
Contributor

Turns out that Vivado 2024.1 rearranges its implementation script so that reporting is done before the post-route hook is called. This made it seem as though builds were failing timing, even when the post-route hook optimisations had fixed them.

Exploration revealed that Vivado has an optional post-route optimisation stage that can be enabled and tweaked via TCL scripts. This includes updated reporting and such.
So, rework the post-route optimisation to use Vivado's stage rather than a custom hook.

This required putting the optimisation level in vivado_setup.tcl rather than in one of the hooks, which meant that all the optimisation level decision making also had to move to the same.

This should be effectively a no-op except for reporting.

Not to be merged before 1.0 release.

@elliotb-lowrisc
Copy link
Contributor Author

Rebase and add update of CI timing report path

@elliotb-lowrisc elliotb-lowrisc marked this pull request as ready for review November 11, 2024 09:41
Turns out that Vivado 2024.1 rearranges its implementation
script so that reporting is done before the post-route hook is called.
This made it seem as though builds were failing timing, even when
the post-route hook optimisations had fixed them.

Exploration revealed that Vivado has an optional post-route
optimisation stage that can be enabled and tweaked via TCL scripts.
This includes updated reporting and such.
So, rework the post-route optimisation to use Vivado's stage
rather than a custom hook.

This required putting the optimisation level in vivado_setup.tcl
rather than in one of the hooks, which meant that all the
optimisation level decision making also had to move to the same.

This should be effectively a no-op except for reporting.
@marnovandermaas
Copy link
Contributor

Rebasing on top of v1.0 release.

Copy link
Contributor

@marnovandermaas marnovandermaas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can confirm that this passes timing on 2024.1, will wait for CI to finish running on top of the rebase before approving.

Copy link
Contributor

@marnovandermaas marnovandermaas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI seems passing too so I'm merging this.

@marnovandermaas marnovandermaas merged commit 8929c8e into lowRISC:main Nov 11, 2024
3 checks passed
@elliotb-lowrisc elliotb-lowrisc deleted the rm-hook branch November 11, 2024 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants