From 406ee2761ddbfb516b3073d7c5c240e037903c7f Mon Sep 17 00:00:00 2001
From: David Brouwer <dbrouwer@astron.nl>
Date: Mon, 23 Oct 2023 08:52:26 +0200
Subject: [PATCH] Updated information header to recent standard. Added library
 ip_agi027_xxxx_mult_lib. Added generate-block inclusive the instantiation of
 a module for the ip_agi027_xxxx_mult and for the ip_agi027_mult_rtl.

---
 libraries/technology/mult/tech_mult.vhd | 49 ++++++++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/libraries/technology/mult/tech_mult.vhd b/libraries/technology/mult/tech_mult.vhd
index 02302d5019..30977a71ea 100644
--- a/libraries/technology/mult/tech_mult.vhd
+++ b/libraries/technology/mult/tech_mult.vhd
@@ -1,6 +1,6 @@
 -------------------------------------------------------------------------------
 --
--- Copyright (C) 2009
+-- Copyright (C) 2009-2023
 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
 -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
 --
@@ -18,6 +18,9 @@
 -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
 --
 -------------------------------------------------------------------------------
+--
+-- Author : -
+-- Changed by : D.F. Brouwer
 
 library IEEE, common_lib, technology_lib;
 use IEEE.std_logic_1164.all;
@@ -29,6 +32,7 @@ use work.tech_mult_component_pkg.all;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 library ip_stratixiv_mult_lib;
 library ip_arria10_mult_lib;
+library ip_agi027_xxxx_mult_lib;
 
 entity tech_mult is
   generic (
@@ -146,6 +150,49 @@ begin
     );
   end generate;
 
+  gen_ip_agi027_xxxx_ip : if (g_technology = c_tech_agi027_xxxx and g_variant = "IP") generate
+    u0 : ip_agi027_xxxx_mult
+    generic map(
+      g_in_a_w           => g_in_a_w,
+      g_in_b_w           => g_in_b_w,
+      g_out_p_w          => g_out_p_w,
+      g_nof_mult         => g_nof_mult,
+      g_pipeline_input   => g_pipeline_input,
+      g_pipeline_product => g_pipeline_product,
+      g_pipeline_output  => g_pipeline_output,
+      g_representation   => g_representation
+    )
+    port map(
+      clk        => clk,
+      clken      => clken,
+      in_a       => in_a,
+      in_b       => in_b,
+      out_p      => prod
+    );
+  end generate;
+
+  gen_ip_agi027_xxxx_rtl : if (g_technology = c_tech_agi027_xxxx and g_variant = "RTL") generate
+    u0 : ip_agi027_xxxx_mult_rtl
+    generic map(
+      g_in_a_w           => g_in_a_w,
+      g_in_b_w           => g_in_b_w,
+      g_out_p_w          => g_out_p_w,
+      g_nof_mult         => g_nof_mult,
+      g_pipeline_input   => g_pipeline_input,
+      g_pipeline_product => g_pipeline_product,
+      g_pipeline_output  => g_pipeline_output,
+      g_representation   => g_representation
+    )
+    port map(
+      rst        => rst,
+      clk        => clk,
+      clken      => clken,
+      in_a       => in_a,
+      in_b       => in_b,
+      out_p      => prod
+    );
+  end generate;
+
   gen_trunk : for I in 0 to g_nof_mult - 1 generate
   -- Truncate MSbits, also for signed (common_pkg.vhd for explanation of RESIZE_SVEC)
     out_p((I + 1) * g_out_p_w - 1 downto I * g_out_p_w) <= RESIZE_SVEC(prod((I + 1) * c_prod_w - 1 downto I * c_prod_w), g_out_p_w) when g_representation = "SIGNED" else
-- 
GitLab