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
No related branches found
No related tags found
1 merge request!183Resolve L2SDP-557
Pipeline #22638 passed
......@@ -133,7 +133,6 @@ BEGIN
);
-- 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
GENERIC MAP (
g_width => c_word_w,
......@@ -187,19 +186,48 @@ BEGIN
-- MM registers in st_clk domain
reg_wr_arr => OPEN,
reg_rd_arr => OPEN,
in_reg => count_reg, -- read only
in_reg => count_reg, -- read only
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
'1' WHEN in_sosi.bsn = bsn_at_sync ELSE '0';
IF in_sosi.sync = '1' AND TO_UINT(in_sosi.channel) = g_check_channel THEN
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
bsn_ok WHEN in_sosi.sop = '1' AND TO_UINT(in_sosi.channel) = g_check_channel ELSE
out_valid_reg;
IF in_sosi.sop = '1' THEN
IF TO_UINT(in_sosi.channel) = g_check_channel THEN
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)
BEGIN
IF dp_rst='1' THEN
......
......@@ -46,8 +46,7 @@ ENTITY tb_dp_block_validate_bsn_at_sync IS
GENERIC (
g_nof_blocks_per_sync : NATURAL := 5;
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_check_channel : NATURAL := 8 -- channel to check, the channel field is a counter value.
g_bsn_init : NATURAL := 7 -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync.
);
END tb_dp_block_validate_bsn_at_sync;
......@@ -64,6 +63,7 @@ ARCHITECTURE tb OF tb_dp_block_validate_bsn_at_sync IS
CONSTANT c_gap_size : NATURAL := 4;
CONSTANT c_nof_sync : NATURAL := 5;
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 mm_clk : STD_LOGIC := '1';
......@@ -146,7 +146,7 @@ BEGIN
------------------------------------------------------------------------------
u_dut : ENTITY work.dp_block_validate_bsn_at_sync
GENERIC MAP (
g_check_channel => g_check_channel
g_check_channel => c_check_channel
)
PORT MAP (
dp_rst => rst,
......@@ -192,7 +192,7 @@ BEGIN
BEGIN
IF rising_edge(dp_clk) 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;
ELSE
v_valid_blk := TRUE;
......@@ -220,10 +220,8 @@ BEGIN
proc_mem_mm_bus_rd(0, mm_clk, reg_miso, reg_mosi);
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
ASSERT c_nof_sync = 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;
IF g_bsn_init >= g_nof_blocks_per_sync THEN -- should have 1 discarded sync
ASSERT 1 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR;
ELSE -- 0 discarded sync
ASSERT 0 = TO_UINT(reg_miso.rddata(c_word_w-1 DOWNTO 0)) REPORT "Wrong discarded sync count" SEVERITY ERROR;
END IF;
......
......@@ -43,13 +43,10 @@ ARCHITECTURE tb OF tb_tb_dp_block_validate_bsn_at_sync IS
BEGIN
-- g_nof_blocks_per_sync : NATURAL := 5;
-- 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_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, 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, 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, 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
-- g_bsn_init : NATURAL := 7 -- >= g_nof_blocks_per_sync for discarded sync, < g_nof_blocks_per_sync for no discarded sync.
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_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_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
END tb;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment