diff --git a/libraries/technology/ddr/tech_ddr_stratixiv.vhd b/libraries/technology/ddr/tech_ddr_stratixiv.vhd
index 284727598e02da01303a6798819ebc9ed2da0c4c..3da8964c5b29e50cf542560a7e1d9f95c5caf321 100644
--- a/libraries/technology/ddr/tech_ddr_stratixiv.vhd
+++ b/libraries/technology/ddr/tech_ddr_stratixiv.vhd
@@ -24,10 +24,10 @@
 LIBRARY ip_stratixiv_ddr3_uphy_4g_800_master_lib;
 LIBRARY ip_stratixiv_ddr3_uphy_4g_800_slave_lib;
 
-LIBRARY IEEE, technology_lib, tech_ddr_lib, common_lib;
+LIBRARY IEEE, technology_lib, common_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE technology_lib.technology_pkg.ALL;
-USE tech_ddr_lib.tech_ddr_pkg.ALL;
+USE work.tech_ddr_pkg.ALL;
 USE work.tech_ddr_component_pkg.ALL;
 
 ENTITY tech_ddr_stratixiv IS
@@ -60,27 +60,36 @@ END tech_ddr_stratixiv;
 
 ARCHITECTURE str OF tech_ddr_stratixiv IS
 
-  CONSTANT c_gigabytes             : NATURAL := func_tech_ddr_module_size(g_tech_ddr)
+  CONSTANT c_gigabytes             : NATURAL := func_tech_ddr_module_size(g_tech_ddr);
 
+  CONSTANT c_ctrl_address_w        : NATURAL := func_tech_ddr_ctrl_address_w(g_tech_ddr);
+  CONSTANT c_ctlr_data_w           : NATURAL := func_tech_ddr_ctrl_data_w(   g_tech_ddr);
+  
+  SIGNAL dbg_c_gigabytes           : NATURAL := c_gigabytes;
+  
+  SIGNAL ctlr_ref_rst_n            : STD_LOGIC;
+  SIGNAL ctlr_gen_rst_n            : STD_LOGIC;
   SIGNAL i_ctlr_gen_rst            : STD_LOGIC;
   SIGNAL i_ctlr_gen_clk_2x         : STD_LOGIC;
 
 BEGIN
 
