-
Notifications
You must be signed in to change notification settings - Fork 247
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
Fiting logical operations into LUT4 #62
base: master
Are you sure you want to change the base?
Conversation
e20699a
to
06b0f2d
Compare
The third commit, attempts to replace some one-hot multiplexers with binary select multiplexers. One hot multiplexers do not have an obvious advantage over binary select. Both the ALU func3 and BRANCH func3 multiplexers have been modified. The ALU change does not provide a LC consumption change, this might mean, the synthesis too ignored the initial conversion from binary to one-hot. The BRANCH predicate code reduces the LC usage by 2. This is not much, but a large change could not be expected since the entire multiplexer only has 3 select bits (func3) and 3 single bit values (EQ/LT/LTU and their inverts) to multiplex to a single bit output. The 2 LC reduction might have come from the use of don't care values ( |
256324c
to
4aae020
Compare
Commit 4 is again cosmetic. Commit 5 changes the store data encoder, the change reduced the LC count by 2. Commit 6 fixes the issue with load/store alignment tests. |
aebdc1b
to
726d888
Compare
…ade no difference, the BRANCH-mux change saved 2 LC
The first commit:
Second commit attempts to fit all logical operations into a single LUT4 array.
LUT4 has 4 inputs op1, op2 and func3[1:0] and can implement all logical operations with one to spare.
After running
make ICESTICK
, I noticed a 15 LC reduction in logic utilization (~4%).My assumption is a LUT4 was used for logical operations instead of multiplexing 3 separate calculations.
I did not look into reports or the netlist to check for details.
I did run a regression test to see if I introduced any bugs, and it seems to work.