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

Fix FIR multiplication #40

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dankirkham
Copy link

On Icarus, iCE40 (Yosys/nextpnr), and Quartus/Cyclone II tools the bit extension happens before the multiply.
Operand 1 0xabcd becomes 0x0000_0000_abcd
Operand 2 0x1234 becomes 0x0000_0000_1234
To fit into 16x16 multiplier, other tools are truncating the less-significant bits, resulting in a 0x0000_0000 * 0x0000_0000 multiplicaton.

An unfortunate side effect is that now addition is now actually occuring, my iCE40 designs no longer meet timing. A pipeline stage may have to be added, but I am not sure how to make that play nice with the BRAMs.

On Icarus, iCE40 (Yosys/nextpnr), and Quartus/Cyclone II tools the bit extension
happens before the multiply.
Operand 1 0xabcd becomes 0x0000_0000_abcd
Operand 2 0x1234 becomes 0x0000_0000_1234
To fit into 16x16 multiplier, other tools are truncating the less-significant
bits, resulting in a 0x0000_0000 * 0x0000_0000 multiplicaton.

An unfortunate side effect is that now addition is now actually occuring, my iCE40
designs no longer meet timing. A pipeline stage may have to be added, but I am not
sure how to make that play nice with the BRAMs.
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.

1 participant