Add test 5 of DDS Reader

Test Sample Rejected Status Handling.
Test GET_SAMPLE_REJECTED_STATUS DDS Operation.
Extend Sample Rejected Status Kind by REJECTED_BY_PAYLOAD_MEMORY_LIMIT
This commit is contained in:
Greek 2021-04-26 20:47:00 +02:00
parent 7a096de5c1
commit 996c1fe962
5 changed files with 1235 additions and 14 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -77,8 +77,9 @@ analyze ../dds_reader.vhd
#analyze Level_0/L0_dds_reader_test3_arzkrto.vhd #analyze Level_0/L0_dds_reader_test3_arzkrto.vhd
#analyze Level_0/L0_dds_reader_test3_arznriu.vhd #analyze Level_0/L0_dds_reader_test3_arznriu.vhd
#analyze Level_0/L0_dds_reader_test3_arzksto.vhd #analyze Level_0/L0_dds_reader_test3_arzksto.vhd
analyze Level_0/L0_dds_reader_test4_arzkriu.vhd #analyze Level_0/L0_dds_reader_test4_arzkriu.vhd
analyze Level_0/L0_dds_reader_test4_arznriu.vhd #analyze Level_0/L0_dds_reader_test4_arznriu.vhd
analyze Level_0/L0_dds_reader_test5_arzkriu.vhd
#simulate L0_rtps_handler_test1 #simulate L0_rtps_handler_test1
#simulate L0_rtps_handler_test2 #simulate L0_rtps_handler_test2
@ -137,5 +138,6 @@ analyze Level_0/L0_dds_reader_test4_arznriu.vhd
#simulate L0_dds_reader_test3_arzkrto #simulate L0_dds_reader_test3_arzkrto
#simulate L0_dds_reader_test3_arznriu #simulate L0_dds_reader_test3_arznriu
#simulate L0_dds_reader_test3_arzksto #simulate L0_dds_reader_test3_arzksto
simulate L0_dds_reader_test4_arzkriu #simulate L0_dds_reader_test4_arzkriu
#simulate L0_dds_reader_test4_arznriu #simulate L0_dds_reader_test4_arznriu
simulate L0_dds_reader_test5_arzkriu

View File

@ -823,6 +823,13 @@ begin
stage_next <= SKIP_AND_RETURN; stage_next <= SKIP_AND_RETURN;
cnt_next <= 0; cnt_next <= 0;
rtps_return_code_latch_next <= REJECTED; rtps_return_code_latch_next <= REJECTED;
-- Update Sample Reject Status
status_sig_next <= status_sig or SAMPLE_REJECTED_STATUS;
sample_rej_cnt_next <= sample_rej_cnt + 1;
sample_rej_cnt_change_next <= sample_rej_cnt_change + 1;
sample_rej_last_reason_next <= REJECTED_BY_PAYOAD_MEMORY_LIMIT;
sample_rej_last_inst_next <= HANDLE_NIL;
else else
assert (oldest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) severity FAILURE; assert (oldest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) severity FAILURE;
-- Do not ACK Operation -- Do not ACK Operation
@ -1433,7 +1440,7 @@ begin
status_sig_next <= status_sig or SAMPLE_REJECTED_STATUS; status_sig_next <= status_sig or SAMPLE_REJECTED_STATUS;
sample_rej_cnt_next <= sample_rej_cnt + 1; sample_rej_cnt_next <= sample_rej_cnt + 1;
sample_rej_cnt_change_next <= sample_rej_cnt_change + 1; sample_rej_cnt_change_next <= sample_rej_cnt_change + 1;
sample_rej_last_reason_next <= REJECTED_BY_SAMPLES_LIMIT; sample_rej_last_reason_next <= REJECTED_BY_PAYOAD_MEMORY_LIMIT;
sample_rej_last_inst_next <= key_hash; sample_rej_last_inst_next <= key_hash;
else else
-- Latch next Payload Slot and Continue -- Latch next Payload Slot and Continue
@ -4223,7 +4230,7 @@ begin
valid_out_dds <= '1'; valid_out_dds <= '1';
if (ready_out_dds = '1') then if (ready_out_dds = '1') then
-- Reset -- Reset
sample_rej_last_reason <= NOT_REJECTED; sample_rej_last_reason_next <= NOT_REJECTED;
cnt_next <= cnt + 1; cnt_next <= cnt + 1;
end if; end if;
-- Last Instance Handle 1/4 -- Last Instance Handle 1/4
@ -4254,6 +4261,7 @@ begin
last_word_out_dds <= '1'; last_word_out_dds <= '1';
if (ready_out_dds = '1') then if (ready_out_dds = '1') then
-- Reset -- Reset
sample_rej_last_inst_next <= HANDLE_NIL;
status_sig_next <= status_sig and (not SAMPLE_REJECTED_STATUS); status_sig_next <= status_sig and (not SAMPLE_REJECTED_STATUS);
-- DONE -- DONE
@ -4313,6 +4321,7 @@ begin
last_word_out_dds <= '1'; last_word_out_dds <= '1';
if (ready_out_dds = '1') then if (ready_out_dds = '1') then
-- Reset -- Reset
deadline_miss_last_inst_next <= HANDLE_NIL;
status_sig_next <= status_sig and (not REQUESTED_DEADLINE_MISSED_STATUS); status_sig_next <= status_sig and (not REQUESTED_DEADLINE_MISSED_STATUS);
-- DONE -- DONE

View File

@ -175,6 +175,8 @@ package rtps_package is
constant REJECTED_BY_INSTANCES_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(1,CDR_ENUMERATION_WIDTH)); constant REJECTED_BY_INSTANCES_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(1,CDR_ENUMERATION_WIDTH));
constant REJECTED_BY_SAMPLES_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(2,CDR_ENUMERATION_WIDTH)); constant REJECTED_BY_SAMPLES_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(2,CDR_ENUMERATION_WIDTH));
constant REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(3,CDR_ENUMERATION_WIDTH)); constant REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(3,CDR_ENUMERATION_WIDTH));
-- Extension
constant REJECTED_BY_PAYOAD_MEMORY_LIMIT : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(255,CDR_ENUMERATION_WIDTH));
-- *QOS POLICY ID* (DDS) -- *QOS POLICY ID* (DDS)
constant INVALID_QOS_POLICY_ID : std_logic_vector(QOS_POLICY_ID_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(0,QOS_POLICY_ID_WIDTH)); constant INVALID_QOS_POLICY_ID : std_logic_vector(QOS_POLICY_ID_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(0,QOS_POLICY_ID_WIDTH));