diff --git a/libraries/base/reorder/tb/python/tc_reorder_transpose.py b/libraries/base/reorder/tb/python/tc_reorder_transpose.py
index d5ebd7e144b399a4cc16a41fa7054020c6569cc1..e6ebdfe64bd987a0c2e7c3b782b624d8c95910ad 100644
--- a/libraries/base/reorder/tb/python/tc_reorder_transpose.py
+++ b/libraries/base/reorder/tb/python/tc_reorder_transpose.py
@@ -60,29 +60,31 @@ tc = test_case.Testcase('TB - ', '')
 # Constants/Generics that are shared between VHDL and Python
 # Name                   Value   Default   Description
 # START_VHDL_GENERICS
-g_wr_chunksize     = 64 
+g_wr_chunksize     = 16 
 g_wr_nof_chunks    = 1   
-g_rd_chunksize     = 16  
-g_rd_nof_chunks    = 4   
+g_rd_chunksize     = 4  
+g_rd_nof_chunks    = 4  
+g_rd_interval      = 4 
 g_gapsize          = 0   
-g_nof_blocks       = 4
-g_nof_blk_per_sync = 64
+g_nof_blocks       = 32
+g_nof_blk_per_sync = 32
 # END_VHDL_GENERICS
 
 # Overwrite generics with argumented generics from autoscript or command line. 
 if tc.generics != None:  
     g_wr_chunksize     = tc.generics['g_wr_chunksize']
-    g_wr_nof_chunks    = tc.generics['g_wr_nof_chunks']
     g_rd_chunksize     = tc.generics['g_rd_chunksize']      
     g_rd_nof_chunks    = tc.generics['g_rd_nof_chunks']    
+    g_rd_interval      = tc.generics['g_rd_interval']    
     g_gapsize          = tc.generics['g_gapsize']      
     g_nof_blocks       = tc.generics['g_nof_blocks']      
     g_nof_blk_per_sync = tc.generics['g_nof_blk_per_sync']      
 
-c_blocksize         = (g_wr_chunksize + g_gapsize) * g_wr_nof_chunks
+c_blocksize         = (g_wr_chunksize + g_gapsize)
 c_pagesize          = c_blocksize * g_nof_blocks
+c_rd_increment      = g_rd_interval * c_blocksize
 c_bg_nof_streams    = 4 
-c_bg_ram_size       = g_wr_chunksize * g_wr_nof_chunks * g_rd_chunksize
+c_bg_ram_size       = g_wr_chunksize * g_nof_blocks
 c_in_dat_w          = 8
 c_db_nof_streams    = c_bg_nof_streams
 c_db_ram_size       = c_bg_ram_size #g_rd_chunksize * g_rd_nof_chunks * g_nof_blocks
