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

Simulation performance improvements for conditional assignments #352

Merged
merged 2 commits into from
May 2, 2023

Conversation

mkorbel1
Copy link
Contributor

@mkorbel1 mkorbel1 commented May 1, 2023

Description & Motivation

Benchmarking, profiling, and usage of recent changes in other designs revealed a few small optimizations that could be made to improve simulation performance when many conditional assignments are used.

  • WriteAfterReadException no longer prints the signal name. This enables creating one single static function for all write-after-read violations rather than creating a new one during simulation for each signal guarded. The loss in debug visibility is minimal since signal names going into a Conditional are already often not well-named signals, and the full stack trace can provide much more detail.
  • Looking up the receiver on each execution of ConditionalAssign was redundant overhead, so caching it saves some performance.

Related Issue(s)

N/A

Testing

Existing tests cover functionality. CombGuardFanoutBenchmark demonstrated some measurable performance improvements with these changes.

Backwards-compatibility

Is this a breaking change that will not be backwards-compatible? If yes, how so?

No

Documentation

Does the change require any updates to documentation? If so, where? Are they included?

No

@mkorbel1 mkorbel1 merged commit 834fec6 into intel:main May 2, 2023
@mkorbel1 mkorbel1 deleted the condassignopt branch May 2, 2023 16:46
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.

1 participant