diff --git a/applications/unb1_reorder/tb/python/tc_unb1_reorder_seq.py b/applications/unb1_reorder/tb/python/tc_unb1_reorder_seq.py index b9cb30a674d9927a88dbc4ad630ec6d8767339a9..fd08b46ff61861f801576613ec62cd3fc1d30d5a 100644 --- a/applications/unb1_reorder/tb/python/tc_unb1_reorder_seq.py +++ b/applications/unb1_reorder/tb/python/tc_unb1_reorder_seq.py @@ -40,7 +40,6 @@ import pi_diag_data_buffer import pi_diag_rx_seq import pi_io_ddr import pi_ss_ss_wide -import dsp_test import mem_init_file from tools import * @@ -65,15 +64,14 @@ if __name__ == "__main__": io = node_io.NodeIO(tc.nodeImages, tc.base_ip) # Create instances for the periperals + c_ena_pre_transpose = True + c_nof_streams = 1 - c_wr_chunksize = 256 - c_rd_chunksize = 32 - c_rd_nof_chunks = 8 - c_rd_interval = 32 + c_wr_chunksize = 176 + c_rd_chunksize = 16 + c_rd_nof_chunks = 11 + c_rd_interval = c_rd_chunksize c_gapsize = 0 - c_nof_blocks = 32 - c_in_dat_w = 64 - c_bg_ram_size = c_wr_chunksize * c_nof_blocks bg = pi_diag_block_gen.PiDiagBlockGen(tc, io, nofChannels=c_nof_streams, ramSizePerChannel=2**14) db = pi_diag_data_buffer.PiDiagDataBuffer(tc, io, nofStreams=c_nof_streams) @@ -81,25 +79,23 @@ if __name__ == "__main__": rx_seq = pi_diag_rx_seq.PiDiagRxSeq(tc, io, nof_inst=c_nof_streams) # Create object for DDR register map - ddr = pi_io_ddr.PiIoDdr(tc, io, nof_inst = 1) + ddr_status = pi_io_ddr.PiIoDdr(tc, io, nof_inst = 1) # Create subandselect instance for pre-transpose. ss = pi_ss_ss_wide.PiSsSsWide (tc, io, c_wr_chunksize*c_rd_chunksize, c_nof_streams) - # Create dsp_test instance for helpful methods - dsp_test_bg = dsp_test.DspTest(inDatW=c_in_dat_w) ############################################################################### # # Create setting for the pre-transpose (subbandselect) # ############################################################################### -# ss_list = [] -# for i in range(c_wr_chunksize): -# for j in range(c_rd_chunksize): -# ss_list.append(i + j*c_wr_chunksize) -# -# ss.write_selects(ss_list) + if c_ena_pre_transpose: + ss_list = [] + for i in range(c_wr_chunksize): + for j in range(c_rd_chunksize): + ss_list.append(i + j*c_wr_chunksize) + ss.write_selects(ss_list) ################################################################################ @@ -108,71 +104,52 @@ if __name__ == "__main__": # Wait for power up (reset release) io.wait_for_time(hw_time=0.01, sim_time=(1, 'us')) + # Wait for the DDR memory to become available + do_until_eq(ddr_status.read_init_done, ms_retry=3000, val=1, s_timeout=3600) + # Control defaults - nof_mon = 2 - start_address = 0 - #nof_words = 134217720 - nof_words = 100000 + nof_mon = sel_a_b(tc.sim, 1, 2) + + # Initialization + step_0 = 1 + step_1 = c_wr_chunksize # 176 + step_2 = -c_wr_chunksize*(c_rd_interval-1)+1 # -2639 + + rx_seq.write_step_3(StepSize=step_2, vLevel=5) + rx_seq.write_step_2(StepSize=step_2, vLevel=5) + rx_seq.write_step_1(StepSize=step_1, vLevel=5) + rx_seq.write_step_0(StepSize=step_0, vLevel=5) + bg.write_block_gen_settings(samplesPerPacket=c_wr_chunksize, blocksPerSync=16, gapSize=0, BSNInit=0) + + # Block sequence start + rx_seq.write_enable_cntr(vLevel=5) + tx_seq.write_enable_cntr(vLevel=5) + bg.write_enable() + + # Wait for rx data + do_until_gt(rx_seq.read_cnt, ms_retry=3000, val=0, s_timeout=3600) + for rep in range(tc.repeat): tc.append_log(5, '') tc.append_log(3, '>>> Rep-%d' % rep) - - # Initialization - tx_seq.write_disable(vLevel=5) - rx_seq.write_disable(vLevel=5) - - # Wait for the DDR memory to become available - do_until_eq(ddr.read_init_done, ms_retry=3000, val=1, s_timeout=3600) - # # Flush Tx FIFO - # ddr.write_flush_pulse(vLevel=5) - # io.wait_for_time(hw_time=0.01, sim_time=(1, 'us')) - # - # # Set DDR controller in write mode and start writing - # ddr.write_set_address(data=start_address, vLevel=5) - # ddr.write_access_size(data=nof_words, vLevel=5) - # ddr.write_mode_write(vLevel=5) - # ddr.write_begin_access(vLevel=5) - - # Tx sequence start - #tx_seq.write_enable_cntr(vLevel=5) - - # Set and enable Block Generator - bg.write_block_gen_settings(samplesPerPacket=256, blocksPerSync=16, gapSize=0, BSNInit=0) - bg.write_enable() - - # Rx sequence start - rx_seq.write_enable_cntr(vLevel=5) - - - # Set DDR3 controller in write mode - ddr.write_mode_write() - # Tx sequence monitor for mon in range(nof_mon): io.wait_for_time(hw_time=0.01, sim_time=(1, 'us')) tx_seq.read_cnt(vLevel=5) - - # Wait until controller write access is done - #do_until_eq(ddr.read_done, ms_retry=3000, val=1, s_timeout=3600) - - # Rx sequence start - #rx_seq.write_enable_cntr(vLevel=5) - - # # Set DDR3 controller in read mode and start reading - # ddr.write_mode_read(vLevel=5) - # ddr.write_begin_access(vLevel=5) - + # Rx sequence monitor for mon in range(nof_mon): io.wait_for_time(hw_time=0.01, sim_time=(1, 'us')) rx_seq.read_cnt(vLevel=5) - # Wait until controller read access is done - #do_until_eq(ddr.read_done, ms_retry=3000, val=1, s_timeout=3600) - + io.wait_for_time(hw_time=1, sim_time=(10, 'us')) + rx_seq.read_result(vLevel=5) + + if tc.get_result() != "PASSED": + break # End