+  ctlr_ref_rst_n <= NOT ctlr_ref_rst;
+  
   gen_ip_stratixiv_ddr3_uphy_4g_800_master : IF g_tech_ddr.name="DDR3" AND c_gigabytes=4 AND g_tech_ddr.mts=800 AND g_tech_ddr.master=TRUE GENERATE
     u_ip_stratixiv_ddr3_uphy_4g_800_master : ip_stratixiv_ddr3_uphy_4g_800_master
     PORT MAP (
       pll_ref_clk                => ctlr_ref_clk,                                                                   --  pll_ref_clk.clk
-      global_reset_n             => ctlr_ref_rst,                                                                   -- global_reset.reset_n
-      soft_reset_n               => '0',                                                                            --   soft_reset.reset_n
+      global_reset_n             => ctlr_ref_rst_n,                                                                 -- global_reset.reset_n
+      soft_reset_n               => '1',                                                                            --   soft_reset.reset_n
       afi_clk                    => ctlr_gen_clk,                                                                   --      afi_clk.clk
       afi_half_clk               => OPEN,                                                                           -- afi_half_clk.clk
-      afi_reset_n                => ctlr_gen_rst,                                                                   --    afi_reset.reset_n
+      afi_reset_n                => ctlr_gen_rst_n,                                                                 --    afi_reset.reset_n
       mem_a                      => phy_ou.a(g_tech_ddr.a_w-1 DOWNTO 0),                                            --       memory.mem_a
       mem_ba                     => phy_ou.ba(g_tech_ddr.ba_w-1 DOWNTO 0),                                          --             .mem_ba
-      mem_ck                     => phy_io.clk(g_tech_ddr.clk_w-1 DOWNTO 0),                                        --             .mem_ck
-      mem_ck_n                   => phy_io.clk_n(g_tech_ddr.clk_w-1 DOWNTO 0),                                      --             .mem_ck_n
-      mem_cke                    => phy_ou.cke(g_tech_ddr.clk_w-1 DOWNTO 0),                                        --             .mem_cke
+      mem_ck                     => phy_ou.ck(g_tech_ddr.ck_w-1 DOWNTO 0),                                          --             .mem_ck
+      mem_ck_n                   => phy_ou.ck_n(g_tech_ddr.ck_w-1 DOWNTO 0),                                        --             .mem_ck_n
+      mem_cke                    => phy_ou.cke(g_tech_ddr.cke_w-1 DOWNTO 0),                                        --             .mem_cke
       mem_cs_n                   => phy_ou.cs_n(g_tech_ddr.cs_w-1 DOWNTO 0),                                        --             .mem_cs_n
       mem_dm                     => phy_ou.dm(g_tech_ddr.dm_w-1 DOWNTO 0),                                          --             .mem_dm
       mem_ras_n                  => phy_ou.ras_n,                                                                   --             .mem_ras_n
@@ -90,13 +99,13 @@ BEGIN
       mem_dq                     => phy_io.dq(g_tech_ddr.dq_w-1 DOWNTO 0),                                          --             .mem_dq
       mem_dqs                    => phy_io.dqs(g_tech_ddr.dqs_w-1 DOWNTO 0),                                        --             .mem_dqs
       mem_dqs_n                  => phy_io.dqs_n(g_tech_ddr.dqs_w-1 DOWNTO 0),                                      --             .mem_dqs_n
-      mem_odt                    => phy_ou.odt(g_tech_ddr.cs_w-1 DOWNTO 0),                                         --             .mem_odt
+      mem_odt                    => phy_ou.odt(g_tech_ddr.odt_w-1 DOWNTO 0),                                        --             .mem_odt
       avl_ready                  => ctrl_miso.waitrequest_n,                                                        --          avl.waitrequest_n
       avl_burstbegin             => ctrl_mosi.burstbegin,                                                           --             .beginbursttransfer
-      avl_addr                   => ctrl_mosi.address(g_tech_ddr.address_w-1 DOWNTO 0),                             --             .address
+      avl_addr                   => ctrl_mosi.address(c_ctrl_address_w-1 DOWNTO 0),                                 --             .address
       avl_rdata_valid            => ctrl_miso.rdval,                                                                --             .readdatavalid
-      avl_rdata                  => ctrl_miso.rddata(g_tech_ddr.data_w-1 DOWNTO 0),                                 --             .readdata
-      avl_wdata                  => ctrl_mosi.wrdata(g_tech_ddr.data_w-1 DOWNTO 0),                                 --             .writedata
+      avl_rdata                  => ctrl_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                                     --             .readdata
+      avl_wdata                  => ctrl_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                                     --             .writedata
       avl_be                     => (OTHERS=>'1'),                                                                  --             .byteenable
       avl_read_req               => ctrl_mosi.rd,                                                                   --             .read
       avl_write_req              => ctrl_mosi.wr,                                                                   --             .write
@@ -123,16 +132,16 @@ BEGIN
     u_ip_stratixiv_ddr3_uphy_4g_800_slave : ip_stratixiv_ddr3_uphy_4g_800_slave
     PORT MAP (
       pll_ref_clk                => ctlr_ref_clk,                                                                   --  pll_ref_clk.clk
-      global_reset_n             => ctlr_ref_rst,                                                                   -- global_reset.reset_n
-      soft_reset_n               => '0',                                                                            --   soft_reset.reset_n
+      global_reset_n             => ctlr_ref_rst_n,                                                                 -- global_reset.reset_n
+      soft_reset_n               => '1',                                                                            --   soft_reset.reset_n
       afi_clk                    => ctlr_gen_clk,                                                                   --      afi_clk.clk
       afi_half_clk               => OPEN,                                                                           -- afi_half_clk.clk
-      afi_reset_n                => ctlr_gen_rst,                                                                   --    afi_reset.reset_n
+      afi_reset_n                => ctlr_gen_rst_n,                                                                 --    afi_reset.reset_n
       mem_a                      => phy_ou.a(g_tech_ddr.a_w-1 DOWNTO 0),                                            --       memory.mem_a
       mem_ba                     => phy_ou.ba(g_tech_ddr.ba_w-1 DOWNTO 0),                                          --             .mem_ba
-      mem_ck                     => phy_io.clk(g_tech_ddr.clk_w-1 DOWNTO 0),                                        --             .mem_ck
-      mem_ck_n                   => phy_io.clk_n(g_tech_ddr.clk_w-1 DOWNTO 0),                                      --             .mem_ck_n
-      mem_cke                    => phy_ou.cke(g_tech_ddr.clk_w-1 DOWNTO 0),                                        --             .mem_cke
+      mem_ck                     => phy_ou.ck(g_tech_ddr.ck_w-1 DOWNTO 0),                                          --             .mem_ck
+      mem_ck_n                   => phy_ou.ck_n(g_tech_ddr.ck_w-1 DOWNTO 0),                                        --             .mem_ck_n
+      mem_cke                    => phy_ou.cke(g_tech_ddr.cke_w-1 DOWNTO 0),                                        --             .mem_cke
       mem_cs_n                   => phy_ou.cs_n(g_tech_ddr.cs_w-1 DOWNTO 0),                                        --             .mem_cs_n
       mem_dm                     => phy_ou.dm(g_tech_ddr.dm_w-1 DOWNTO 0),                                          --             .mem_dm
       mem_ras_n                  => phy_ou.ras_n,                                                                   --             .mem_ras_n
@@ -142,13 +151,13 @@ BEGIN
       mem_dq                     => phy_io.dq(g_tech_ddr.dq_w-1 DOWNTO 0),                                          --             .mem_dq
       mem_dqs                    => phy_io.dqs(g_tech_ddr.dqs_w-1 DOWNTO 0),                                        --             .mem_dqs
       mem_dqs_n                  => phy_io.dqs_n(g_tech_ddr.dqs_w-1 DOWNTO 0),                                      --             .mem_dqs_n
-      mem_odt                    => phy_ou.odt(g_tech_ddr.cs_w-1 DOWNTO 0),                                         --             .mem_odt
+      mem_odt                    => phy_ou.odt(g_tech_ddr.odt_w-1 DOWNTO 0),                                        --             .mem_odt
       avl_ready                  => ctrl_miso.waitrequest_n,                                                        --          avl.waitrequest_n
       avl_burstbegin             => ctrl_mosi.burstbegin,                                                           --             .beginbursttransfer
-      avl_addr                   => ctrl_mosi.address(g_tech_ddr.address_w-1 DOWNTO 0),                             --             .address
+      avl_addr                   => ctrl_mosi.address(c_ctrl_address_w-1 DOWNTO 0),                                 --             .address
       avl_rdata_valid            => ctrl_miso.rdval,                                                                --             .readdatavalid
-      avl_rdata                  => ctrl_miso.rddata(g_tech_ddr.data_w-1 DOWNTO 0),                                 --             .readdata
-      avl_wdata                  => ctrl_mosi.wrdata(g_tech_ddr.data_w-1 DOWNTO 0),                                 --             .writedata
+      avl_rdata                  => ctrl_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                                     --             .readdata
+      avl_wdata                  => ctrl_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                                     --             .writedata
       avl_be                     => (OTHERS=>'1'),                                                                  --             .byteenable
       avl_read_req               => ctrl_mosi.rd,                                                                   --             .read
       avl_write_req              => ctrl_mosi.wr,                                                                   --             .write
@@ -169,9 +178,8 @@ BEGIN
     );
   END GENERATE;
   
-  ctlr_gen_rst    <= i_ctlr_gen_rst;
-  ctlr_gen_clk_2x <= i_ctlr_gen_clk_2x;
-
+  i_ctlr_gen_rst <= NOT ctlr_gen_rst_n;
+  
   u_async_ctlr_gen_rst_2x: ENTITY common_lib.common_async
   GENERIC MAP(
     g_rst_level => '0'
@@ -183,4 +191,7 @@ BEGIN
     dout => ctlr_gen_rst_2x
   );
 
+  ctlr_gen_rst    <= i_ctlr_gen_rst;
+  ctlr_gen_clk_2x <= i_ctlr_gen_clk_2x;
+
 END str;