From 9320e1ebe36b787aef24aeb546e3d9df3ade91a6 Mon Sep 17 00:00:00 2001
From: Leon Hiemstra <hiemstra@astron.nl>
Date: Wed, 20 Jan 2016 16:05:50 +0000
Subject: [PATCH] added components for ip_arria10_e3sge3

---
 libraries/technology/clkbuf/tech_clkbuf.vhd   | 12 ++++
 .../clkbuf/tech_clkbuf_component_pkg.vhd      | 12 ++++
 libraries/technology/fifo/hdllib.cfg          |  2 +-
 .../fifo/tech_fifo_component_pkg.vhd          | 68 ++++++++++++++++++-
 libraries/technology/fifo/tech_fifo_dc.vhd    |  7 ++
 .../fifo/tech_fifo_dc_mixed_widths.vhd        |  7 ++
 libraries/technology/fifo/tech_fifo_sc.vhd    |  7 ++
 .../flash/tech_flash_asmi_parallel.vhd        |  6 ++
 .../flash/tech_flash_component_pkg.vhd        | 51 ++++++++++++++
 .../flash/tech_flash_remote_update.vhd        |  6 ++
 .../fpga_temp_sens/tech_fpga_temp_sens.vhd    |  1 +
 .../tech_fpga_temp_sens_component_pkg.vhd     |  9 +++
 .../tech_fpga_voltage_sens.vhd                |  1 +
 .../tech_fpga_voltage_sens_component_pkg.vhd  | 18 +++++
 .../tech_fractional_pll_clk125.vhd            |  1 +
 .../tech_fractional_pll_clk200.vhd            |  1 +
 .../tech_fractional_pll_component_pkg.vhd     | 31 +++++++++
 .../iobuf/tech_iobuf_component_pkg.vhd        | 32 +++++++++
 .../technology/iobuf/tech_iobuf_ddio_in.vhd   |  9 ++-
 .../technology/iobuf/tech_iobuf_ddio_out.vhd  |  9 ++-
 .../clkbuf_global/hdllib.cfg                  |  2 +-
 .../ip_arria10_e3sge3/ddio/compile_ip.tcl     | 15 ++--
 .../ip_arria10_e3sge3/ddio/generate_ip.sh     |  4 +-
 .../flash/asmi_parallel/compile_ip.tcl        |  5 +-
 .../flash/asmi_parallel/hdllib.cfg            |  2 +-
 .../flash/remote_update/compile_ip.tcl        |  7 +-
 .../flash/remote_update/hdllib.cfg            |  2 +-
 .../fractional_pll_clk125/hdllib.cfg          |  2 +-
 .../fractional_pll_clk200/hdllib.cfg          |  2 +-
 .../pll_clk125/compile_ip.tcl                 |  2 +-
 .../ip_arria10_e3sge3/pll_clk125/hdllib.cfg   |  2 +-
 .../pll_clk200/compile_ip.tcl                 |  5 +-
 .../ip_arria10_e3sge3/pll_clk200/hdllib.cfg   |  2 +-
 .../pll_clk25/compile_ip.tcl                  |  3 +-
 .../ip_arria10_e3sge3/pll_clk25/hdllib.cfg    |  2 +-
 .../pll_xgmii_mac_clocks/hdllib.cfg           |  2 +-
 .../ip_arria10_e3sge3/temp_sense/hdllib.cfg   |  2 +-
 .../voltage_sense/hdllib.cfg                  |  2 +-
 libraries/technology/pll/tech_pll_clk125.vhd  |  1 +
 libraries/technology/pll/tech_pll_clk200.vhd  |  1 +
 libraries/technology/pll/tech_pll_clk25.vhd   |  1 +
 .../technology/pll/tech_pll_component_pkg.vhd | 55 +++++++++++++++
 .../pll/tech_pll_xgmii_mac_clocks.vhd         |  1 +
 .../technology/technology_select_pkg.vhd      |  1 +
 44 files changed, 378 insertions(+), 35 deletions(-)

diff --git a/libraries/technology/clkbuf/tech_clkbuf.vhd b/libraries/technology/clkbuf/tech_clkbuf.vhd
index 764f5ebc8b..f7bb50c7ae 100644
--- a/libraries/technology/clkbuf/tech_clkbuf.vhd
+++ b/libraries/technology/clkbuf/tech_clkbuf.vhd
@@ -27,6 +27,7 @@ USE technology_lib.technology_select_pkg.ALL;
 
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_clkbuf_global_altclkctrl_150;
+LIBRARY ip_arria10_e3sge3_clkbuf_global_altclkctrl_151;
 
 ENTITY tech_clkbuf IS
   GENERIC (
@@ -55,4 +56,15 @@ BEGIN
     );
   END GENERATE;
 
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+  
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 AND g_clock_net="GLOBAL" GENERATE
+    u0 : ip_arria10_e3sge3_clkbuf_global
+    PORT MAP (
+      inclk  => inclk,   -- inclk
+      outclk => outclk   -- outclk
+    );
+  END GENERATE;
 END ARCHITECTURE;
diff --git a/libraries/technology/clkbuf/tech_clkbuf_component_pkg.vhd b/libraries/technology/clkbuf/tech_clkbuf_component_pkg.vhd
index f1f267913a..efc4c049e0 100644
--- a/libraries/technology/clkbuf/tech_clkbuf_component_pkg.vhd
+++ b/libraries/technology/clkbuf/tech_clkbuf_component_pkg.vhd
@@ -36,6 +36,18 @@ PACKAGE tech_clkbuf_component_pkg IS
     outclk : out std_logic         -- altclkctrl_output.outclk
   );
   END COMPONENT;
+
+
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+  
+  COMPONENT ip_arria10_e3sge3_clkbuf_global IS
+  PORT (
+    inclk  : in  std_logic := '0'; --  altclkctrl_input.inclk
+    outclk : out std_logic         -- altclkctrl_output.outclk
+  );
+  END COMPONENT;
     
 END tech_clkbuf_component_pkg;
 
diff --git a/libraries/technology/fifo/hdllib.cfg b/libraries/technology/fifo/hdllib.cfg
index ed4bcec4fd..358adc9cda 100644
--- a/libraries/technology/fifo/hdllib.cfg
+++ b/libraries/technology/fifo/hdllib.cfg
@@ -1,6 +1,6 @@
 hdl_lib_name = tech_fifo
 hdl_library_clause_name = tech_fifo_lib
-hdl_lib_uses_synth = technology ip_stratixiv_fifo ip_arria10_fifo
+hdl_lib_uses_synth = technology ip_stratixiv_fifo ip_arria10_fifo ip_arria10_e3sge3_fifo
 hdl_lib_uses_sim = 
 
 hdl_lib_technology = 
diff --git a/libraries/technology/fifo/tech_fifo_component_pkg.vhd b/libraries/technology/fifo/tech_fifo_component_pkg.vhd
index 0cc6e4e078..69b2209adb 100644
--- a/libraries/technology/fifo/tech_fifo_component_pkg.vhd
+++ b/libraries/technology/fifo/tech_fifo_component_pkg.vhd
@@ -93,7 +93,7 @@ PACKAGE tech_fifo_component_pkg IS
   
   
   -----------------------------------------------------------------------------
-  -- ip_stratixiv
+  -- ip_arria10
   -----------------------------------------------------------------------------
   
   COMPONENT ip_arria10_fifo_sc IS
@@ -156,5 +156,71 @@ PACKAGE tech_fifo_component_pkg IS
     wrusedw : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words)-1 DOWNTO 0)
   );
   END COMPONENT;
+
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+  
+  COMPONENT ip_arria10_e3sge3_fifo_sc IS
+  GENERIC (
+    g_use_eab   : STRING := "ON";
+    g_dat_w     : NATURAL := 20;
+    g_nof_words : NATURAL := 1024
+  );
+  PORT (
+    aclr    : IN STD_LOGIC ;
+    clock   : IN STD_LOGIC ;
+    data    : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0);
+    rdreq   : IN STD_LOGIC ;
+    wrreq   : IN STD_LOGIC ;
+    empty   : OUT STD_LOGIC ;
+    full    : OUT STD_LOGIC ;
+    q       : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0) ;
+    usedw   : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words)-1 DOWNTO 0)
+  );
+  END COMPONENT;
+
+  COMPONENT ip_arria10_e3sge3_fifo_dc IS
+  GENERIC (
+    g_use_eab   : STRING := "ON";
+    g_dat_w     : NATURAL := 20;
+    g_nof_words : NATURAL := 1024
+  );
+  PORT (
+    aclr    : IN STD_LOGIC  := '0';
+    data    : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0);
+    rdclk   : IN STD_LOGIC ;
+    rdreq   : IN STD_LOGIC ;
+    wrclk   : IN STD_LOGIC ;
+    wrreq   : IN STD_LOGIC ;
+    q       : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0);
+    rdempty : OUT STD_LOGIC ;
+    rdusedw : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words)-1 DOWNTO 0);
+    wrfull  : OUT STD_LOGIC ;
+    wrusedw : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words)-1 DOWNTO 0)
+  );
+  END COMPONENT;
+  
+  COMPONENT ip_arria10_e3sge3_fifo_dc_mixed_widths IS
+  GENERIC (
+    g_nof_words : NATURAL := 1024;  -- FIFO size in nof wr_dat words
+    g_wrdat_w   : NATURAL := 20;
+    g_rddat_w   : NATURAL := 10
+  );
+  PORT (
+    aclr    : IN STD_LOGIC  := '0';
+    data    : IN STD_LOGIC_VECTOR (g_wrdat_w-1 DOWNTO 0);
+    rdclk   : IN STD_LOGIC ;
+    rdreq   : IN STD_LOGIC ;
+    wrclk   : IN STD_LOGIC ;
+    wrreq   : IN STD_LOGIC ;
+    q       : OUT STD_LOGIC_VECTOR (g_rddat_w-1 DOWNTO 0);
+    rdempty : OUT STD_LOGIC ;
+    rdusedw : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words*g_wrdat_w/g_rddat_w)-1 DOWNTO 0);
+    wrfull  : OUT STD_LOGIC ;
+    wrusedw : OUT STD_LOGIC_VECTOR (tech_ceil_log2(g_nof_words)-1 DOWNTO 0)
+  );
+  END COMPONENT;
+  
   
 END tech_fifo_component_pkg;
diff --git a/libraries/technology/fifo/tech_fifo_dc.vhd b/libraries/technology/fifo/tech_fifo_dc.vhd
index bbee822068..f19df9a1b4 100644
--- a/libraries/technology/fifo/tech_fifo_dc.vhd
+++ b/libraries/technology/fifo/tech_fifo_dc.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_fifo_lib;
 LIBRARY ip_arria10_fifo_lib;
