-
Notifications
You must be signed in to change notification settings - Fork 897
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
Add $macc_v2
#4818
base: main
Are you sure you want to change the base?
Add $macc_v2
#4818
Conversation
This use case is better served with having an extra port of plain summands, and leave So that you have
where each Cc @phsauter also @widlarizer @whitequark (we touched on |
Rebased |
aw = A_WIDTHS[16*i+:16]; | ||
bw = B_WIDTHS[16*i+:16]; | ||
|
||
product = A[ai +: aw] * B[bi +: bw]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs fixing, bw
and aw
would need to be a constant expression here
begin | ||
cw = C_WIDTHS[16*i+:16]; | ||
|
||
addend = C[ci +: cw]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here
What are the reasons/motivation for this change?
$macc
is needlessly complex: theCONFIG
parameter uses a convoluted encoding, and it has a redundantB
port for single-bit summands.With
$macc_v2
the goal is to make it simpler, so much so that it's not unreasonable to write techmap rules matching on this cell in plain Verilog (as opposed to just deferring tomaccmap
).Explain how this is achieved.
Changes done in v2 (edited):
$mem_v2
, which encodes a dynamic number of read/write ports in a similar manner)Based off #4817, which can go in first to make this one easier to review.TODO:
$macc_v2
techmap.v