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

Record updates result in huge multiplexers #663

Open
gergoerdi opened this issue Jul 3, 2019 · 0 comments
Open

Record updates result in huge multiplexers #663

gergoerdi opened this issue Jul 3, 2019 · 0 comments

Comments

@gergoerdi
Copy link
Contributor

This is in contination of #657: hunting down ways in which CLaSH is inefficient in resource utilization.

Using this version of Space Invaders, the Xilinx ISE reports, among others, the following resource usage:

 212-bit 42-to-1 multiplexer                           : 2
 212-bit 8-to-1 multiplexer                            : 1

These use up a huge amount of LUTs. 212 bits sounds about right for the size of CPUState and CPUOut and there are 8 possible internal phases and roughly 40 different internal opcodes, so we have an "extrinsic explanation" for the numbers.

However, this is wildly inefficient. If product types like CPUState and CPUOut would be compiled into multiple registers (one per field), then any one branch would only update a tiny fraction of them, instead of the current all-or-nothing approach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants