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

added sync retention to dp_packet_merge

parent 36562913
No related branches found
No related tags found
1 merge request!235added sync retention to dp_packet_merge
Pipeline #28312 passed
Pipeline: sdptr

#28313

    ...@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS ...@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS
    pkt_cnt : NATURAL RANGE 0 TO g_nof_pkt+1; pkt_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
    align_cnt : NATURAL RANGE 0 TO g_nof_pkt+1; align_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
    busy : STD_LOGIC; busy : STD_LOGIC;
    sync : STD_LOGIC;
    src_out : t_dp_sosi; src_out : t_dp_sosi;
    END RECORD; END RECORD;
    ...@@ -324,9 +325,17 @@ BEGIN ...@@ -324,9 +325,17 @@ BEGIN
    IF snk_in.sop = '1' THEN IF snk_in.sop = '1' THEN
    IF r.pkt_cnt = 0 THEN IF r.pkt_cnt = 0 THEN
    v.src_out.sop := '1'; v.src_out.sop := '1';
    v.src_out.sync := snk_in.sync; -- only preserve sync when sync interval and nof_pkt interval are aligned, else sync gets lost but could still be recovered from BSN v.src_out.sync := r.sync; -- use sync from previous merged packet if it occurred on pkt_cnt /= 0.
    v.src_out.bsn := snk_in.bsn; -- use BSN of first packet for merged packet v.src_out.bsn := snk_in.bsn; -- use BSN of first packet for merged packet
    v.src_out.channel := snk_in.channel; -- use channel of first packet for merged packet v.src_out.channel := snk_in.channel; -- use channel of first packet for merged packet
    v.sync := '0'; -- reset captured sync.
    IF snk_in.sync = '1' THEN
    v.src_out.sync := '1'; -- set out sync to '1' if this first block contains the sync.
    END IF;
    ELSE
    IF snk_in.sync = '1' THEN
    v.sync := '1'; -- Capture sync if it occurs on a pkt_cnt /= 0 so we can use it in the next merged packet
    END IF;
    END IF; END IF;
    END IF; END IF;
    ...@@ -359,6 +368,7 @@ BEGIN ...@@ -359,6 +368,7 @@ BEGIN
    v.pkt_cnt := 0; v.pkt_cnt := 0;
    v.align_cnt := 0; v.align_cnt := 0;
    v.busy := '0'; v.busy := '0';
    v.sync := '0';
    v.src_out := c_dp_sosi_rst; v.src_out := c_dp_sosi_rst;
    END IF; END IF;
    ......
    ...@@ -238,9 +238,6 @@ BEGIN ...@@ -238,9 +238,6 @@ BEGIN
    proc_dp_verify_data("verify_snk_in.bsn", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.bsn, prev_verify_snk_in.bsn); proc_dp_verify_data("verify_snk_in.bsn", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.bsn, prev_verify_snk_in.bsn);
    proc_dp_verify_data("verify_snk_in.channel", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.channel, prev_verify_snk_in.channel); proc_dp_verify_data("verify_snk_in.channel", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.channel, prev_verify_snk_in.channel);
    -- Verify that the output sync occurs when expected
    proc_dp_verify_sync(c_sync_period, c_sync_offset, clk, verify_en_sop, verify_snk_in.sync, verify_snk_in.sop, verify_snk_in.bsn);
    -- Verify output packet ctrl -- Verify output packet ctrl
    proc_dp_verify_sop_and_eop(clk, verify_snk_in.valid, verify_snk_in.sop, verify_snk_in.eop, verify_hold_sop); proc_dp_verify_sop_and_eop(clk, verify_snk_in.valid, verify_snk_in.sop, verify_snk_in.eop, verify_hold_sop);
    ......
    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