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

processed review comments, also updated TB

parent ce3052dd
Branches
No related tags found
1 merge request!183Resolve L2SDP-557
Pipeline #22638 passed
...@@ -133,7 +133,6 @@ BEGIN ...@@ -133,7 +133,6 @@ BEGIN
); );
-- discarded counter -- discarded counter
cnt_discarded_en <= '1' WHEN in_sosi.sync = '1' AND bsn_ok = '0' ELSE '0';
u_discarded_counter : ENTITY common_lib.common_counter u_discarded_counter : ENTITY common_lib.common_counter
GENERIC MAP ( GENERIC MAP (
g_width => c_word_w, g_width => c_word_w,
...@@ -187,19 +186,48 @@ BEGIN ...@@ -187,19 +186,48 @@ BEGIN
-- MM registers in st_clk domain -- MM registers in st_clk domain
reg_wr_arr => OPEN, reg_wr_arr => OPEN,
reg_rd_arr => OPEN, reg_rd_arr => OPEN,
in_reg => count_reg, -- read only in_reg => count_reg, -- read only
out_reg => OPEN -- no write out_reg => OPEN -- no write
); );
bsn_at_sync <= bs_sosi.bsn WHEN bs_sosi.sync = '1' ELSE bsn_at_sync_reg; p_bsn_check : PROCESS(bs_sosi, in_sosi, bsn_at_sync_reg, bsn_ok_reg)
VARIABLE v_bsn_ok : STD_LOGIC;
VARIABLE v_bsn_at_sync : STD_LOGIC_VECTOR(g_bsn_w-1 DOWNTO 0);
BEGIN
v_bsn_at_sync := bsn_at_sync_reg;
v_bsn_ok := bsn_ok_reg;
out_valid <= out_valid_reg;
IF bs_sosi.sync = '1' THEN
v_bsn_at_sync := bs_sosi.bsn;
END IF;
bsn_ok <= bsn_ok_reg WHEN in_sosi.sync = '0' OR TO_UINT(in_sosi.channel) /= g_check_channel ELSE IF in_sosi.sync = '1' AND TO_UINT(in_sosi.channel) = g_check_channel THEN
'1' WHEN in_sosi.bsn = bsn_at_sync ELSE '0'; IF in_sosi.bsn = v_bsn_at_sync THEN
v_bsn_ok := '1';
ELSE
v_bsn_ok := '0';
END IF;
END IF;
out_valid <= '1' WHEN in_sosi.sop = '1' AND TO_UINT(in_sosi.channel) /= g_check_channel ELSE IF in_sosi.sop = '1' THEN
bsn_ok WHEN in_sosi.sop = '1' AND TO_UINT(in_sosi.channel) = g_check_channel ELSE IF TO_UINT(in_sosi.channel) = g_check_channel THEN
out_valid_reg; out_valid <= v_bsn_ok;
ELSE
out_valid <= '1';
END IF;
END IF;
IF TO_UINT(in_sosi.channel) = g_check_channel THEN
cnt_discarded_en <= in_sosi.sync AND NOT v_bsn_ok;
ELSE
cnt_discarded_en <= '0';
END IF;
bsn_ok <= v_bsn_ok;
bsn_at_sync <= v_bsn_at_sync;
END PROCESS;
p_dp_clk : PROCESS(dp_rst, dp_clk) p_dp_clk : PROCESS(dp_rst, dp_clk)
BEGIN BEGIN
IF dp_rst='1' THEN IF dp_rst='1' THEN
......
...@@ -46,8 +46,7 @@ ENTITY tb_dp_block_validate_bsn_at_sync IS ...@@ -46,8 +46,7 @@ ENTITY tb_dp_block_validate_bsn_at_sync IS
GENERIC ( GENERIC (
g_nof_blocks_per_sync : NATURAL := 5; g_nof_blocks_per_sync : NATURAL := 5;
g_nof_data_per_blk : NATURAL := 6; g_nof_data_per_blk : NATURAL := 6;
g_bsn_init : NATURAL := 7; -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync, g_bsn_init : NATURAL := 7 -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync.
g_check_channel : NATURAL := 8 -- channel to check, the channel field is a counter value.
); );
END tb_dp_block_validate_bsn_at_sync; END tb_dp_block_validate_bsn_at_sync;
...@@ -64,6 +63,7 @@ ARCHITECTURE tb OF tb_dp_block_validate_bsn_at_sync IS ...@@ -64,6 +63,7 @@ ARCHITECTURE tb OF tb_dp_block_validate_bsn_at_sync IS
CONSTANT c_gap_size : NATURAL := 4; CONSTANT c_gap_size : NATURAL := 4;
CONSTANT c_nof_sync : NATURAL := 5; CONSTANT c_nof_sync : NATURAL := 5;
CONSTANT c_nof_blk : NATURAL := g_nof_blocks_per_sync * c_nof_sync; CONSTANT c_nof_blk : NATURAL := g_nof_blocks_per_sync * c_nof_sync;
CONSTANT c_check_channel : NATURAL := g_nof_blocks_per_sync;
SIGNAL dp_clk : STD_LOGIC := '1'; SIGNAL dp_clk : STD_LOGIC := '1';
SIGNAL mm_clk : STD_LOGIC := '1'; SIGNAL mm_clk : STD_LOGIC := '1';
...@@ -146,7 +146,7 @@ BEGIN ...@@ -146,7 +146,7 @@ BEGIN
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
u_dut : ENTITY work.dp_block_validate_bsn_at_sync u_dut : ENTITY work.dp_block_validate_bsn_at_sync
GENERIC MAP ( GENERIC MAP (
g_check_channel => g_check_channel g_check_channel => c_check_channel
) )
PORT MAP ( PORT MAP (
dp_rst => rst, dp_rst => rst,
...@@ -192,7 +192,7 @@ BEGIN ...@@ -192,7 +192,7 @@ BEGIN
BEGIN BEGIN
IF rising_edge(dp_clk) THEN IF rising_edge(dp_clk) THEN
IF reference_sosi.sop = '1' THEN IF reference_sosi.sop = '1' THEN
IF g_bsn_init >= g_nof_blocks_per_sync AND TO_UINT(reference_sosi.channel) = g_check_channel THEN IF g_bsn_init >= g_nof_blocks_per_sync AND TO_UINT(reference_sosi.channel) = c_check_channel THEN
v_valid_blk := FALSE; v_valid_blk := FALSE;
ELSE ELSE
v_valid_blk := TRUE; v_valid_blk := TRUE;
...@@ -220,10 +220,8 @@ BEGIN ...@@ -220,10 +220,8 @@ BEGIN
proc_mem_mm_bus_rd(0, mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_rd(0, mm_clk, reg_miso, reg_mosi);
proc_mem_mm_bus_rd_latency(1, mm_clk); proc_mem_mm_bus_rd_latency(1, mm_clk);
IF g_bsn_init = g_nof_blocks_per_sync THEN -- should have c_nof_sync discarded sync IF g_bsn_init >= g_nof_blocks_per_sync THEN -- should have 1 discarded sync
ASSERT c_nof_sync = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR; ASSERT 1 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR;
ELSIF g_bsn_init > g_nof_blocks_per_sync THEN -- should have c_nof_sync -1 discarded sync
ASSERT c_nof_sync-1 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR;
ELSE -- 0 discarded sync ELSE -- 0 discarded sync
ASSERT 0 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR; ASSERT 0 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR;
END IF; END IF;
......
...@@ -43,13 +43,10 @@ ARCHITECTURE tb OF tb_tb_dp_block_validate_bsn_at_sync IS ...@@ -43,13 +43,10 @@ ARCHITECTURE tb OF tb_tb_dp_block_validate_bsn_at_sync IS
BEGIN BEGIN
-- g_nof_blocks_per_sync : NATURAL := 5; -- g_nof_blocks_per_sync : NATURAL := 5;
-- g_nof_data_per_blk : NATURAL := 6; -- g_nof_data_per_blk : NATURAL := 6;
-- g_bsn_init : NATURAL := 7; -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync, -- g_bsn_init : NATURAL := 7 -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync.
-- g_check_channel : NATURAL := 8 -- channel to check, the channel field is a counter value.
u_smaller : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, c_blk_per_sync - 4); -- g_bsn_init < g_nof_blocks_per_sync
u_smaller : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, 0, 8); -- g_bsn_init < g_nof_blocks_per_sync u_equal : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, c_blk_per_sync); -- g_bsn_init = g_nof_blocks_per_sync
u_equal : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, 5, 8); -- g_bsn_init = g_nof_blocks_per_sync u_larger : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, c_blk_per_sync + 4); -- g_bsn_init > g_nof_blocks_per_sync
u_larger : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, 8, 8); -- g_bsn_init > g_nof_blocks_per_sync
u_ch_on_sync : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, 5, 10); -- g_check_channel MOD c_blk_per_sync = 0,
u_no_ch : ENTITY work.tb_dp_block_validate_bsn_at_sync GENERIC MAP(c_blk_per_sync, c_data_per_blk, 8, 500); -- channel will never reach 500
END tb; END tb;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment