diff --git a/libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd b/libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
index 206a08c9206af270a24d1145da84b8e851ae862c..708a8e5412b4b2f9c4eec7402ad1c55598af36e1 100644
--- a/libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
+++ b/libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
@@ -20,7 +20,7 @@
 --
 -------------------------------------------------------------------------------
 --
--- Purpose:  Testbench for the ddr3_transpose unit 
+-- Purpose:  Testbench for the reorder_transpose unit 
 --           To be used in conjunction with python testscript: ../python/tc_transpose_ddr3.py
 --
 --
@@ -31,7 +31,7 @@
 --   > Stop the simulation manually in Modelsim by pressing the stop-button.
 --   > Evalute the WAVE window. 
 
-LIBRARY IEEE, common_lib, mm_lib, diag_lib, dp_lib;
+LIBRARY IEEE, common_lib, mm_lib, diag_lib, dp_lib, io_ddr_lib, technology_lib, tech_ddr_lib;
 USE IEEE.std_logic_1164.ALL;
 USE IEEE.numeric_std.ALL;
 USE common_lib.common_pkg.ALL;
@@ -42,10 +42,13 @@ USE common_lib.tb_common_mem_pkg.ALL;
 USE mm_lib.mm_file_unb_pkg.ALL;
 USE mm_lib.mm_file_pkg.ALL;
 USE dp_lib.dp_stream_pkg.ALL; 
-USE diag_lib.diag_pkg.ALL;  
-USE work.ddr3_pkg.ALL;
+USE diag_lib.diag_pkg.ALL;
+USE technology_lib.technology_select_pkg.ALL;
+USE tech_ddr_lib.tech_ddr_pkg.ALL;
+USE work.reorder_pkg.ALL;
 
-ENTITY tb_ddr3_transpose IS 
+
+ENTITY tb_reorder_transpose IS 
   GENERIC (
     g_wr_chunksize     : POSITIVE := 64;
     g_wr_nof_chunks    : POSITIVE := 1;
@@ -55,9 +58,9 @@ ENTITY tb_ddr3_transpose IS
     g_nof_blocks       : POSITIVE := 4;
     g_nof_blk_per_sync : POSITIVE := 64  
  );
-END tb_ddr3_transpose;
+END tb_reorder_transpose;
 
-ARCHITECTURE tb OF tb_ddr3_transpose IS
+ARCHITECTURE tb OF tb_reorder_transpose IS
   
   CONSTANT c_sim                : BOOLEAN := TRUE;
 
@@ -119,19 +122,18 @@ ARCHITECTURE tb OF tb_ddr3_transpose IS
   END COMPONENT;   
   
   -- Compose the Constants for the DUT   
-  CONSTANT c_ddr3_seq_conf           : t_ddr3_seq := (g_wr_chunksize, 
-                                                      g_wr_nof_chunks,
-                                                      g_rd_chunksize, 
-                                                      g_rd_nof_chunks,
-                                                      g_gapsize,      
-                                                      g_nof_blocks);   
+  CONSTANT c_reorder_seq_conf        : t_reorder_seq := (g_wr_chunksize, 
+                                                         g_wr_nof_chunks,
+                                                         g_rd_chunksize, 
+                                                         g_rd_nof_chunks,
+                                                         g_gapsize,      
+                                                         g_nof_blocks);   
   
   CONSTANT c_blocksize               : POSITIVE := g_wr_nof_chunks * g_wr_chunksize;  
   CONSTANT c_page_size               : POSITIVE := c_blocksize * g_nof_blocks;
+  
+  CONSTANT c_tech_ddr                : t_c_tech_ddr := c_tech_ddr3_4g_800m_master;
 
-  CONSTANT c_ddr                     : t_c_ddr3_phy := c_ddr3_phy_4g;
-  CONSTANT c_mts                     : NATURAL := 800;--1066; --800
-  CONSTANT c_phy                     : NATURAL := 1;
   CONSTANT c_data_w                  : NATURAL := 64; 
 
   CONSTANT c_ctrl_ref_clk_period     : TIME  := 5000 ps; 
