[Calyx] Switch sequential memories to be true single port memories #6765
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, Calyx seq memories have read enable/done and write enable/done signals. This gives the wrong impression that you can perform simultaneous reads and writes, like how you could with a simple dual port memory, but the intention is for seq memories to be single port (as they have a single set of addresses). This PR changes seq mems to have a single content enable/done interface, with a write enable signal that is not a go signal. The intended way to perform a read is the set content enable high and write enable low (and wait for content done to go high). For a write we do the same thing but set the write enable high.
This interface more closely matches how real hardware designers implement single port memories.
These changes need to be merged simultaneously with a new Calyx release with matching changes in the native compiler. See PR with native changes here: calyxir/calyx#1610