diff options
Diffstat (limited to 'rtl/gfx/mat_vec_mul.sv')
| -rw-r--r-- | rtl/gfx/mat_vec_mul.sv | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/rtl/gfx/mat_vec_mul.sv b/rtl/gfx/mat_vec_mul.sv index 43860c9..9f5dcae 100644 --- a/rtl/gfx/mat_vec_mul.sv +++ b/rtl/gfx/mat_vec_mul.sv @@ -5,27 +5,42 @@ module mat_vec_mul input logic clk, rst_n, - input logic start, input mat4 a, input vec4 x, + input logic in_valid, + out_ready, - output logic done, - output vec4 q + output vec4 q, + output logic in_ready, + out_valid ); - logic dones[`FLOATS_PER_VEC]; + logic stall_mul, stall_fold, mul_ready, mul_valid, feedback, feedback_last; - assign done = dones[0]; + pipeline_flow #(.STAGES(`FP_MUL_STAGES)) mul + ( + .stall(stall_mul), + .out_ready(mul_ready), + .out_valid(mul_valid), + .* + ); + + fold_flow fold + ( + .stall(stall_fold), + .in_ready(mul_ready), + .in_valid(mul_valid), + .* + ); genvar i; generate - for (i = 0; i < `FLOATS_PER_VEC; ++i) begin: dots + for (i = 0; i < `VECS_PER_MAT; ++i) begin: dots vec_dot dot_i ( .a(a[i]), .b(x), .q(q[i]), - .done(dones[i]), .* ); end |
