From 5d70f6e040e1a13c3e785501aa887fc6f728f441 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Romain=20Bron=C3=A8s?= <romain.brones@synchrotron-soleil.fr>
Date: Wed, 31 May 2023 16:10:45 +0200
Subject: [PATCH] fix(mmul): Changeorder of mm coefs

All x then all y coefs
---
 hdl/matrix_mul.vhd | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/hdl/matrix_mul.vhd b/hdl/matrix_mul.vhd
index e29edbb..dacbc77 100644
--- a/hdl/matrix_mul.vhd
+++ b/hdl/matrix_mul.vhd
@@ -142,11 +142,11 @@ begin
         )
         port map(
             pi_clk_a    => clk,
-            pi_en_a     => mm_coef_i(2*I).en,
-            pi_we_a     => mm_coef_i(2*I).we,
-            pi_addr_a   => mm_coef_i(2*I).addr(C_W_MM_IDCNT-1 downto 0),
-            pi_data_a   => mm_coef_i(2*I).data,
-            po_data_a   => mm_coef_o(2*I).data,
+            pi_en_a     => mm_coef_i(I).en,
+            pi_we_a     => mm_coef_i(I).we,
+            pi_addr_a   => mm_coef_i(I).addr(C_W_MM_IDCNT-1 downto 0),
+            pi_data_a   => mm_coef_i(I).data,
+            po_data_a   => mm_coef_o(I).data,
             pi_clk_b    => clk,
             pi_en_b     => '1',
             pi_we_b     => '0',
@@ -162,11 +162,11 @@ begin
         )
         port map(
             pi_clk_a    => clk,
-            pi_en_a     => mm_coef_i(2*I+1).en,
-            pi_we_a     => mm_coef_i(2*I+1).we,
-            pi_addr_a   => mm_coef_i(2*I+1).addr(C_W_MM_IDCNT-1 downto 0),
-            pi_data_a   => mm_coef_i(2*I+1).data,
-            po_data_a   => mm_coef_o(2*I+1).data,
+            pi_en_a     => mm_coef_i(I+C_N_MM_PSC/2).en,
+            pi_we_a     => mm_coef_i(I+C_N_MM_PSC/2).we,
+            pi_addr_a   => mm_coef_i(I+C_N_MM_PSC/2).addr(C_W_MM_IDCNT-1 downto 0),
+            pi_data_a   => mm_coef_i(I+C_N_MM_PSC/2).data,
+            po_data_a   => mm_coef_o(I+C_N_MM_PSC/2).data,
             pi_clk_b    => clk,
             pi_en_b     => '1',
             pi_we_b     => '0',
@@ -204,11 +204,11 @@ begin
         p_rndsat:process(clk, rst_n)
         begin
             if rst_n = '0' then
-                matmult(2*I)    <= (others => '0');
-                matmult(2*I+1)  <= (others => '0');
+                matmult(I)              <= (others => '0');
+                matmult(I+C_N_MM_PSC/2) <= (others => '0');
             elsif rising_edge(clk) then
-                matmult(2*I)    <= f_resize_sat(f_resize_lsb(accu_x, C_W_MM_ACCU-C_N_MM_RND), C_W_MM);
-                matmult(2*I+1)  <= f_resize_sat(f_resize_lsb(accu_y, C_W_MM_ACCU-C_N_MM_RND), C_W_MM);
+                matmult(I)              <= f_resize_sat(f_resize_lsb(accu_x, C_W_MM_ACCU-C_N_MM_RND), C_W_MM);
+                matmult(I+C_N_MM_PSC/2) <= f_resize_sat(f_resize_lsb(accu_y, C_W_MM_ACCU-C_N_MM_RND), C_W_MM);
             end if;
         end process;
 
-- 
GitLab