@@ -161,32 +163,10 @@ ARCHITECTURE tb OF tb_ddr3_transpose IS
   SIGNAL out_sosi_arr               : t_dp_sosi_arr(c_bg_nof_output_streams-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
   SIGNAL out_siso_arr               : t_dp_siso_arr(c_bg_nof_output_streams-1 DOWNTO 0) := (OTHERS => c_dp_siso_rdy);
   
-  -- Siganls to connect the memory driver with the mm register interface
-  SIGNAL ctlr_ref_clk         : STD_LOGIC    := '0';
-  SIGNAL ctlr_rst             : STD_LOGIC    := '1';
-  SIGNAL ctlr_gen_clk         : STD_LOGIC;
-  SIGNAL ctlr_gen_rst         : STD_LOGIC;
-
-  SIGNAL ctlr_rdy             : STD_LOGIC;
-  SIGNAL ctlr_init_done       : STD_LOGIC;
-
-  SIGNAL dvr_start_addr       : t_ddr3_addr; 
-  SIGNAL dvr_end_addr         : t_ddr3_addr;
-
-  SIGNAL dvr_en               : STD_LOGIC;
-  SIGNAL dvr_wr_not_rd        : STD_LOGIC;
-  SIGNAL dvr_done             : STD_LOGIC;
-  
-  
   -- Signals to interface with the DDR3 memory model.
-  SIGNAL phy_in               : t_ddr3_phy_in;
-  SIGNAL phy_io               : t_ddr3_phy_io;
-  SIGNAL phy_ou               : t_ddr3_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);
-
+  SIGNAL phy_in               : t_tech_ddr_phy_in;
+  SIGNAL phy_io               : t_tech_ddr_phy_io;
+  SIGNAL phy_ou               : t_tech_ddr_phy_ou;   
 
 BEGIN
 
@@ -199,9 +179,6 @@ BEGIN
   dp_clk <= NOT dp_clk AFTER c_dp_clk_period/2;
   dp_rst <= '1', '0' AFTER c_dp_clk_period*5;  
   
-  ctlr_ref_clk <= NOT ctlr_ref_clk AFTER c_ctrl_ref_clk_period/2;
-  ctlr_rst     <= '1', '0' AFTER c_ctrl_ref_clk_period*5;  
-
   ------------------------------------------------------------------------------
   -- External PPS
   ------------------------------------------------------------------------------  
@@ -269,9 +246,11 @@ BEGIN
   ----------------------------------------------------------------------------
   -- DUT: Device Under Test
   ---------------------------------------------------------------------------- 
-  u_dut: ENTITY work.ddr3_transpose
+  u_dut: ENTITY work.reorder_transpose
   GENERIC MAP(
-    g_sim              => TRUE,                         
+    g_sim              => c_sim,   
+    g_technology       => c_tech_select_default,
+    g_tech_ddr         => c_tech_ddr,
     g_nof_streams      => c_bg_nof_output_streams,      
     g_in_dat_w         => c_bg_buf_dat_w/c_nof_complex, 
     g_frame_size_in    => g_wr_chunksize,               
@@ -279,9 +258,7 @@ BEGIN
     g_nof_blk_per_sync => g_nof_blk_per_sync,
     g_use_complex      => TRUE,  
     g_ena_pre_transp   => FALSE,                    
-    g_phy              => c_phy,                     
-    g_mts              => c_mts,                     
-    g_ddr3_seq         => c_ddr3_seq_conf
+    g_reorder_seq      => c_reorder_seq_conf
   )                          
   PORT MAP (        
     mm_rst                => mm_rst, 
@@ -309,57 +286,18 @@ BEGIN
     phy_io                => phy_io,     
     phy_ou                => phy_ou
   );
-
-  u_4gb_800_ddr3_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_ddr.a_w-1 DOWNTO 0),      
-			mem_ba      => phy_ou.ba,       
-			mem_ck      => phy_io.clk,      
-			mem_ck_n    => phy_io.clk_n,    
-			mem_cke     => phy_ou.cke(c_ddr.cs_w-1 DOWNTO 0),   
-			mem_cs_n    => phy_ou.cs_n(c_ddr.cs_w-1 DOWNTO 0),  
-			mem_dm      => phy_ou.dm,       
-			mem_ras_n   => ras_n,           
-			mem_cas_n   => cas_n,           
-			mem_we_n    => we_n,            
-			mem_reset_n => phy_ou.reset_n, 
-			mem_dq      => phy_io.dq,       
-			mem_dqs     => phy_io.dqs,      
-			mem_dqs_n   => phy_io.dqs_n,    
-			mem_odt     => phy_ou.odt       
-		);               
-		
-		ras_n(0) <= phy_ou.ras_n;
-		cas_n(0) <= phy_ou.cas_n;
-		we_n(0)  <= phy_ou.we_n;
   
+  external_ddr_memory_model : IF c_sim=FALSE GENERATE
+    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 GENERATE;
+
   ----------------------------------------------------------------------------
   -- Sink: data buffer real 
   ----------------------------------------------------------------------------