diff --git a/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd b/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
index 56183cd5672acacb6b8ad824f850305a3c6fb080..26386d044ae617180dd8bbedcd7e438e76997c25 100644
--- a/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
+++ b/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
@@ -39,7 +39,7 @@ USE common_lib.common_pkg.ALL;
 USE common_lib.common_mem_pkg.ALL;
 USE common_lib.tb_common_mem_pkg.ALL;
 USE dp_lib.dp_stream_pkg.ALL;
-USE technology_lib.technology_pkg.ALL;
+USE technology_lib.technology_select_pkg.ALL;
 USE tech_ddr_lib.tech_ddr_pkg.ALL;
 
 ENTITY tb_io_ddr IS  
@@ -48,16 +48,17 @@ END ENTITY tb_io_ddr;
 ARCHITECTURE str of tb_io_ddr IS
 
   CONSTANT c_ctlr_ref_clk_period : TIME := 5 ns;  -- 200 MHz
+  CONSTANT c_dp_clk_period       : TIME := 5 ns;  -- 200 MHz
 
-  CONSTANT c_tech_ddr         : t_c_tech_ddr := c_tech_ddr_4g_800m;
+  CONSTANT c_tech_ddr         : t_c_tech_ddr := c_tech_ddr3_4g_800m_master;
   
-  CONSTANT c_data_w           : NATURAL      := 256; --32;
+  CONSTANT c_data_w           : NATURAL := 256; --32;
  
-  SIGNAL ctlr_ref_clk         : STD_LOGIC    := '0';
-  SIGNAL ctlr_ref_rst         : STD_LOGIC    := '1';
-  SIGNAL tb_end               : STD_LOGIC    := '0';
-  SIGNAL ctlr_gen_clk         : STD_LOGIC;
-  SIGNAL ctlr_gen_rst         : STD_LOGIC;
+  SIGNAL ctlr_ref_clk         : STD_LOGIC := '0';
+  SIGNAL ctlr_ref_rst         : STD_LOGIC;
+  SIGNAL tb_end               : STD_LOGIC := '0';
+  SIGNAL dp_clk               : STD_LOGIC := '0';
+  SIGNAL dp_rst               : STD_LOGIC;
 
   SIGNAL ctlr_rdy             : STD_LOGIC;
   SIGNAL ctlr_init_done       : STD_LOGIC;
@@ -90,14 +91,13 @@ ARCHITECTURE str of tb_io_ddr IS
   SIGNAL phy_io               : t_tech_ddr_phy_io;
   SIGNAL phy_ou               : t_tech_ddr_phy_ou;
   
-  SIGNAL ras_n                : STD_LOGIC_VECTOR(0 DOWNTO 0);
-  SIGNAL cas_n                : STD_LOGIC_VECTOR(0 DOWNTO 0);
-  SIGNAL we_n                 : STD_LOGIC_VECTOR(0 DOWNTO 0);
-  
 BEGIN
  
-  ctlr_ref_clk   <= NOT(ctlr_ref_clk) OR tb_end AFTER c_ctlr_ref_clk_period/2; 
-  ctlr_ref_rst   <= '0' AFTER 100 ns;
+  ctlr_ref_clk <= NOT ctlr_ref_clk OR tb_end AFTER c_ctlr_ref_clk_period/2; 
+  ctlr_ref_rst <= '1', '0' AFTER 100 ns;
+  
+  dp_clk   <= NOT dp_clk OR tb_end AFTER c_dp_clk_period/2; 
+  dp_rst   <= '1', '0' AFTER 100 ns;
 
   dvr_start_addr <= c_tech_ddr_addr_lo;
   dvr_end_addr   <= c_tech_ddr_addr_hi_sim;
@@ -112,7 +112,7 @@ BEGIN
 
     WAIT UNTIL ctlr_init_done = '1';   
     FOR i IN 0 TO 1 LOOP
-      WAIT UNTIL rising_edge(ctlr_gen_clk); -- Give the driver FSM a cycle to go into idle mode
+      WAIT UNTIL rising_edge(dp_clk); -- Give the driver FSM a cycle to go into idle mode
     END LOOP;
     
     -- START WRITE
@@ -120,7 +120,7 @@ BEGIN
     dvr_wr_not_rd <= '1';
     dvr_en        <= '1';
 
-    WAIT UNTIL rising_edge(ctlr_gen_clk);
+    WAIT UNTIL rising_edge(dp_clk);
 
     dvr_en        <= '0'; 
     
@@ -134,7 +134,7 @@ BEGIN
     dvr_wr_not_rd <= '0';
     dvr_en        <= '1';
 
-    WAIT UNTIL rising_edge(ctlr_gen_clk);
+    WAIT UNTIL rising_edge(dp_clk);
 
     dvr_en        <= '0'; 
 
@@ -157,8 +157,8 @@ BEGIN
     g_nof_streams       => 1
      ) 
   PORT MAP (
-    rst                 => ctlr_gen_rst,
-    clk                 => ctlr_gen_clk,
+    rst                 => dp_rst,
+    clk                 => dp_clk,
 
     snk_out_arr(0)      => rd_siso,
     snk_in_arr(0)       => rd_sosi,
@@ -175,62 +175,10 @@ BEGIN
     src_val_cnt(0)      => src_val_cnt
   );
 