@@ -117,20 +119,36 @@ ss = pi_ss_ss_wide.PiSsSsWide (tc, io, c_frame_size*g_rd_chunksize, c_nof_int_st
 dsp_test_bg = dsp_test.DspTest(inDatW=c_in_dat_w)
 
 # Function for generating stimuli and generating hex files. 
-def gen_bg_hex_files(c_nof_values = 1024, c_nof_streams = 4):
+#def gen_bg_hex_files(c_nof_values = 1024, c_nof_streams = 4):
+#    data = [] 
+#    for i in range(c_nof_streams): 
+#        stream_re = []
+#        stream_im = []
+#        for j in range(c_nof_values): 
+#            stream_re.append(j)
+#            stream_im.append(i)  
+#        data_concat = dsp_test_bg.concatenate_two_lists(stream_re, stream_im, c_in_dat_w)
+#        data.append(data_concat)
+#        filename = "../../src/hex/tb_bg_dat_" + str(i) + ".hex"
+#        mem_init_file.list_to_hex(list_in=data_concat, filename=filename, mem_width=c_nof_complex*c_in_dat_w, mem_depth=2**(ceil_log2(c_bg_ram_size)))
+#    return data
+
+def gen_bg_hex_files(c_framesize = 64, c_nof_frames = 32, c_nof_streams = 4):
     data = [] 
     for i in range(c_nof_streams): 
         stream_re = []
         stream_im = []
-        for j in range(c_nof_values): 
-            stream_re.append(j)
-            stream_im.append(i)  
+        for j in range(c_nof_frames): 
+            for k in range(c_framesize): 
+                stream_re.append(k)
+                stream_im.append(j)  
         data_concat = dsp_test_bg.concatenate_two_lists(stream_re, stream_im, c_in_dat_w)
         data.append(data_concat)
         filename = "../../src/hex/tb_bg_dat_" + str(i) + ".hex"
         mem_init_file.list_to_hex(list_in=data_concat, filename=filename, mem_width=c_nof_complex*c_in_dat_w, mem_depth=2**(ceil_log2(c_bg_ram_size)))
     return data
 
+
 if __name__ == "__main__":      
     ###############################################################################
     #
@@ -153,7 +171,7 @@ if __name__ == "__main__":
     #
     ###############################################################################
     # Prepare x stimuli for block generator
-    bg_data = gen_bg_hex_files(c_bg_ram_size, c_bg_nof_streams)
+    bg_data = gen_bg_hex_files(c_frame_size, g_nof_blocks, c_bg_nof_streams)
  
     ################################################################################
     ##
@@ -191,14 +209,6 @@ if __name__ == "__main__":
         do_until_gt(io.simIO.getSimTime, ms_retry=1000, val=180000, s_timeout=13600)  # 110000 
         bg.write_block_gen_settings(samplesPerPacket=c_frame_size, blocksPerSync=g_nof_blk_per_sync-1, gapSize=c_gap_size, memLowAddr=0, memHighAddr=c_bg_ram_size-1, BSNInit=10)
     
-    #do_until_gt(io.simIO.getSimTime, ms_retry=1000, val=182000, s_timeout=13600)  # 110000 
-    #bg.write_enable()
-    #
-    #do_until_gt(io.simIO.getSimTime, ms_retry=1000, val=120000, s_timeout=13600)  # 110000 
-    #bg.write_disable()
-    #do_until_gt(io.simIO.getSimTime, ms_retry=1000, val=140000, s_timeout=13600)  # 110000 
-    #bg.write_enable()
-    
     ###############################################################################
     #
     # Calculate reference data
@@ -206,34 +216,35 @@ if __name__ == "__main__":
     ###############################################################################
     # Subband Select pre-transpose 
     if c_ena_pre_transpose:
-        bg_data = ss.subband_select(bg_data, ss_list)    
+        bg_data_ss =[]
+        for i in range(len(bg_data)/len(ss_list)):                           
+            bg_data_ss.append(ss.subband_select(bg_data[i*len(ss_list):(i+1)*len(ss_list)], ss_list))
+        bg_data = bg_data_ss
+    bg_data = flatten(bg_data)
     
     ref_data_total = []                                                
-    # Check how many data there is and how many pages will be used:    
+    # Check how many data there is and how many pages will be used:  
     for t in range(len(bg_data)/c_pagesize):                           
         bg_data_single_page = bg_data[t*c_pagesize:(t+1)*c_pagesize]
         # Write to memory
         mem_page = [0] * c_pagesize   
         for i in range(g_nof_blocks):
-            for j in range(g_wr_nof_chunks):
-                for k in range(g_wr_chunksize):
-                    mem_page[i*c_blocksize*g_wr_nof_chunks + j*c_blocksize + k] = bg_data_single_page[i*g_wr_chunksize*g_wr_nof_chunks + j*g_wr_chunksize + k]
+            for j in range(g_wr_chunksize):
+                mem_page[i*c_blocksize + j] = bg_data_single_page[i*g_wr_chunksize + j]
         
         # Read from memory
         ref_data = [0] * g_nof_blocks * g_rd_nof_chunks * g_rd_chunksize
-        chunk_cnt = 0
-        chunk_offset = 0
-        for i in range(g_nof_blocks):
-            for j in range(g_rd_nof_chunks):
-                if chunk_cnt == g_nof_blocks:
-                    chunk_cnt = 0
-                    chunk_offset = chunk_offset + 1
-                for k in range(g_rd_chunksize):
-                    #ref_data[chunk_cnt*(g_rd_chunksize*g_rd_nof_chunks)+ chunk_offset*g_rd_chunksize + k] = mem_page[chunk_cnt*(g_rd_chunksize*g_rd_nof_chunks+g_gapsize)+ chunk_offset*g_rd_chunksize + k]
-                    ref_data[i*(g_rd_chunksize*g_rd_nof_chunks)+j*g_rd_chunksize + k] = mem_page[chunk_cnt*(g_rd_chunksize*g_rd_nof_chunks+g_gapsize)+ chunk_offset*g_rd_chunksize + k]
-                chunk_cnt = chunk_cnt + 1    
+        rd_block_offset = 0
+        rd_chunk_offset = 0
+        for i in range(g_nof_blocks*g_rd_nof_chunks):
+            rd_offset = rd_block_offset + rd_chunk_offset 
+            for k in range(g_rd_chunksize):
+                ref_data[i*g_rd_chunksize + k] = mem_page[rd_offset + k]
+            rd_block_offset = rd_block_offset + c_rd_increment
+            if(rd_block_offset >= c_pagesize):
+                rd_chunk_offset = rd_chunk_offset + g_rd_chunksize
+                rd_block_offset = rd_block_offset - c_pagesize
         ref_data_total.append(ref_data)
-        
     ref_data_total=flatten(ref_data_total)    
 
     # Split the data again in individual channels 
@@ -303,3 +314,5 @@ if __name__ == "__main__":
     
     sys.exit(tc.get_result())
 
+
+