Skip to content
Snippets Groups Projects
Commit 20a08398 authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

Fixed bugs in sdp_statistics_offload and its tb

parent 69e611f2
Branches
No related tags found
1 merge request!119L2SDP-289
...@@ -78,6 +78,7 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_xsub_one_xst_offload IS ...@@ -78,6 +78,7 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_xsub_one_xst_offload IS
-- MM -- MM
CONSTANT c_mm_file_reg_bsn_source_v2 : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2"; CONSTANT c_mm_file_reg_bsn_source_v2 : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2";
CONSTANT c_mm_file_reg_stat_enable_xst : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_STAT_ENABLE_XST"; CONSTANT c_mm_file_reg_stat_enable_xst : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_STAT_ENABLE_XST";
CONSTANT c_mm_file_reg_bsn_scheduler_xsub : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SCHEDULER_XSUB";
-- Tb -- Tb
SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL tb_end : STD_LOGIC := '0';
...@@ -214,10 +215,16 @@ BEGIN ...@@ -214,10 +215,16 @@ BEGIN
mmf_mm_bus_wr(c_mm_file_reg_bsn_source_v2, 1, c_nof_clk_per_sync, tb_clk); -- nof_block_per_sync mmf_mm_bus_wr(c_mm_file_reg_bsn_source_v2, 1, c_nof_clk_per_sync, tb_clk); -- nof_block_per_sync
mmf_mm_bus_wr(c_mm_file_reg_bsn_source_v2, 0, 16#00000001#, tb_clk); -- Enable BSN immediately mmf_mm_bus_wr(c_mm_file_reg_bsn_source_v2, 0, 16#00000001#, tb_clk); -- Enable BSN immediately
----------------------------------------------------------------------------
-- Enable xsub
----------------------------------------------------------------------------
mmf_mm_bus_wr(c_mm_file_reg_bsn_scheduler_xsub, 0, 1, tb_clk); -- first write low then high part
mmf_mm_bus_wr(c_mm_file_reg_bsn_scheduler_xsub, 1, 0, tb_clk); -- assume v_bsn < 2**31-1
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
-- Offload enable -- Offload enable
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
mmf_mm_bus_wr(c_mm_file_reg_stat_enable_xst_0, 0, 1, tb_clk); mmf_mm_bus_wr(c_mm_file_reg_stat_enable_xst, 0, 1, tb_clk);
-- wait for udp offload is done -- wait for udp offload is done
proc_common_wait_until_high(ext_clk, eth_done); proc_common_wait_until_high(ext_clk, eth_done);
......
...@@ -877,6 +877,9 @@ BEGIN ...@@ -877,6 +877,9 @@ BEGIN
in_sosi_arr => fsub_sosi_arr, in_sosi_arr => fsub_sosi_arr,
xst_udp_sosi => udp_tx_sosi_arr(1),
xst_udp_siso => udp_tx_siso_arr(1),
mm_rst => mm_rst, mm_rst => mm_rst,
mm_clk => mm_clk, mm_clk => mm_clk,
...@@ -892,7 +895,13 @@ BEGIN ...@@ -892,7 +895,13 @@ BEGIN
reg_stat_enable_mosi => reg_stat_enable_xst_mosi, reg_stat_enable_mosi => reg_stat_enable_xst_mosi,
reg_stat_enable_miso => reg_stat_enable_xst_miso, reg_stat_enable_miso => reg_stat_enable_xst_miso,
reg_stat_hdr_dat_mosi => reg_stat_hdr_dat_xst_mosi, reg_stat_hdr_dat_mosi => reg_stat_hdr_dat_xst_mosi,
reg_stat_hdr_dat_miso => reg_stat_hdr_dat_xst_miso reg_stat_hdr_dat_miso => reg_stat_hdr_dat_xst_miso,
sdp_info => sdp_info,
gn_id => gn_id,
stat_eth_src_mac => stat_eth_src_mac,
stat_ip_src_addr => stat_ip_src_addr,
stat_udp_src_port => xst_udp_src_port
); );
END GENERATE; END GENERATE;
...@@ -915,8 +924,8 @@ BEGIN ...@@ -915,8 +924,8 @@ BEGIN
in_sosi_arr => fsub_sosi_arr, in_sosi_arr => fsub_sosi_arr,
bf_udp_sosi => bf_udp_sosi_arr(beamset_id), bf_udp_sosi => bf_udp_sosi_arr(beamset_id),
bf_udp_siso => bf_udp_siso_arr(beamset_id), bf_udp_siso => bf_udp_siso_arr(beamset_id),
bst_udp_sosi => udp_tx_sosi_arr(1+ beamset_id), bst_udp_sosi => udp_tx_sosi_arr(2+ beamset_id),
bst_udp_siso => udp_tx_siso_arr(1+ beamset_id), bst_udp_siso => udp_tx_siso_arr(2+ beamset_id),
mm_rst => mm_rst, mm_rst => mm_rst,
mm_clk => mm_clk, mm_clk => mm_clk,
...@@ -937,13 +946,12 @@ BEGIN ...@@ -937,13 +946,12 @@ BEGIN
reg_stat_enable_miso => reg_stat_enable_bst_miso_arr(beamset_id), reg_stat_enable_miso => reg_stat_enable_bst_miso_arr(beamset_id),
reg_stat_hdr_dat_mosi => reg_stat_hdr_dat_bst_mosi_arr(beamset_id), reg_stat_hdr_dat_mosi => reg_stat_hdr_dat_bst_mosi_arr(beamset_id),
reg_stat_hdr_dat_miso => reg_stat_hdr_dat_bst_miso_arr(beamset_id), reg_stat_hdr_dat_miso => reg_stat_hdr_dat_bst_miso_arr(beamset_id),
sdp_info => sdp_info, sdp_info => sdp_info,
gn_id => gn_id, gn_id => gn_id,
eth_src_mac => cep_eth_src_mac, eth_src_mac => cep_eth_src_mac,
ip_src_addr => cep_ip_src_addr, ip_src_addr => cep_ip_src_addr,
udp_src_port => cep_udp_src_port, udp_src_port => cep_udp_src_port,
stat_eth_src_mac => stat_eth_src_mac, stat_eth_src_mac => stat_eth_src_mac,
stat_ip_src_addr => stat_ip_src_addr, stat_ip_src_addr => stat_ip_src_addr,
stat_udp_src_port => bst_udp_src_port, stat_udp_src_port => bst_udp_src_port,
......
...@@ -71,8 +71,7 @@ ENTITY node_sdp_correlator IS ...@@ -71,8 +71,7 @@ ENTITY node_sdp_correlator IS
gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0); gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
stat_eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); stat_eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
stat_ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0); stat_ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
stat_udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); stat_udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0)
); );
END node_sdp_correlator; END node_sdp_correlator;
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- --
-- Author: P. Donker -- Author: P. Donker, R van der Walle
-- Purpose: -- Purpose:
-- . SDP statistics offload -- . SDP statistics offload
...@@ -91,15 +91,15 @@ ARCHITECTURE str OF sdp_statistics_offload IS ...@@ -91,15 +91,15 @@ ARCHITECTURE str OF sdp_statistics_offload IS
CONSTANT c_nof_streams : NATURAL := 1; CONSTANT c_nof_streams : NATURAL := 1;
CONSTANT c_data_size : NATURAL := sel_a_b(g_statistics_type="XST", 4, 2); -- XST = 4, SST, BST = 2 CONSTANT c_data_size : NATURAL := 2;
CONSTANT c_nof_data_per_step : NATURAL := sel_a_b(g_statistics_type="XST", 4, 2); -- XST = 4, SST, BST = 2; CONSTANT c_nof_data_per_step : NATURAL := 2;
CONSTANT c_step_size : NATURAL := sel_a_b(g_statistics_type="BST", c_data_size, CONSTANT c_step_size : NATURAL := sel_a_b(g_statistics_type="BST", c_data_size,
sel_a_b(g_statistics_type="XST", c_data_size, sel_a_b(g_statistics_type="XST", c_data_size,
c_data_size * c_nof_data_per_step)); -- SST c_data_size * c_nof_data_per_step)); -- SST
CONSTANT c_nof_data : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol * c_sdp_S_sub_bf, CONSTANT c_nof_data : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol * c_sdp_S_sub_bf,
sel_a_b(g_statistics_type="XST", (c_sdp_S_pn * c_sdp_S_pn), sel_a_b(g_statistics_type="XST", c_sdp_S_pn * c_sdp_S_pn * c_nof_complex,
c_sdp_N_sub)); -- SST c_sdp_N_sub)); -- SST
CONSTANT c_block_size : NATURAL := c_nof_data * c_step_size; CONSTANT c_block_size : NATURAL := c_nof_data * c_step_size;
...@@ -155,7 +155,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS ...@@ -155,7 +155,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS
BEGIN BEGIN
bsn_at_sync <= RESIZE_UVEC(in_sosi.bsn, 64) WHEN rising_edge(dp_clk) AND in_sosi.sync = '1'; bsn_at_sync <= RESIZE_UVEC(in_sosi.bsn, 64) WHEN rising_edge(dp_clk) AND in_sosi.sync = '1';
selected_crosslet <= crosslets_info(c_sdp_crosslets_index_w-1 DOWNTO 0) selected_crosslet <= crosslets_info(c_sdp_crosslets_index_w-1 DOWNTO 0);
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Assemble offload header info -- Assemble offload header info
...@@ -220,7 +220,7 @@ BEGIN ...@@ -220,7 +220,7 @@ BEGIN
ELSIF g_statistics_type = "BST" THEN ELSIF g_statistics_type = "BST" THEN
v.data_id := x"0000" & TO_UVEC(c_beamlet_id, 16); v.data_id := x"0000" & TO_UVEC(c_beamlet_id, 16);
ELSIF g_statistics_type = "XST" THEN ELSIF g_statistics_type = "XST" THEN
v.data_id := x"0" & "000" & RESIZE_UVEC(selected_crosslet, 9) & TO_UVEC(r.block_count * c_sdp_P_pn, 8) & TO_UVEC(r.block_count * c_sdp_P_pn, 8); -- RW TODO: define for P_sq > 1 v.data_id := x"0" & "000" & RESIZE_UVEC(selected_crosslet, 9) & TO_UVEC(r.block_count * c_sdp_S_pn, 8) & TO_UVEC(r.block_count * c_sdp_S_pn, 8); -- RW TODO: define for P_sq > 1
ELSE ELSE
v.data_id := x"00000000"; v.data_id := x"00000000";
END IF; END IF;
...@@ -230,10 +230,10 @@ BEGIN ...@@ -230,10 +230,10 @@ BEGIN
-- Use trigger to start first packet -- Use trigger to start first packet
v.start_pulse := '1'; v.start_pulse := '1';
v.start_address := 0; v.start_address := 0;
v.block_count := 1; v.block_count := 0;
ELSIF done = '1' THEN ELSIF done = '1' THEN
-- Use done to start next packets -- Use done to start next packets
IF r.block_count < c_nof_packets THEN IF r.block_count < c_nof_packets-1 THEN
IF r.block_count MOD c_nof_data_per_step = 0 THEN IF r.block_count MOD c_nof_data_per_step = 0 THEN
v.start_address := r.block_count / c_nof_data_per_step * c_block_size; -- jump to first packet in next block v.start_address := r.block_count / c_nof_data_per_step * c_block_size; -- jump to first packet in next block
ELSE ELSE
...@@ -276,7 +276,7 @@ BEGIN ...@@ -276,7 +276,7 @@ BEGIN
g_data_size => c_data_size, g_data_size => c_data_size,
g_step_size => c_step_size, g_step_size => c_step_size,
g_nof_data => c_nof_data, g_nof_data => c_nof_data,
g_reverse_word_order => TRUE -- default word order is MSB after LSB, we need to stream LSB after MSB. g_reverse_word_order => FALSE -- default word order is MSB after LSB, we need to stream LSB after MSB.
) )
PORT MAP( PORT MAP(
dp_rst => dp_rst, dp_rst => dp_rst,
......
...@@ -73,10 +73,15 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS ...@@ -73,10 +73,15 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
CONSTANT c_hdr_dat_mm_addr_udp_src_port : NATURAL := 15; CONSTANT c_hdr_dat_mm_addr_udp_src_port : NATURAL := 15;
-- Define SST RAM structure. -- Define SST RAM structure.
CONSTANT c_nof_data : NATURAL := 512;
CONSTANT c_data_size : NATURAL := 2; CONSTANT c_data_size : NATURAL := 2;
CONSTANT c_step_size : NATURAL := 4; CONSTANT c_nof_data_per_step : NATURAL := 2;
CONSTANT c_step_size : NATURAL := sel_a_b(g_statistics_type="BST", c_data_size,
sel_a_b(g_statistics_type="XST", c_data_size,
c_data_size * c_nof_data_per_step)); -- SST
CONSTANT c_nof_data : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol * c_sdp_S_sub_bf,
sel_a_b(g_statistics_type="XST", c_sdp_S_pn * c_sdp_S_pn * c_nof_complex,
c_sdp_N_sub)); -- SST
-- Define SST RAM size for g_nof_signal_inputs_per_pn. -- Define SST RAM size for g_nof_signal_inputs_per_pn.
CONSTANT c_ram_size : NATURAL := c_nof_data * c_data_size * g_nof_signal_inputs_per_pn; CONSTANT c_ram_size : NATURAL := c_nof_data * c_data_size * g_nof_signal_inputs_per_pn;
CONSTANT c_ram_w : NATURAL := ceil_log2(c_ram_size); CONSTANT c_ram_w : NATURAL := ceil_log2(c_ram_size);
...@@ -84,7 +89,7 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS ...@@ -84,7 +89,7 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
CONSTANT c_ram_buf : t_c_mem := (1, c_ram_w, 32, 2**c_ram_w, 'X'); CONSTANT c_ram_buf : t_c_mem := (1, c_ram_w, 32, 2**c_ram_w, 'X');
-- Define block timing. -- Define block timing.
CONSTANT c_nof_block_per_sync : NATURAL := 20; -- Sufficient to fit more than g_nof_signal_inputs_per_pn offload packets per sync interval. CONSTANT c_nof_block_per_sync : NATURAL := 80; -- Sufficient to fit more than g_nof_signal_inputs_per_pn offload packets per sync interval.
CONSTANT c_nof_clk_per_block : NATURAL := c_nof_data * c_data_size; CONSTANT c_nof_clk_per_block : NATURAL := c_nof_data * c_data_size;
-- Based on g_statistics_type: 'S'=0x53="SST", 'B'=0x42="BST", 'X'=0x58="XST". -- Based on g_statistics_type: 'S'=0x53="SST", 'B'=0x42="BST", 'X'=0x58="XST".
...@@ -241,7 +246,7 @@ BEGIN ...@@ -241,7 +246,7 @@ BEGIN
IF test_offload_sosi.eop = '1' THEN IF test_offload_sosi.eop = '1' THEN
-- bsn is not fully received (bit 0-15 is missing) because 32 bit allignment not working in dp_offload_rx.vhd. -- bsn is not fully received (bit 0-15 is missing) because 32 bit allignment not working in dp_offload_rx.vhd.
-- Check fixed settings. -- Check fixed settings.
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "eth_dst_mac") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_dst_mac")) = x"00074306C700" ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "eth_dst_mac") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_dst_mac")) = x"001B217176B9"
REPORT "wrong eth_dst_mac" SEVERITY ERROR; REPORT "wrong eth_dst_mac" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "eth_type") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_type")) = x"0800" ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "eth_type") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_type")) = x"0800"
REPORT "wrong eth_type" SEVERITY ERROR; REPORT "wrong eth_type" SEVERITY ERROR;
...@@ -251,7 +256,7 @@ BEGIN ...@@ -251,7 +256,7 @@ BEGIN
REPORT "wrong ip_header_length" SEVERITY ERROR; REPORT "wrong ip_header_length" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_services") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_services")) = TO_UVEC(0, 8) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_services") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_services")) = TO_UVEC(0, 8)
REPORT "wrong ip_services" SEVERITY ERROR; REPORT "wrong ip_services" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_total_length") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_total_length")) = TO_UVEC(7868, 16) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_total_length") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_total_length")) = TO_UVEC(4156, 16)
REPORT "wrong ip_total_length" SEVERITY ERROR; REPORT "wrong ip_total_length" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_identification") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_identification")) = TO_UVEC(0, 16) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_identification") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_identification")) = TO_UVEC(0, 16)
REPORT "wrong ip_identification" SEVERITY ERROR; REPORT "wrong ip_identification" SEVERITY ERROR;
...@@ -263,11 +268,11 @@ BEGIN ...@@ -263,11 +268,11 @@ BEGIN
REPORT "wrong ip_time_to_live" SEVERITY ERROR; REPORT "wrong ip_time_to_live" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_protocol") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_protocol")) = TO_UVEC(17, 8) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_protocol") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_protocol")) = TO_UVEC(17, 8)
REPORT "wrong ip_protocol" SEVERITY ERROR; REPORT "wrong ip_protocol" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_dst_addr") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_dst_addr")) = x"C0A80001" ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_dst_addr") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_dst_addr")) = x"0A6300FE"
REPORT "wrong ip_dst_addr" SEVERITY ERROR; REPORT "wrong ip_dst_addr" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "udp_dst_port") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_dst_port")) = TO_UVEC(0, 16) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "udp_dst_port") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_dst_port")) = TO_UVEC(5001, 16)
REPORT "wrong udp_dst_port" SEVERITY ERROR; REPORT "wrong udp_dst_port" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "udp_total_length") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_total_length")) = TO_UVEC(7848, 16) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "udp_total_length") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_total_length")) = TO_UVEC(4136, 16)
REPORT "wrong udp_total_length" SEVERITY ERROR; REPORT "wrong udp_total_length" SEVERITY ERROR;
ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_version_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_version_id")) = TO_UVEC(5, 8) ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_version_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_version_id")) = TO_UVEC(5, 8)
REPORT "wrong sdp_version_id" SEVERITY ERROR; REPORT "wrong sdp_version_id" SEVERITY ERROR;
...@@ -365,7 +370,7 @@ BEGIN ...@@ -365,7 +370,7 @@ BEGIN
IF test_offload_sosi.sop = '1' THEN IF test_offload_sosi.sop = '1' THEN
rx_valid_clk_cnt <= 1; rx_valid_clk_cnt <= 1;
ELSIF test_offload_sosi.eop = '1' THEN ELSIF test_offload_sosi.eop = '1' THEN
ASSERT rx_valid_clk_cnt = c_nof_valid_per_block REPORT "wrong number of clock counts while valid" SEVERITY ERROR; ASSERT rx_valid_clk_cnt+1 = c_nof_valid_per_block REPORT "wrong number of clock counts while valid" SEVERITY ERROR;
ELSE ELSE
rx_valid_clk_cnt <= rx_valid_clk_cnt + 1; rx_valid_clk_cnt <= rx_valid_clk_cnt + 1;
END IF; END IF;
...@@ -409,8 +414,8 @@ BEGIN ...@@ -409,8 +414,8 @@ BEGIN
adr_a => ram_wr_addr, adr_a => ram_wr_addr,
-- DP read only port clock domain. -- DP read only port clock domain.
rst_b => dp_rst, rst_b => mm_rst,
clk_b => dp_clk, clk_b => mm_clk,
adr_b => master_mosi.address(c_ram_buf.adr_w-1 DOWNTO 0), adr_b => master_mosi.address(c_ram_buf.adr_w-1 DOWNTO 0),
rd_en_b => master_mosi.rd, rd_en_b => master_mosi.rd,
rd_dat_b => master_miso.rddata(c_ram_buf.dat_w-1 DOWNTO 0), rd_dat_b => master_miso.rddata(c_ram_buf.dat_w-1 DOWNTO 0),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment