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

Implement memories with sequential reads #1145

Merged
merged 6 commits into from
Aug 19, 2022
Merged

Implement memories with sequential reads #1145

merged 6 commits into from
Aug 19, 2022

Conversation

rachitnigam
Copy link
Contributor

Fixes #165. We should make at least one frontend use these memories. Eventually, this will make it easier for us to use UltraRAM memories on FPGAs instead of BRAMs.

We can design a parameterized memory which takes read and write latencies as parameters. However, we don't currently have a way to specify the @static behavior of such memories because they are parameteric

Copy link
Contributor

@sampsyo sampsyo left a comment

Choose a reason for hiding this comment

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

Nice, looks great! It's not important for now, obviously, but it would be interesting to know what kind of FPGA memory Vivado (for example) automatically infers for this exact array+register combo.

About the comment re. frontend support… it occurs to me that we would in general like to make it as easy as possible for frontends to switch between different styles of memories. It obviously requires some code generation to abstract over different memory latencies and interfaces, but it would be interesting to think more about anything we could do to make this convenient. Maybe some creative high-level interface coupled with a lowering pass could help, for instance. Could be a fun topic for discussion!

@rachitnigam
Copy link
Contributor Author

About the comment re. frontend support… it occurs to me that we would in general like to make it as easy as possible for frontends to switch between different styles of memories

Right! I think that would be important especially if we want to expose the same interface for BRAMs and UltraRAMs. I think the simple read_en/read_done combo would be a straightforward way to start but we'd need some reasoning to think about the logical to physical mapping (i.e., turning a logical memory into a BRAM or URAM) and adding static annotations for them.

This might also be interesting to @andrewb1999

@rachitnigam
Copy link
Contributor Author

Added a test for these memories. Next step is updating the Dahlia frontend to generate non-combinational memories

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.

Memories with non-combinational reads
2 participants