From eb9138d82a1e06fc70a5dc37257d8cbb0349d805 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Tue, 15 Feb 2022 16:09:47 +0100 Subject: [PATCH] Made antenne_band_index RW in sdp_info. Removed O_si, N_si from sdp_info because not used. Moved O_rn, N_rn to ring_info. --- .../libraries/sdp/tb/vhdl/tb_sdp_info.vhd | 127 +++++++----------- 1 file changed, 52 insertions(+), 75 deletions(-) diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd index c5af514ec6..552b5ee8f2 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd @@ -49,21 +49,15 @@ ARCHITECTURE tb OF tb_sdp_info IS CONSTANT c_dp_clk_period : TIME := 5 ns; -- 200 MHz CONSTANT c_mm_clk_period : TIME := 20 ns; -- 50 MHz - CONSTANT c_cross_clock_domain_latency : NATURAL := 20; - -- used mm_adresses on mm bus - CONSTANT c_mm_addr_block_period : NATURAL := 0; - CONSTANT c_mm_addr_N_rn : NATURAL := 1; - CONSTANT c_mm_addr_O_rn : NATURAL := 2; - CONSTANT c_mm_addr_N_si : NATURAL := 3; - CONSTANT c_mm_addr_O_si : NATURAL := 4; - CONSTANT c_mm_addr_beam_repositioning_flag : NATURAL := 5; - CONSTANT c_mm_addr_fsub_type : NATURAL := 6; - CONSTANT c_mm_addr_f_adc : NATURAL := 7; - CONSTANT c_mm_addr_nyquist_zone_index : NATURAL := 8; - CONSTANT c_mm_addr_observation_id : NATURAL := 9; - CONSTANT c_mm_addr_antenna_band_index : NATURAL := 10; - CONSTANT c_mm_addr_station_id : NATURAL := 11; + CONSTANT c_mm_addr_block_period : NATURAL := 0; + CONSTANT c_mm_addr_beam_repositioning_flag : NATURAL := 1; + CONSTANT c_mm_addr_fsub_type : NATURAL := 2; + CONSTANT c_mm_addr_f_adc : NATURAL := 3; + CONSTANT c_mm_addr_nyquist_zone_index : NATURAL := 4; + CONSTANT c_mm_addr_observation_id : NATURAL := 5; + CONSTANT c_mm_addr_antenna_band_index : NATURAL := 6; + CONSTANT c_mm_addr_station_id : NATURAL := 7; SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL tb_mm_reg_end : STD_LOGIC := '0'; @@ -103,74 +97,61 @@ BEGIN -- default all register hold value 0, try to write 1 in all registers proc_mem_mm_bus_wr(c_mm_addr_block_period ,11 ,mm_clk, reg_miso, reg_mosi); -- RO - proc_mem_mm_bus_wr(c_mm_addr_N_rn ,12 ,mm_clk, reg_miso, reg_mosi); - proc_mem_mm_bus_wr(c_mm_addr_O_rn ,13 ,mm_clk, reg_miso, reg_mosi); - proc_mem_mm_bus_wr(c_mm_addr_N_si ,14 ,mm_clk, reg_miso, reg_mosi); - proc_mem_mm_bus_wr(c_mm_addr_O_si ,15 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_beam_repositioning_flag,1 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_fsub_type ,1 ,mm_clk, reg_miso, reg_mosi); -- RO proc_mem_mm_bus_wr(c_mm_addr_f_adc ,1 ,mm_clk, reg_miso, reg_mosi); -- RO proc_mem_mm_bus_wr(c_mm_addr_nyquist_zone_index ,3 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_observation_id ,16 ,mm_clk, reg_miso, reg_mosi); - proc_mem_mm_bus_wr(c_mm_addr_antenna_band_index ,1 ,mm_clk, reg_miso, reg_mosi); -- RO + proc_mem_mm_bus_wr(c_mm_addr_antenna_band_index ,1 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_station_id ,17 ,mm_clk, reg_miso, reg_mosi); - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); - - proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response /= 11 REPORT "wrong block_period (not read only)" SEVERITY ERROR; - - proc_mem_mm_bus_rd(c_mm_addr_N_rn, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 12 REPORT "wrong N_rn" SEVERITY ERROR; - - proc_mem_mm_bus_rd(c_mm_addr_O_rn, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 13 REPORT "wrong O_rn" SEVERITY ERROR; - - proc_mem_mm_bus_rd(c_mm_addr_N_si, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 14 REPORT "wrong N_si" SEVERITY ERROR; + proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); - proc_mem_mm_bus_rd(c_mm_addr_O_si, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 15 REPORT "wrong O_si" SEVERITY ERROR; - - proc_mem_mm_bus_rd(c_mm_addr_beam_repositioning_flag, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 1 REPORT "wrong beam_repositioning_flag" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response /= 11 REPORT "Wrong block_period (not read only)" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_fsub_type, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response /= 1 REPORT "wrong fsub_type (not read only)" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_beam_repositioning_flag, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 1 REPORT "Wrong beam_repositioning_flag" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_f_adc, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + proc_mem_mm_bus_rd(c_mm_addr_fsub_type, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response /= 1 REPORT "wrong f_adc (not read only)" SEVERITY ERROR; + ASSERT mm_natural_response /= 1 REPORT "Wrong fsub_type (not read only)" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_nyquist_zone_index, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 3 REPORT "wrong nyquist_zone_index" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_f_adc, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response /= 1 REPORT "Wrong f_adc (not read only)" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_observation_id, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 16 REPORT "wrong observation_id" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_nyquist_zone_index, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 3 REPORT "Wrong nyquist_zone_index" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_antenna_band_index, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response /= 1 REPORT "wrong antenna_band_index (not read only)" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_observation_id, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 16 REPORT "Wrong observation_id" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_station_id, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 17 REPORT "wrong station_id" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_antenna_band_index, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 1 REPORT "Wrong antenna_band_index" SEVERITY ERROR; - -- check if antenna_band_index is changed on change of gn_index - -- '0' <= 16, '1' > 16 - gn_index <= 32; - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); - proc_mem_mm_bus_rd(c_mm_addr_antenna_band_index, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 1 REPORT "wrong antenna_band_index" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_station_id, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 17 REPORT "Wrong station_id" SEVERITY ERROR; -- check block_period if f_adc and fsub_type are changed -- f_adc = '0' and fsub_type = '0' => block_period = 6400 @@ -178,28 +159,28 @@ BEGIN -- f_adc = '0' and fsub_type = '1' => block_period = 5400 -- f_adc = '1' and fsub_type = '1' => block_period = 4320 f_adc <= '0'; fsub_type <= '0'; - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); + proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata(15 DOWNTO 0)); proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 6400 REPORT "wrong block_period, expected 6400" SEVERITY ERROR; f_adc <= '1'; fsub_type <= '0'; - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); + proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata(15 DOWNTO 0)); proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 5120 REPORT "wrong block_period, expected 5120" SEVERITY ERROR; f_adc <= '0'; fsub_type <= '1'; - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); + proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata(15 DOWNTO 0)); proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 5400 REPORT "wrong block_period, expected 5400" SEVERITY ERROR; f_adc <= '1'; fsub_type <= '1'; - proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); + proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata(15 DOWNTO 0)); @@ -218,10 +199,6 @@ BEGIN proc_common_wait_until_high(mm_clk, tb_mm_reg_end); -- wait for p_mm_reg_stimuli done ASSERT TO_UINT(sdp_info.block_period) = 4320 REPORT "wrong sdp_info.block_period value" SEVERITY ERROR; - ASSERT TO_UINT(sdp_info.N_rn) = 12 REPORT "wrong sdp_info.N_rn value" SEVERITY ERROR; - ASSERT TO_UINT(sdp_info.O_rn) = 13 REPORT "wrong sdp_info.O_rn value" SEVERITY ERROR; - ASSERT TO_UINT(sdp_info.N_si) = 14 REPORT "wrong sdp_info.N_si value" SEVERITY ERROR; - ASSERT TO_UINT(sdp_info.O_si) = 15 REPORT "wrong sdp_info.O_si value" SEVERITY ERROR; ASSERT sdp_info.beam_repositioning_flag = '1' REPORT "wrong sdp_info.beam_repositioning_flag value" SEVERITY ERROR; ASSERT sdp_info.fsub_type = '1' REPORT "wrong sdp_info.fsub_type value" SEVERITY ERROR; ASSERT sdp_info.f_adc = '1' REPORT "wrong sdp_info.f_adc value" SEVERITY ERROR; -- GitLab