-  gen_ddr_4g_memory_model : IF func_tech_ddr_module_size(c_tech_ddr) = 4 GENERATE
-    u_4gb_ddr3_memory_model : COMPONENT alt_mem_if_ddr3_mem_model_top_ddr3_mem_if_dm_pins_en_mem_if_dqsn_en
-	  GENERIC MAP (
-	  	MEM_IF_ADDR_WIDTH            => 15,
-	  	MEM_IF_ROW_ADDR_WIDTH        => 15,
-	  	MEM_IF_COL_ADDR_WIDTH        => 10,
-	  	MEM_IF_CS_PER_RANK           => 1,
-	  	MEM_IF_CONTROL_WIDTH         => 1,
-	  	MEM_IF_DQS_WIDTH             => 8,
-	  	MEM_IF_CS_WIDTH              => 2,
-	  	MEM_IF_BANKADDR_WIDTH        => 3,
-	  	MEM_IF_DQ_WIDTH              => 64,
-	  	MEM_IF_CK_WIDTH              => 2,
-	  	MEM_IF_CLK_EN_WIDTH          => 2,
-	  	DEVICE_WIDTH                 => 1,
-	  	MEM_TRCD                     => 6,
-	  	MEM_TRTP                     => 3,
-	  	MEM_DQS_TO_CLK_CAPTURE_DELAY => 100,
-	  	MEM_CLK_TO_DQS_CAPTURE_DELAY => 100000,
-	  	MEM_IF_ODT_WIDTH             => 2,
-	  	MEM_MIRROR_ADDRESSING_DEC    => 0,
-	  	MEM_REGDIMM_ENABLED          => false,
-	  	DEVICE_DEPTH                 => 1,
-	  	MEM_GUARANTEED_WRITE_INIT    => false,
-	  	MEM_VERBOSE                  => true,
-	  	MEM_INIT_EN                  => false,
-	  	MEM_INIT_FILE                => "",
-	  	DAT_DATA_WIDTH               => 32
-	  )
-	  PORT MAP (
-	  	mem_a       => phy_ou.a(c_tech_ddr.a_w-1 DOWNTO 0),        -- memory.mem_a
-	  	mem_ba      => phy_ou.ba,      --       .mem_ba
-	  	mem_ck      => phy_io.clk,     --       .mem_ck
-	  	mem_ck_n    => phy_io.clk_n,   --       .mem_ck_n
-	  	mem_cke     => phy_ou.cke(c_tech_ddr.cs_w-1 DOWNTO 0),     --       .mem_cke
-	  	mem_cs_n    => phy_ou.cs_n(c_tech_ddr.cs_w-1 DOWNTO 0),    --       .mem_cs_n
-	  	mem_dm      => phy_ou.dm,      --       .mem_dm
-	  	mem_ras_n   => ras_n,          --       .mem_ras_n
-	  	mem_cas_n   => cas_n,          --       .mem_cas_n
-	  	mem_we_n    => we_n,           --       .mem_we_n
-	  	mem_reset_n => phy_ou.reset_n, --       .mem_reset_n
-	  	mem_dq      => phy_io.dq,      --       .mem_dq
-	  	mem_dqs     => phy_io.dqs,     --       .mem_dqs
-	  	mem_dqs_n   => phy_io.dqs_n,   --       .mem_dqs_n
-	  	mem_odt     => phy_ou.odt      --       .mem_odt
-	  );               
-	  
-	  ras_n(0) <= phy_ou.ras_n;
-	  cas_n(0) <= phy_ou.cas_n;
-	  we_n(0)  <= phy_ou.we_n; 
-	END GENERATE;
-  
   u_io_ddr: ENTITY work.io_ddr
   GENERIC MAP(
     g_technology       => c_tech_select_default,
-    g_ddr              => c_tech_ddr,
+    g_tech_ddr         => c_tech_ddr,
     g_wr_data_w        => c_data_w,
     g_rd_data_w        => c_data_w
   )                      
@@ -238,9 +186,6 @@ BEGIN
     ctlr_ref_clk       => ctlr_ref_clk,
     ctlr_ref_rst       => ctlr_ref_rst,
                                      
-    ctlr_gen_clk       => ctlr_gen_clk,
-    ctlr_gen_rst       => ctlr_gen_rst,      
-
     ctlr_init_done     => ctlr_init_done,
     ctlr_rdy           => ctlr_rdy,
 
@@ -250,8 +195,8 @@ BEGIN
     dvr_wr_not_rd      => dvr_wr_not_rd,
     dvr_done           => dvr_done,
  
-    wr_clk             => ctlr_gen_clk,
-    wr_rst             => ctlr_gen_rst,
+    wr_clk             => dp_clk,
+    wr_rst             => dp_rst,
 
     wr_sosi            => wr_sosi, 
     wr_siso            => wr_siso,
@@ -259,14 +204,23 @@ BEGIN
     rd_sosi            => rd_sosi,
     rd_siso            => rd_siso,
 
-    rd_clk             => ctlr_gen_clk,
-    rd_rst             => ctlr_gen_rst,
+    rd_clk             => dp_clk,
+    rd_rst             => dp_rst,
 
     phy_ou             => phy_ou,
     phy_io             => phy_io,
     phy_in             => phy_in
   );
  
+  u_tech_ddr_memory_model : ENTITY tech_ddr_lib.tech_ddr_memory_model
+  GENERIC MAP (
+    g_tech_ddr => c_tech_ddr
+  )
+  PORT MAP (
+    mem_in => phy_ou,
+    mem_io => phy_io
+  );
+    
 END ARCHITECTURE str;