+LIBRARY ip_arria10_e3sge3_fifo_lib;
 
 ENTITY tech_fifo_dc IS
   GENERIC (
@@ -67,5 +68,11 @@ BEGIN
     GENERIC MAP (g_use_eab, g_dat_w, g_nof_words)
     PORT MAP (aclr, data, rdclk, rdreq, wrclk, wrreq, q, rdempty, rdusedw, wrfull, wrusedw);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_fifo_dc
+    GENERIC MAP (g_use_eab, g_dat_w, g_nof_words)
+    PORT MAP (aclr, data, rdclk, rdreq, wrclk, wrreq, q, rdempty, rdusedw, wrfull, wrusedw);
+  END GENERATE;
   
 END ARCHITECTURE;
diff --git a/libraries/technology/fifo/tech_fifo_dc_mixed_widths.vhd b/libraries/technology/fifo/tech_fifo_dc_mixed_widths.vhd
index 9912a6a20a..b0b982ff7e 100644
--- a/libraries/technology/fifo/tech_fifo_dc_mixed_widths.vhd
+++ b/libraries/technology/fifo/tech_fifo_dc_mixed_widths.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_fifo_lib;
 LIBRARY ip_arria10_fifo_lib;
+LIBRARY ip_arria10_e3sge3_fifo_lib;
 
 ENTITY tech_fifo_dc_mixed_widths IS
   GENERIC (
@@ -67,5 +68,11 @@ BEGIN
     GENERIC MAP (g_nof_words, g_wrdat_w, g_rddat_w)
     PORT MAP (aclr, data, rdclk, rdreq, wrclk, wrreq, q, rdempty, rdusedw, wrfull, wrusedw);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_fifo_dc_mixed_widths
+    GENERIC MAP (g_nof_words, g_wrdat_w, g_rddat_w)
+    PORT MAP (aclr, data, rdclk, rdreq, wrclk, wrreq, q, rdempty, rdusedw, wrfull, wrusedw);
+  END GENERATE;
   
 END ARCHITECTURE;
diff --git a/libraries/technology/fifo/tech_fifo_sc.vhd b/libraries/technology/fifo/tech_fifo_sc.vhd
index 7481ddeed2..ee60048e85 100644
--- a/libraries/technology/fifo/tech_fifo_sc.vhd
+++ b/libraries/technology/fifo/tech_fifo_sc.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_fifo_lib;
 LIBRARY ip_arria10_fifo_lib;
+LIBRARY ip_arria10_e3sge3_fifo_lib;
 
 ENTITY tech_fifo_sc IS
   GENERIC (
@@ -65,5 +66,11 @@ BEGIN
     GENERIC MAP (g_use_eab, g_dat_w, g_nof_words)
     PORT MAP (aclr, clock, data, rdreq, wrreq, empty, full, q, usedw);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_fifo_sc
+    GENERIC MAP (g_use_eab, g_dat_w, g_nof_words)
+    PORT MAP (aclr, clock, data, rdreq, wrreq, empty, full, q, usedw);
+  END GENERATE;
   
 END ARCHITECTURE;
diff --git a/libraries/technology/flash/tech_flash_asmi_parallel.vhd b/libraries/technology/flash/tech_flash_asmi_parallel.vhd
index e1d9c339af..2de89479dd 100644
--- a/libraries/technology/flash/tech_flash_asmi_parallel.vhd
+++ b/libraries/technology/flash/tech_flash_asmi_parallel.vhd
@@ -30,6 +30,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_flash_lib;
 LIBRARY ip_arria10_asmi_parallel_altera_asmi_parallel_150;
+LIBRARY ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151;
 
 ENTITY tech_flash_asmi_parallel IS
   GENERIC (
@@ -76,5 +77,10 @@ BEGIN
     u0 : ip_arria10_asmi_parallel
     PORT MAP (addr, clkin, datain, rden, read, sector_erase, shift_bytes, wren, write, busy, data_valid, dataout, illegal_erase, illegal_write, reset, sce, en4b_addr);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_asmi_parallel
+    PORT MAP (addr, clkin, datain, rden, read, sector_erase, shift_bytes, wren, write, busy, data_valid, dataout, illegal_erase, illegal_write, reset, sce, en4b_addr);
+  END GENERATE;
    
 END ARCHITECTURE;
diff --git a/libraries/technology/flash/tech_flash_component_pkg.vhd b/libraries/technology/flash/tech_flash_component_pkg.vhd
index 243954ce2a..63d64c81fe 100644
--- a/libraries/technology/flash/tech_flash_component_pkg.vhd
+++ b/libraries/technology/flash/tech_flash_component_pkg.vhd
@@ -112,6 +112,51 @@ PACKAGE tech_flash_component_pkg IS
   );
   end component ip_arria10_remote_update;
 
+
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+
+  component ip_arria10_e3sge3_asmi_parallel is
+  port (
+    addr          : in  std_logic_vector(31 downto 0);
+    clkin         : in  std_logic;
+    datain        : in  std_logic_vector(7 downto 0); 
+    rden          : in  std_logic;
+    read          : in  std_logic;
+    sector_erase  : in  std_logic;
+    shift_bytes   : in  std_logic;
+    wren          : in  std_logic;
+    write         : in  std_logic;
+    busy          : out std_logic;
+    data_valid    : out std_logic;
+    dataout       : out std_logic_vector(7 downto 0);
+    illegal_erase : out std_logic;
+    illegal_write : out std_logic;
+    reset         : in  std_logic; 
+    sce           : in  std_logic_vector(2 downto 0);
+    en4b_addr     : in  std_logic
+  );
+  end component ip_arria10_e3sge3_asmi_parallel;
+
+  -- note the EPCQ-L1024 device appears not to be supported yet.
+  -- the EPCA-512 was chosen instead
+
+  component ip_arria10_e3sge3_remote_update is
+  port (
+    clock       : in  std_logic;
+    data_in     : in  std_logic_vector(31 downto 0);
+    param       : in  std_logic_vector(2 downto 0);
+    read_param  : in  std_logic;
+    reconfig    : in  std_logic;
+    reset       : in  std_logic; 
+    reset_timer : in  std_logic; 
+    write_param : in  std_logic; 
+    busy        : out std_logic; 
+    data_out    : out std_logic_vector(31 downto 0)
+  );
+  end component ip_arria10_e3sge3_remote_update;
+
   function tech_flash_addr_w( technology: in integer ) return integer;
   function tech_flash_data_w( technology: in integer ) return integer;
 
@@ -127,6 +172,9 @@ package body tech_flash_component_pkg is
     if technology = c_tech_arria10 then
         return 32;
     end if;		  
+    if technology = c_tech_arria10_e3sge3 then
+        return 32;
+    end if;		  
   end;
 
   function tech_flash_data_w( technology : in integer )  return integer is 
@@ -137,6 +185,9 @@ package body tech_flash_component_pkg is
     if technology = c_tech_arria10 then
         return 32;
     end if;		  
+    if technology = c_tech_arria10_e3sge3 then
+        return 32;
+    end if;		  
   end;
 
 
diff --git a/libraries/technology/flash/tech_flash_remote_update.vhd b/libraries/technology/flash/tech_flash_remote_update.vhd
index 44eb52db91..17c360efb8 100644
--- a/libraries/technology/flash/tech_flash_remote_update.vhd
+++ b/libraries/technology/flash/tech_flash_remote_update.vhd
@@ -30,6 +30,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_flash_lib;
 LIBRARY ip_arria10_remote_update_altera_remote_update_150;
+LIBRARY ip_arria10_e3sge3_remote_update_altera_remote_update_151;
 
 ENTITY tech_flash_remote_update IS
   GENERIC (
@@ -66,4 +67,9 @@ BEGIN
     u0 : ip_arria10_remote_update
     PORT MAP (clock, data_in, param, read_param, reconfig, reset, reset_timer, write_param, busy, data_out);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_remote_update
+    PORT MAP (clock, data_in, param, read_param, reconfig, reset, reset_timer, write_param, busy, data_out);
+  END GENERATE;
 END ARCHITECTURE;
diff --git a/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens.vhd b/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens.vhd
index e785842196..1b69fc737e 100644
--- a/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens.vhd
+++ b/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_pkg.ALL;
 USE technology_lib.technology_select_pkg.ALL;
 
 LIBRARY ip_arria10_temp_sense_altera_temp_sense_150;
+LIBRARY ip_arria10_e3sge3_temp_sense_altera_temp_sense_151;
 
 
 ENTITY tech_fpga_temp_sens IS
diff --git a/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens_component_pkg.vhd b/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens_component_pkg.vhd
index a0080a1af5..8c9c255c0f 100644
--- a/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens_component_pkg.vhd
+++ b/libraries/technology/fpga_temp_sens/tech_fpga_temp_sens_component_pkg.vhd
@@ -35,5 +35,14 @@ PACKAGE tech_fpga_temp_sens_component_pkg IS
   	);
   END COMPONENT;
 
+  COMPONENT ip_arria10_e3sge3_temp_sense IS
+  	PORT (
+  		corectl : IN  STD_LOGIC := '0';            -- corectl.corectl
+  		eoc     : OUT STD_LOGIC;                   -- eoc.eoc
+  		reset   : IN  STD_LOGIC := '0';            -- reset.reset
+  		tempout : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) -- tempout.tempout
+  	);
+  END COMPONENT;
+
 END tech_fpga_temp_sens_component_pkg;
 
diff --git a/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens.vhd b/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens.vhd
index 56f8d9ded7..f9111d1c90 100644
--- a/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens.vhd
+++ b/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens.vhd
@@ -27,6 +27,7 @@ USE technology_lib.technology_pkg.ALL;
 USE technology_lib.technology_select_pkg.ALL;
 
 LIBRARY ip_arria10_voltage_sense_altera_voltage_sense_150;
+LIBRARY ip_arria10_e3sge3_voltage_sense_altera_voltage_sense_151;
 
 
 ENTITY tech_fpga_voltage_sens IS
diff --git a/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens_component_pkg.vhd b/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens_component_pkg.vhd
index 87a657044a..9780d0870b 100644
--- a/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens_component_pkg.vhd
+++ b/libraries/technology/fpga_voltage_sens/tech_fpga_voltage_sens_component_pkg.vhd
@@ -44,5 +44,23 @@ PACKAGE tech_fpga_voltage_sens_component_pkg IS
   	);
   END COMPONENT;
 
+  COMPONENT ip_arria10_e3sge3_voltage_sense IS
+  	PORT (
+  		clock_clk                    : in  STD_LOGIC := '0';            
+  		reset_sink_reset             : in  STD_LOGIC;                   
+  		controller_csr_address       : in  STD_LOGIC := '0';           
+  		controller_csr_read          : in  STD_LOGIC := '0';           
+  		controller_csr_write         : in  STD_LOGIC := '0';           
+  		controller_csr_writedata     : in  STD_LOGIC_VECTOR(31 downto 0) := (others => '0');     
+  		controller_csr_readdata      : out STD_LOGIC_VECTOR(31 downto 0) := (others => '0');     
+  		sample_store_csr_address     : in  STD_LOGIC_VECTOR(3 downto 0) := "0000";           
+  		sample_store_csr_read        : in  STD_LOGIC := '0';           
+  		sample_store_csr_write       : in  STD_LOGIC := '0';           
+  		sample_store_csr_writedata   : in  STD_LOGIC_VECTOR(31 downto 0) := (others => '0');     
+  		sample_store_csr_readdata      : out STD_LOGIC_VECTOR(31 downto 0) := (others => '0');     
+  		sample_store_irq_irq         : out STD_LOGIC
+  	);
+  END COMPONENT;
+
 END tech_fpga_voltage_sens_component_pkg;
 
diff --git a/libraries/technology/fractional_pll/tech_fractional_pll_clk125.vhd b/libraries/technology/fractional_pll/tech_fractional_pll_clk125.vhd
index 4c2814fa2b..00836d4503 100644
--- a/libraries/technology/fractional_pll/tech_fractional_pll_clk125.vhd
+++ b/libraries/technology/fractional_pll/tech_fractional_pll_clk125.vhd
@@ -27,6 +27,7 @@ USE technology_lib.technology_select_pkg.ALL;
 
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_fractional_pll_clk125_altera_xcvr_fpll_a10_150;
+LIBRARY ip_arria10_e3sge3_fractional_pll_clk125_altera_xcvr_fpll_a10_151;
 
 ENTITY tech_fractional_pll_clk125 IS
   GENERIC (
diff --git a/libraries/technology/fractional_pll/tech_fractional_pll_clk200.vhd b/libraries/technology/fractional_pll/tech_fractional_pll_clk200.vhd
index 6dd4ec5834..191326b8c9 100644
--- a/libraries/technology/fractional_pll/tech_fractional_pll_clk200.vhd
+++ b/libraries/technology/fractional_pll/tech_fractional_pll_clk200.vhd
@@ -27,6 +27,7 @@ USE technology_lib.technology_select_pkg.ALL;
 
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_fractional_pll_clk200_altera_xcvr_fpll_a10_150;
+LIBRARY ip_arria10_e3sge3_fractional_pll_clk200_altera_xcvr_fpll_a10_151;
 
 ENTITY tech_fractional_pll_clk200 IS
   GENERIC (
diff --git a/libraries/technology/fractional_pll/tech_fractional_pll_component_pkg.vhd b/libraries/technology/fractional_pll/tech_fractional_pll_component_pkg.vhd
index c8e1bcd975..8b0db6b937 100644
--- a/libraries/technology/fractional_pll/tech_fractional_pll_component_pkg.vhd
+++ b/libraries/technology/fractional_pll/tech_fractional_pll_component_pkg.vhd
@@ -56,6 +56,37 @@ PACKAGE tech_fractional_pll_component_pkg IS
     pll_refclk0   : in  std_logic := '0'  --   pll_refclk0.clk
   );
   END COMPONENT;
+
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+    
+  COMPONENT ip_arria10_e3sge3_fractional_pll_clk200 IS
+  PORT
+  (
+    outclk0       : out std_logic;        --       outclk0.clk
+    outclk1       : out std_logic;        --       outclk1.clk
+    outclk2       : out std_logic;        --       outclk2.clk
+    pll_cal_busy  : out std_logic;        --  pll_cal_busy.pll_cal_busy
+    pll_locked    : out std_logic;        --    pll_locked.pll_locked
+    pll_powerdown : in  std_logic := '0'; -- pll_powerdown.pll_powerdown
+    pll_refclk0   : in  std_logic := '0'  --   pll_refclk0.clk
+  );
+  END COMPONENT;
+
+  COMPONENT ip_arria10_e3sge3_fractional_pll_clk125 IS
+  PORT
+  (
+    outclk0       : out std_logic;        --       outclk0.clk
+    outclk1       : out std_logic;        --       outclk1.clk
+    outclk2       : out std_logic;        --       outclk2.clk
+    outclk3       : out std_logic;        --       outclk2.clk
+    pll_cal_busy  : out std_logic;        --  pll_cal_busy.pll_cal_busy
+    pll_locked    : out std_logic;        --    pll_locked.pll_locked
+    pll_powerdown : in  std_logic := '0'; -- pll_powerdown.pll_powerdown
+    pll_refclk0   : in  std_logic := '0'  --   pll_refclk0.clk
+  );
+  END COMPONENT;
   
 END tech_fractional_pll_component_pkg;
 
diff --git a/libraries/technology/iobuf/tech_iobuf_component_pkg.vhd b/libraries/technology/iobuf/tech_iobuf_component_pkg.vhd
index dce04fc43e..2d66aebd7d 100644
--- a/libraries/technology/iobuf/tech_iobuf_component_pkg.vhd
+++ b/libraries/technology/iobuf/tech_iobuf_component_pkg.vhd
@@ -93,4 +93,36 @@ PACKAGE tech_iobuf_component_pkg IS
   );
   END COMPONENT;
   
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+  
+  COMPONENT ip_arria10_e3sge3_ddio_in IS
+  GENERIC (
+    g_width : NATURAL := 1
+  );
+  PORT (
+    in_dat      : IN  STD_LOGIC_VECTOR(g_width-1 DOWNTO 0);
+    in_clk      : IN  STD_LOGIC;
+    in_clk_en   : IN  STD_LOGIC := '1';   -- Not Connected
+    rst         : IN  STD_LOGIC := '0';
+    out_dat_hi  : OUT STD_LOGIC_VECTOR(g_width-1 DOWNTO 0);
+    out_dat_lo  : OUT STD_LOGIC_VECTOR(g_width-1 DOWNTO 0)
+  );
+  END COMPONENT;
+  
+  COMPONENT ip_arria10_e3sge3_ddio_out IS
+  GENERIC(
+    g_width : NATURAL := 1
+  );
+  PORT (
+    rst        : IN   STD_LOGIC := '0';
+    in_clk     : IN   STD_LOGIC;
+    in_clk_en  : IN   STD_LOGIC := '1';   -- Not Connected
+    in_dat_hi  : IN   STD_LOGIC_VECTOR(g_width-1 DOWNTO 0);
+    in_dat_lo  : IN   STD_LOGIC_VECTOR(g_width-1 DOWNTO 0);
+    out_dat    : OUT  STD_LOGIC_VECTOR(g_width-1 DOWNTO 0)
+  );
+  END COMPONENT;
+  
 END tech_iobuf_component_pkg;
diff --git a/libraries/technology/iobuf/tech_iobuf_ddio_in.vhd b/libraries/technology/iobuf/tech_iobuf_ddio_in.vhd
index 252f592c2e..97531852b5 100644
--- a/libraries/technology/iobuf/tech_iobuf_ddio_in.vhd
+++ b/libraries/technology/iobuf/tech_iobuf_ddio_in.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_ddio_lib;
 LIBRARY ip_arria10_ddio_lib;
+LIBRARY ip_arria10_e3sge3_ddio_lib;
 
 ENTITY tech_iobuf_ddio_in IS
   GENERIC (
@@ -60,5 +61,11 @@ BEGIN
     GENERIC MAP (g_width)
     PORT MAP (in_dat, in_clk, in_clk_en, rst, out_dat_hi, out_dat_lo);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_ddio_in
+    GENERIC MAP (g_width)
+    PORT MAP (in_dat, in_clk, in_clk_en, rst, out_dat_hi, out_dat_lo);
+  END GENERATE;
   
-END ARCHITECTURE;
\ No newline at end of file
+END ARCHITECTURE;
diff --git a/libraries/technology/iobuf/tech_iobuf_ddio_out.vhd b/libraries/technology/iobuf/tech_iobuf_ddio_out.vhd
index efbf517b73..b8f7773440 100644
--- a/libraries/technology/iobuf/tech_iobuf_ddio_out.vhd
+++ b/libraries/technology/iobuf/tech_iobuf_ddio_out.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_ddio_lib;
 LIBRARY ip_arria10_ddio_lib;
+LIBRARY ip_arria10_e3sge3_ddio_lib;
 
 ENTITY tech_iobuf_ddio_out IS
   GENERIC (
@@ -60,5 +61,11 @@ BEGIN
     GENERIC MAP (g_width)
     PORT MAP (rst, in_clk, in_clk_en, in_dat_hi, in_dat_lo, out_dat);
   END GENERATE;
+
+  gen_ip_arria10_e3sge3 : IF g_technology=c_tech_arria10_e3sge3 GENERATE
+    u0 : ip_arria10_e3sge3_ddio_out
+    GENERIC MAP (g_width)
+    PORT MAP (rst, in_clk, in_clk_en, in_dat_hi, in_dat_lo, out_dat);
+  END GENERATE;
   
-END ARCHITECTURE;
\ No newline at end of file
+END ARCHITECTURE;
diff --git a/libraries/technology/ip_arria10_e3sge3/clkbuf_global/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/clkbuf_global/hdllib.cfg
index 526066edf3..2c7493ddd9 100644
--- a/libraries/technology/ip_arria10_e3sge3/clkbuf_global/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/clkbuf_global/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_clkbuf_global 
-hdl_library_clause_name = ip_arria10_e3sge3_clkbuf_global_altclkctrl_150
+hdl_library_clause_name = ip_arria10_e3sge3_clkbuf_global_altclkctrl_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/ddio/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/ddio/compile_ip.tcl
index 39198d5513..a211be7af7 100644
--- a/libraries/technology/ip_arria10_e3sge3/ddio/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/ddio/compile_ip.tcl
@@ -26,7 +26,8 @@ set IPMODEL "SIM";
 if {$IPMODEL=="PHY"} {
 
     # This file is based on Qsys-generated file msim_setup.tcl.
-    set IP_DIR "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/ddio/generated/"
+    set IP_DIR_IN "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/ddio/generated_in/"
+    set IP_DIR_OUT "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/ddio/generated_out/"
         
     #vlib ./work/         ;# Assume library work already exists
     vmap ip_arria10_e3sge3_ddio_in_1_altera_gpio_core_151  ./work/
@@ -40,14 +41,14 @@ if {$IPMODEL=="PHY"} {
     #vmap ip_arria10_e3sge3_ddio_in_1 ./work/
     #vmap ip_arria10_e3sge3_ddio_out_1 ./work/
     
-    vlog -sv "$IP_DIR/../altera_gpio_core_151/sim/mentor/altera_gpio.sv"                        -work ip_arria10_e3sge3_ddio_in_1_altera_gpio_core_151
-    vlog -sv "$IP_DIR/../altera_gpio_core_151/sim/mentor/altera_gpio.sv"                        -work ip_arria10_e3sge3_ddio_out_1_altera_gpio_core_151
+    vlog -sv "$IP_DIR_IN/../altera_gpio_core20_151/sim/mentor/altera_gpio.sv"                   -work ip_arria10_e3sge3_ddio_in_1_altera_gpio_core_151
+    vlog -sv "$IP_DIR_OUT/../altera_gpio_core20_151/sim/mentor/altera_gpio.sv"                  -work ip_arria10_e3sge3_ddio_out_1_altera_gpio_core_151
     
-    vcom     "$IP_DIR/../altera_gpio_151/sim/ip_arria10_e3sge3_ddio_in_1_altera_gpio_151_v2653ny.vhd"  -work ip_arria10_e3sge3_ddio_in_1_altera_gpio_151     
-    vcom     "$IP_DIR/ip_arria10_e3sge3_ddio_in_1.vhd"                                                                                               
+    vcom     "$IP_DIR_IN/../altera_gpio_151/sim/ip_arria10_e3sge3_ddio_in_1_altera_gpio_151_ia6gnqq.vhd"  -work ip_arria10_e3sge3_ddio_in_1_altera_gpio_151     
+    vcom     "$IP_DIR_IN/ip_arria10_e3sge3_ddio_in_1.vhd"                                                                                               
     
-    vcom     "$IP_DIR/../altera_gpio_151/sim/ip_arria10_e3sge3_ddio_out_1_altera_gpio_151_26jftvi.vhd" -work ip_arria10_e3sge3_ddio_out_1_altera_gpio_151     
-    vcom     "$IP_DIR/ip_arria10_e3sge3_ddio_out_1.vhd"                                                                                                    
+    vcom     "$IP_DIR_OUT/../altera_gpio_151/sim/ip_arria10_e3sge3_ddio_out_1_altera_gpio_151_pqwimxi.vhd" -work ip_arria10_e3sge3_ddio_out_1_altera_gpio_151     
+    vcom     "$IP_DIR_OUT/ip_arria10_e3sge3_ddio_out_1.vhd"                                                                                                    
     
 } else {
 
diff --git a/libraries/technology/ip_arria10_e3sge3/ddio/generate_ip.sh b/libraries/technology/ip_arria10_e3sge3/ddio/generate_ip.sh
index 03a3952849..361db703aa 100755
--- a/libraries/technology/ip_arria10_e3sge3/ddio/generate_ip.sh
+++ b/libraries/technology/ip_arria10_e3sge3/ddio/generate_ip.sh
@@ -39,5 +39,5 @@
 #qsys-generate --help
 
 # Only generate the source IP
-qsys-generate ip_arria10_e3sge3_ddio_in_1.qsys  --synthesis=VHDL --simulation=VHDL --output-directory=generated
-qsys-generate ip_arria10_e3sge3_ddio_out_1.qsys --synthesis=VHDL --simulation=VHDL --output-directory=generated
+qsys-generate ip_arria10_e3sge3_ddio_in_1.qsys  --synthesis=VHDL --simulation=VHDL --output-directory=generated_in
+qsys-generate ip_arria10_e3sge3_ddio_out_1.qsys --synthesis=VHDL --simulation=VHDL --output-directory=generated_out
diff --git a/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/compile_ip.tcl
index 2877158aba..7cc37bb4c7 100644
--- a/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/compile_ip.tcl
@@ -30,5 +30,6 @@ set IP_DIR   "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/flash/asmi_p
 
 vmap ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151 ./work/
 
-  vlog "$IP_DIR/../altera_asmi_parallel_151/sim/ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151_bvuboea.v" -work ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151
-  vcom "$IP_DIR/ip_arria10_e3sge3_asmi_parallel.vhd"                                                                                                                       
+vlog "$IP_DIR/../altera_asmi_parallel_151/sim/ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151_jy7dk3i.v" -work ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151
+vcom "$IP_DIR/ip_arria10_e3sge3_asmi_parallel.vhd"                                                                                                                       
+
diff --git a/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/hdllib.cfg
index 1846f81fa0..52a2a86a6b 100644
--- a/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/flash/asmi_parallel/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_asmi_parallel
-hdl_library_clause_name = ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_150
+hdl_library_clause_name = ip_arria10_e3sge3_asmi_parallel_altera_asmi_parallel_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/flash/remote_update/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/flash/remote_update/compile_ip.tcl
index 4df969080c..6da4cd63b6 100644
--- a/libraries/technology/ip_arria10_e3sge3/flash/remote_update/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/flash/remote_update/compile_ip.tcl
@@ -31,6 +31,7 @@ set IP_DIR   "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/flash/remote
 vmap ip_arria10_e3sge3_remote_update_altera_remote_update_core_151  ./work/
 vmap ip_arria10_e3sge3_remote_update_altera_remote_update_151       ./work/
 
-  vlog "$IP_DIR/../altera_remote_update_core_151/sim/altera_remote_update_core.v"                            -work ip_arria10_e3sge3_remote_update_altera_remote_update_core_151
-  vlog "$IP_DIR/../altera_remote_update_151/sim/ip_arria10_e3sge3_remote_update_altera_remote_update_151_eltl22a.v" -work ip_arria10_e3sge3_remote_update_altera_remote_update_151     
-  vcom "$IP_DIR/ip_arria10_e3sge3_remote_update.vhd"                                                                                                                            
+vlog "$IP_DIR/../altera_remote_update_core_151/sim/altera_remote_update_core.v"                                   -work ip_arria10_e3sge3_remote_update_altera_remote_update_core_151
+vlog "$IP_DIR/../altera_remote_update_151/sim/ip_arria10_e3sge3_remote_update_altera_remote_update_151_fdzfjma.v" -work ip_arria10_e3sge3_remote_update_altera_remote_update_151     
+vcom "$IP_DIR/ip_arria10_e3sge3_remote_update.vhd"                                                                                                                            
+
diff --git a/libraries/technology/ip_arria10_e3sge3/flash/remote_update/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/flash/remote_update/hdllib.cfg
index 367db94cb0..0f8147f4fb 100644
--- a/libraries/technology/ip_arria10_e3sge3/flash/remote_update/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/flash/remote_update/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_remote_update
-hdl_library_clause_name = ip_arria10_e3sge3_remote_update_altera_remote_update_150
+hdl_library_clause_name = ip_arria10_e3sge3_remote_update_altera_remote_update_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk125/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk125/hdllib.cfg
index 18e3203e53..7caa46b972 100644
--- a/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk125/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk125/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_fractional_pll_clk125
-hdl_library_clause_name = ip_arria10_e3sge3_fractional_pll_clk125_altera_xcvr_fpll_a10_150
+hdl_library_clause_name = ip_arria10_e3sge3_fractional_pll_clk125_altera_xcvr_fpll_a10_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk200/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk200/hdllib.cfg
index 0d965639f7..8050fce67e 100644
--- a/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk200/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/fractional_pll_clk200/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_fractional_pll_clk200  
-hdl_library_clause_name = ip_arria10_e3sge3_fractional_pll_clk200_altera_xcvr_fpll_a10_150
+hdl_library_clause_name = ip_arria10_e3sge3_fractional_pll_clk200_altera_xcvr_fpll_a10_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk125/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/pll_clk125/compile_ip.tcl
index d1e944fae5..e1a730824c 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk125/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk125/compile_ip.tcl
@@ -32,7 +32,7 @@ set IP_DIR   "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/pll_clk125/g
 
 vmap ip_arria10_e3sge3_pll_clk125_altera_iopll_151 ./work/
 
-  vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_pll_e3sge3_clk125_altera_iopll_151_hxjbkfi.vo" -work ip_arria10_e3sge3_pll_clk125_altera_iopll_151
+  vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_e3sge3_pll_clk125_altera_iopll_151_lzlggeq.vo" -work ip_arria10_e3sge3_pll_clk125_altera_iopll_151
   vcom "$IP_DIR/ip_arria10_e3sge3_pll_clk125.vhd"                                                                                             
 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk125/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/pll_clk125/hdllib.cfg
index 6ac8ad3f06..6857212230 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk125/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk125/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_pll_clk125 
-hdl_library_clause_name = ip_arria10_e3sge3_pll_clk125_altera_iopll_150
+hdl_library_clause_name = ip_arria10_e3sge3_pll_clk125_altera_iopll_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk200/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/pll_clk200/compile_ip.tcl
index 13995db55b..10b86dcf0f 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk200/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk200/compile_ip.tcl
@@ -32,7 +32,6 @@ set IP_DIR   "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/pll_clk200/g
 
 vmap ip_arria10_e3sge3_pll_clk200_altera_iopll_151 ./work/
 
-  vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_e3sge3_pll_clk200_altera_iopll_151_etouxvq.vo" -work ip_arria10_e3sge3_pll_clk200_altera_iopll_151
-  vcom "$IP_DIR/ip_arria10_e3sge3_pll_clk200.vhd"                                                                                             
-
+vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_e3sge3_pll_clk200_altera_iopll_151_2qckecy.vo" -work ip_arria10_e3sge3_pll_clk200_altera_iopll_151
+vcom "$IP_DIR/ip_arria10_e3sge3_pll_clk200.vhd"                                                                                             
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk200/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/pll_clk200/hdllib.cfg
index 3de8a4d5f6..26ec0a211e 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk200/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk200/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_pll_clk200  
-hdl_library_clause_name = ip_arria10_e3sge3_pll_clk200_altera_iopll_150
+hdl_library_clause_name = ip_arria10_e3sge3_pll_clk200_altera_iopll_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk25/compile_ip.tcl b/libraries/technology/ip_arria10_e3sge3/pll_clk25/compile_ip.tcl
index d5925d5928..7c21e1477b 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk25/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk25/compile_ip.tcl
@@ -32,7 +32,6 @@ set IP_DIR   "$env(RADIOHDL)/libraries/technology/ip_arria10_e3sge3/pll_clk25/ge
 
 vmap ip_arria10_e3sge3_pll_clk25_altera_iopll_151 ./work/
 
-  vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_e3sge3_pll_clk25_altera_iopll_151_o3lgeqy.vo" -work ip_arria10_e3sge3_pll_clk25_altera_iopll_151
+  vlog "$IP_DIR/../altera_iopll_151/sim/ip_arria10_e3sge3_pll_clk25_altera_iopll_151_roshl5q.vo" -work ip_arria10_e3sge3_pll_clk25_altera_iopll_151
   vcom "$IP_DIR/ip_arria10_e3sge3_pll_clk25.vhd"                                                                                            
 
-
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_clk25/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/pll_clk25/hdllib.cfg
index 3acd3db179..37d30f2de3 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_clk25/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/pll_clk25/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_pll_clk25 
-hdl_library_clause_name = ip_arria10_e3sge3_pll_clk25_altera_iopll_150
+hdl_library_clause_name = ip_arria10_e3sge3_pll_clk25_altera_iopll_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/pll_xgmii_mac_clocks/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/pll_xgmii_mac_clocks/hdllib.cfg
index 8694c86e56..a0be0646dd 100644
--- a/libraries/technology/ip_arria10_e3sge3/pll_xgmii_mac_clocks/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/pll_xgmii_mac_clocks/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_pll_xgmii_mac_clocks  
-hdl_library_clause_name = ip_arria10_e3sge3_pll_xgmii_mac_clocks_altera_xcvr_fpll_a10_150
+hdl_library_clause_name = ip_arria10_e3sge3_pll_xgmii_mac_clocks_altera_xcvr_fpll_a10_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/temp_sense/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/temp_sense/hdllib.cfg
index 6d75f4fabb..63d27bbaeb 100644
--- a/libraries/technology/ip_arria10_e3sge3/temp_sense/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/temp_sense/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_temp_sense 
-hdl_library_clause_name = ip_arria10_e3sge3_temp_sense_altera_temp_sense_150
+hdl_library_clause_name = ip_arria10_e3sge3_temp_sense_altera_temp_sense_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/ip_arria10_e3sge3/voltage_sense/hdllib.cfg b/libraries/technology/ip_arria10_e3sge3/voltage_sense/hdllib.cfg
index d8e8fe792b..6f541b5a46 100644
--- a/libraries/technology/ip_arria10_e3sge3/voltage_sense/hdllib.cfg
+++ b/libraries/technology/ip_arria10_e3sge3/voltage_sense/hdllib.cfg
@@ -1,5 +1,5 @@
 hdl_lib_name = ip_arria10_e3sge3_voltage_sense 
-hdl_library_clause_name = ip_arria10_e3sge3_voltage_sense_altera_voltage_sense_150
+hdl_library_clause_name = ip_arria10_e3sge3_voltage_sense_altera_voltage_sense_151
 hdl_lib_uses_synth = 
 hdl_lib_uses_sim = 
 
diff --git a/libraries/technology/pll/tech_pll_clk125.vhd b/libraries/technology/pll/tech_pll_clk125.vhd
index d322fb5973..0c13ffc207 100644
--- a/libraries/technology/pll/tech_pll_clk125.vhd
+++ b/libraries/technology/pll/tech_pll_clk125.vhd
@@ -27,6 +27,7 @@ USE technology_lib.technology_select_pkg.ALL;
 
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_pll_clk125_altera_iopll_150;
+LIBRARY ip_arria10_e3sge3_pll_clk125_altera_iopll_151;
 
 ENTITY tech_pll_clk125 IS
   GENERIC (
diff --git a/libraries/technology/pll/tech_pll_clk200.vhd b/libraries/technology/pll/tech_pll_clk200.vhd
index 1ad91b9f48..539bf15f15 100644
--- a/libraries/technology/pll/tech_pll_clk200.vhd
+++ b/libraries/technology/pll/tech_pll_clk200.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_stratixiv_pll_lib;
 LIBRARY ip_arria10_pll_clk200_altera_iopll_150;
+LIBRARY ip_arria10_e3sge3_pll_clk200_altera_iopll_151;
 
 ENTITY tech_pll_clk200 IS
   GENERIC (
diff --git a/libraries/technology/pll/tech_pll_clk25.vhd b/libraries/technology/pll/tech_pll_clk25.vhd
index 40e666e4a5..13301ec202 100644
--- a/libraries/technology/pll/tech_pll_clk25.vhd
+++ b/libraries/technology/pll/tech_pll_clk25.vhd
@@ -28,6 +28,7 @@ USE technology_lib.technology_select_pkg.ALL;
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_pll_clk25_altera_iopll_150;
 LIBRARY ip_stratixiv_pll_clk25_lib;
+LIBRARY ip_arria10_e3sge3_pll_clk25_altera_iopll_151;
 
 ENTITY tech_pll_clk25 IS
   GENERIC (
diff --git a/libraries/technology/pll/tech_pll_component_pkg.vhd b/libraries/technology/pll/tech_pll_component_pkg.vhd
index 7b7abf0467..fab118242b 100644
--- a/libraries/technology/pll/tech_pll_component_pkg.vhd
+++ b/libraries/technology/pll/tech_pll_component_pkg.vhd
@@ -174,6 +174,61 @@ PACKAGE tech_pll_component_pkg IS
 --    locked    : OUT STD_LOGIC 
 --  );
 --  END COMPONENT;
+
+
+  -----------------------------------------------------------------------------
+  -- ip_arria10_e3sge3
+  -----------------------------------------------------------------------------
+  
+  COMPONENT ip_arria10_e3sge3_pll_xgmii_mac_clocks IS
+  PORT (
+    pll_refclk0   : in  std_logic := '0'; --   pll_refclk0.clk
+    pll_powerdown : in  std_logic := '0'; -- pll_powerdown.pll_powerdown
+    pll_locked    : out std_logic;        --    pll_locked.pll_locked
+    outclk0       : out std_logic;        --       outclk0.clk
+    pll_cal_busy  : out std_logic;        --  pll_cal_busy.pll_cal_busy
+    outclk1       : out std_logic         --       outclk1.clk
+  );
+  END COMPONENT;
+
+  COMPONENT ip_arria10_e3sge3_pll_clk200 IS
+  PORT
+  (
+    rst       : IN STD_LOGIC  := '0';
+    refclk    : IN STD_LOGIC  := '0';
+    outclk_0  : OUT STD_LOGIC ;
+    outclk_1  : OUT STD_LOGIC ;
+    outclk_2  : OUT STD_LOGIC ;
+    locked    : OUT STD_LOGIC 
+  );
+  END COMPONENT;
+
+  COMPONENT ip_arria10_e3sge3_pll_clk25 IS
+  PORT
+  (
+    rst       : IN STD_LOGIC  := '0';
+    refclk    : IN STD_LOGIC  := '0';
+    outclk_0  : OUT STD_LOGIC ;
+    outclk_1  : OUT STD_LOGIC ;
+    outclk_2  : OUT STD_LOGIC ;
+    outclk_3  : OUT STD_LOGIC ;
+    locked    : OUT STD_LOGIC 
+  );
+  END COMPONENT;
+
+  COMPONENT ip_arria10_e3sge3_pll_clk125 IS
+  PORT
+  (
+    rst       : IN STD_LOGIC  := '0';
+    refclk    : IN STD_LOGIC  := '0';
+    outclk_0  : OUT STD_LOGIC ;
+    outclk_1  : OUT STD_LOGIC ;
+    outclk_2  : OUT STD_LOGIC ;
+    outclk_3  : OUT STD_LOGIC ;
+    locked    : OUT STD_LOGIC 
+  );
+  END COMPONENT;
+
   
 END tech_pll_component_pkg;
 
diff --git a/libraries/technology/pll/tech_pll_xgmii_mac_clocks.vhd b/libraries/technology/pll/tech_pll_xgmii_mac_clocks.vhd
index a3748668a1..7bc38df5ee 100644
--- a/libraries/technology/pll/tech_pll_xgmii_mac_clocks.vhd
+++ b/libraries/technology/pll/tech_pll_xgmii_mac_clocks.vhd
@@ -42,6 +42,7 @@ USE common_lib.common_pkg.ALL;
 
 -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis.
 LIBRARY ip_arria10_pll_xgmii_mac_clocks_altera_xcvr_fpll_a10_150;
+LIBRARY ip_arria10_e3sge3_pll_xgmii_mac_clocks_altera_xcvr_fpll_a10_151;
 
 ENTITY tech_pll_xgmii_mac_clocks IS
   GENERIC (
diff --git a/libraries/technology/technology_select_pkg.vhd b/libraries/technology/technology_select_pkg.vhd
index d523ac4fb9..055faa9b0a 100644
--- a/libraries/technology/technology_select_pkg.vhd
+++ b/libraries/technology/technology_select_pkg.vhd
@@ -32,5 +32,6 @@ PACKAGE technology_select_pkg IS
 
   CONSTANT c_tech_select_default : INTEGER := c_tech_stratixiv;
   --CONSTANT c_tech_select_default : INTEGER := c_tech_arria10;
+  --CONSTANT c_tech_select_default : INTEGER := c_tech_arria10_e3sge3;
   
 END technology_select_pkg;
-- 
GitLab