-
Notifications
You must be signed in to change notification settings - Fork 233
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
Improve QoR when threading models with SyncReadMems #639
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
albert-magyar
force-pushed
the
mt-sync-read-mem-improvements
branch
3 times, most recently
from
October 5, 2020 19:05
c783880
to
ee94e8d
Compare
davidbiancolin
approved these changes
Oct 26, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs a bump, but LGTM.
sim/midas/src/main/scala/midas/passes/fame/ImplementThreadedSyncReadMems.scala
Outdated
Show resolved
Hide resolved
albert-magyar
force-pushed
the
mt-sync-read-mem-improvements
branch
from
October 27, 2020 00:37
ee94e8d
to
6e21732
Compare
* See chipsalliance/firrtl#1908 * Will revert this commit when change is available in FireSim
* Better BRAM/URAM inference in many cases for Vivado
* Implement threaded memory with monolithic BRAM + read data buffers * Substitute memories for ThreadedSyncReadMems in MuxingMultithreader * Separate generation of implementations into new ImplementThreadedSyncReadMems pass * Add pipelining to incorporate output FF option into BRAM
* Avoid issue of exposing custom IR nodes * Address PR review feedback
albert-magyar
force-pushed
the
mt-sync-read-mem-improvements
branch
from
November 5, 2020 19:02
53b39cc
to
e5985cb
Compare
14 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, synchronous-read memories get processed with
VerilogMemDelays
before FAME5 multi-threading, which leads to inconsistent BRAM inference and generally worse QoR. This PR fixes that by generating specialized implementations of natively multi-threaded synchronous-read memories. These implementations generally use RAM resources more effectively than the baseline unoptimized simulators.This also copies in the fix to
VerilogMemDelays
from chipsalliance/firrtl#1908. This fix can be reverted when the FIRRTL upstream changes make it to FireSim, but since that will take a while, it's good to get this bugfix in.