From 6c9d3240dfc165c17a2d512315672be2f540fa46 Mon Sep 17 00:00:00 2001
From: Daniel van der Schuur <schuur@astron.nl>
Date: Fri, 3 Aug 2018 07:14:45 +0000
Subject: [PATCH] -Fed g_variant parameter from dp_complex_mult upward to
 arts_tab_beamformer so we can  use the RTL variant for SC3 (IP uses too manu
 multipliers).

---
 .../arts_unb2b_sc3/src/vhdl/arts_unb2b_sc3_processing.vhd   | 3 ++-
 .../arts_tab_beamformer/src/vhdl/arts_tab_beamformer.vhd    | 6 ++++--
 libraries/base/dp/src/vhdl/dp_complex_mult.vhd              | 5 +++--
 libraries/dsp/beamformer/src/vhdl/beamformer.vhd            | 6 ++++--
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/applications/arts/designs/arts_unb2b_sc3/src/vhdl/arts_unb2b_sc3_processing.vhd b/applications/arts/designs/arts_unb2b_sc3/src/vhdl/arts_unb2b_sc3_processing.vhd
index 6fd0b9ef11..8fdfcfe5dc 100644
--- a/applications/arts/designs/arts_unb2b_sc3/src/vhdl/arts_unb2b_sc3_processing.vhd
+++ b/applications/arts/designs/arts_unb2b_sc3/src/vhdl/arts_unb2b_sc3_processing.vhd
@@ -115,7 +115,8 @@ BEGIN
       g_nof_beamlets          => g_nof_beamlets,
       g_data_w                => g_data_w,
       g_weights_w             => g_weights_w,
-      g_weights_ram_dual_port => FALSE
+      g_weights_ram_dual_port => FALSE,
+      g_mult_variant          => "RTL" --FIXME IP uses 5 instead of 4 multipliers! Therefor use RTL.
     )
     PORT MAP (
       dp_clk      => dp_clk,
diff --git a/applications/arts/libraries/arts_tab_beamformer/src/vhdl/arts_tab_beamformer.vhd b/applications/arts/libraries/arts_tab_beamformer/src/vhdl/arts_tab_beamformer.vhd
index 2b6ac9f6d3..d0adb88475 100644
--- a/applications/arts/libraries/arts_tab_beamformer/src/vhdl/arts_tab_beamformer.vhd
+++ b/applications/arts/libraries/arts_tab_beamformer/src/vhdl/arts_tab_beamformer.vhd
@@ -52,7 +52,8 @@ ENTITY arts_tab_beamformer IS
     g_weights_w             : NATURAL := 16;
     g_out_data_w            : NATURAL := 12;
     g_weights_ram_dual_port : BOOLEAN := TRUE;
-    g_weights_file          : STRING  := "hex/beamformer_weights"
+    g_weights_file          : STRING  := "hex/beamformer_weights";
+    g_mult_variant          : STRING  := "IP" 
   );
   PORT (
     dp_clk            : IN  STD_LOGIC; 
@@ -171,7 +172,8 @@ BEGIN
       g_nof_weights           => c_nof_weights,
       g_weights_w             => g_weights_w,
       g_weights_file          => sel_a_b(g_weights_file="UNUSED", "UNUSED", g_weights_file & "_" & NATURAL'IMAGE(i)),
-      g_weights_ram_dual_port => g_weights_ram_dual_port
+      g_weights_ram_dual_port => g_weights_ram_dual_port,
+      g_mult_variant          => g_mult_variant
     )
     PORT MAP (
       dp_clk      => dp_clk,
diff --git a/libraries/base/dp/src/vhdl/dp_complex_mult.vhd b/libraries/base/dp/src/vhdl/dp_complex_mult.vhd
index 80b0c46c2f..80fef84e25 100644
--- a/libraries/base/dp/src/vhdl/dp_complex_mult.vhd
+++ b/libraries/base/dp/src/vhdl/dp_complex_mult.vhd
@@ -41,7 +41,8 @@ ENTITY dp_complex_mult IS
     g_technology      : NATURAL := c_tech_select_default;
     g_nof_multipliers : NATURAL;
     g_conjugate_b     : BOOLEAN := FALSE; -- Conjugate input 1 of snk_in_2arr2(i)(1 DOWNTO 0)
-    g_data_w          : NATURAL -- Input data width. Output data width = 2*input data width.
+    g_data_w          : NATURAL; -- Input data width. Output data width = 2*input data width.
+    g_variant         : STRING := "IP"
    ); 
   PORT (
     rst            : IN  STD_LOGIC;
@@ -69,7 +70,7 @@ BEGIN
     u_common_complex_mult : ENTITY common_mult_lib.common_complex_mult
     GENERIC MAP (
       g_technology       => g_technology,
-      g_variant          => "IP",
+      g_variant          => g_variant,
       g_in_a_w           => g_data_w,
       g_in_b_w           => g_data_w,
       g_out_p_w          => 2*g_data_w,     -- default use g_out_p_w = g_in_a_w+g_in_b_w
diff --git a/libraries/dsp/beamformer/src/vhdl/beamformer.vhd b/libraries/dsp/beamformer/src/vhdl/beamformer.vhd
index 8bd716aba1..c7e82a0a11 100644
--- a/libraries/dsp/beamformer/src/vhdl/beamformer.vhd
+++ b/libraries/dsp/beamformer/src/vhdl/beamformer.vhd
@@ -53,7 +53,8 @@ ENTITY beamformer IS
     g_nof_weights           : NATURAL;
     g_weights_w             : NATURAL := 16;
     g_weights_file          : STRING  := "hex/beamformer_weights";
-    g_weights_ram_dual_port : BOOLEAN := TRUE
+    g_weights_ram_dual_port : BOOLEAN := TRUE;
+    g_mult_variant          : STRING := "IP"
   );
   PORT (
     dp_clk      : IN  STD_LOGIC; 
@@ -196,7 +197,8 @@ BEGIN
   u_dp_complex_mult : ENTITY dp_lib.dp_complex_mult
   GENERIC MAP (
     g_nof_multipliers => g_nof_inputs,
-    g_data_w          => g_data_w
+    g_data_w          => g_data_w,
+    g_variant         => g_mult_variant
   )
   PORT MAP (
     clk           => dp_clk,
-- 
GitLab