diff --git a/sim/L1_rtps_builtin_endpoint_test1.do b/sim/L1_rtps_builtin_endpoint_test1.do index 510400e..edbba84 100644 --- a/sim/L1_rtps_builtin_endpoint_test1.do +++ b/sim/L1_rtps_builtin_endpoint_test1.do @@ -13,10 +13,10 @@ add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/last_word_in add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/last_word_in_latch add wave -noupdate -radix hexadecimal /l1_rtps_builtin_endpoint_test1/uut/time add wave -noupdate -divider OUTPUT -add wave -noupdate -radix hexadecimal /l1_rtps_builtin_endpoint_test1/uut/data_out -add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/last_word_out -add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/rtps_wr -add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/rtps_full +add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/full_ro +add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/wr_ro +add wave -noupdate -radix hexadecimal /l1_rtps_builtin_endpoint_test1/uut/data_out_ro +add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/last_word_out_ro add wave -noupdate -divider {MAIN FSM} add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/stage add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/stage_next @@ -37,7 +37,7 @@ add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/mem_opcode add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/mem_stage add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/mem_stage_next add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/mem_cnt -add wave -noupdate -childformat {{/l1_rtps_builtin_endpoint_test1/uut/participant_data.guid_prefix -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_addr -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.def_addr -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_port -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.def_port -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_duration -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_deadline -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.heartbeat_res_time -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.acknack_res_time -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.spdp_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.pub_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.sub_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.mes_seq_nr -radix unsigned}} -expand -subitemconfig {/l1_rtps_builtin_endpoint_test1/uut/participant_data.guid_prefix {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_addr {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.def_addr {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_port {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.def_port {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_duration {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_deadline {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.heartbeat_res_time {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.acknack_res_time {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.spdp_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.pub_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.sub_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.mes_seq_nr {-height 15 -radix unsigned}} /l1_rtps_builtin_endpoint_test1/uut/participant_data +add wave -noupdate -childformat {{/l1_rtps_builtin_endpoint_test1/uut/participant_data.guid_prefix -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_addr -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.def_addr -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_port -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.def_port -radix hexadecimal} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_duration -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_deadline -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.heartbeat_res_time -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.acknack_res_time -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.spdp_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.pub_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.sub_seq_nr -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/participant_data.mes_seq_nr -radix unsigned}} -subitemconfig {/l1_rtps_builtin_endpoint_test1/uut/participant_data.guid_prefix {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_addr {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.def_addr {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.meta_port {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.def_port {-height 15 -radix hexadecimal} /l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_duration {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.lease_deadline {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.heartbeat_res_time {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.acknack_res_time {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.spdp_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.pub_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.sub_seq_nr {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/participant_data.mes_seq_nr {-height 15 -radix unsigned}} /l1_rtps_builtin_endpoint_test1/uut/participant_data add wave -noupdate -radix unsigned /l1_rtps_builtin_endpoint_test1/uut/mem_addr_base add wave -noupdate -radix unsigned /l1_rtps_builtin_endpoint_test1/uut/mem_empty_head add wave -noupdate -radix unsigned /l1_rtps_builtin_endpoint_test1/uut/mem_occupied_head @@ -48,13 +48,13 @@ add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/parse_prc/rd_guard add wave -noupdate -divider MISC add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/alive add wave -noupdate /l1_rtps_builtin_endpoint_test1/uut/endpoint_alive -add wave -noupdate -radix unsigned -childformat {{/l1_rtps_builtin_endpoint_test1/uut/seq_nr(0) -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/seq_nr(1) -radix unsigned}} -subitemconfig {/l1_rtps_builtin_endpoint_test1/uut/seq_nr(0) {-radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/seq_nr(1) {-radix unsigned}} /l1_rtps_builtin_endpoint_test1/uut/seq_nr -add wave -noupdate -group FIFO -radix hexadecimal /l1_rtps_builtin_endpoint_test1/fifo_inst/data_in -add wave -noupdate -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/write -add wave -noupdate -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/full -add wave -noupdate -group FIFO -radix hexadecimal /l1_rtps_builtin_endpoint_test1/fifo_inst/data_out -add wave -noupdate -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/read -add wave -noupdate -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/empty +add wave -noupdate -radix unsigned -childformat {{/l1_rtps_builtin_endpoint_test1/uut/seq_nr(0) -radix unsigned} {/l1_rtps_builtin_endpoint_test1/uut/seq_nr(1) -radix unsigned}} -subitemconfig {/l1_rtps_builtin_endpoint_test1/uut/seq_nr(0) {-height 15 -radix unsigned} /l1_rtps_builtin_endpoint_test1/uut/seq_nr(1) {-height 15 -radix unsigned}} /l1_rtps_builtin_endpoint_test1/uut/seq_nr +add wave -noupdate -expand -group FIFO -radix hexadecimal /l1_rtps_builtin_endpoint_test1/fifo_inst/data_in +add wave -noupdate -expand -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/write +add wave -noupdate -expand -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/full +add wave -noupdate -expand -group FIFO -radix hexadecimal /l1_rtps_builtin_endpoint_test1/fifo_inst/data_out +add wave -noupdate -expand -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/read +add wave -noupdate -expand -group FIFO /l1_rtps_builtin_endpoint_test1/fifo_inst/empty add wave -noupdate -group RTPS_OUT -radix hexadecimal /l1_rtps_builtin_endpoint_test1/rtps_out_inst/data_in add wave -noupdate -group RTPS_OUT /l1_rtps_builtin_endpoint_test1/rtps_out_inst/last_word_in add wave -noupdate -group RTPS_OUT /l1_rtps_builtin_endpoint_test1/rtps_out_inst/rd @@ -70,8 +70,8 @@ add wave -noupdate -group TESTBENCH /l1_rtps_builtin_endpoint_test1/stimulus.len add wave -noupdate -group TESTBENCH /l1_rtps_builtin_endpoint_test1/cnt_stim add wave -noupdate -group TESTBENCH /l1_rtps_builtin_endpoint_test1/packet_sent TreeUpdate [SetDefaultTree] -WaveRestoreCursors {Begin {31125000 ps} 1} {Error {36375000 ps} 1} {Cursor {36411652 ps} 0} -quietly wave cursor active 2 +WaveRestoreCursors {Begin {88075000 ps} 0} {Error {36375000 ps} 1} {Cursor {36411652 ps} 0} +quietly wave cursor active 1 configure wave -namecolwidth 149 configure wave -valuecolwidth 144 configure wave -justifyvalue left @@ -86,4 +86,4 @@ configure wave -griddelta 40 configure wave -timeline 0 configure wave -timelineunits ns update -WaveRestoreZoom {35541123 ps} {36689465 ps} +WaveRestoreZoom {87500829 ps} {88649171 ps} diff --git a/src/TEMPLATE_user_config.vhd b/src/TEMPLATE_user_config.vhd index b0d2936..2d80d94 100644 --- a/src/TEMPLATE_user_config.vhd +++ b/src/TEMPLATE_user_config.vhd @@ -108,7 +108,10 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( + 0 to NUM_READERS-1 => DEFAULT_RELIABILITY_QOS_R, + NUM_READERS to NUM_WRITERS-1 => DEFAULT_RELIABILITY_QOS_W + ); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers) diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd index d4800ef..fa9fd3f 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd @@ -88,7 +88,7 @@ use work.rtps_test_package.all; -- READER 14 -- * LEASE_DURATION 20s -- READER 15 --- * RELIABILITY BEST_EFFORT +-- * RELIABILITY RELIABLE -- READER 16 -- * DESTINATION_ORDER BY_SOURCE_TIMESTAMP @@ -266,7 +266,7 @@ begin 0 => (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0'), 1 => (1 => '1', others => '0'), 2 => (2 => '1', others => '0'), - 3 => (15 => '1', others => '0'), + 3 => (0 => '1', 9 => '1', 10 => '1', others => '0'), 4 => (0 => '1', 3 => '1', 4 => '1', 5 => '1', 8 => '1', 9 => '1', 10 => '1', 11 => '1', 14 => '1', 15 => '1', 16 => '1', others => '0'), 5 => (0 => '1', 4 => '1', 5 => '1', 6 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0'), 6 => (10 => '1', others => '0'), @@ -334,11 +334,13 @@ begin e1.topic_name := ENDPOINT_TOPIC(0); e1.type_name := ENDPOINT_TYPE(0); e1.reader := FALSE; + e1.reliability := DEFAULT_RELIABILITY_QOS_W; e2.participant := p2; e2.entityId := gen_rand_entityid_2(TRUE); e2.topic_name := ENDPOINT_TOPIC(0); e2.type_name := ENDPOINT_TYPE(0); e2.reader := TRUE; + e2.reliability := DEFAULT_RELIABILITY_QOS_R; user_data := convert_string("USER_DATA" & (10 to 256 => NUL)); group_data := convert_string("GROUP_DATA" & (11 to 256 => NUL)); @@ -500,6 +502,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -521,6 +524,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -542,6 +546,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -563,6 +568,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -587,6 +593,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -608,6 +615,7 @@ begin sub_p.writerSN := p2_snp; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -631,6 +639,7 @@ begin sub_s.writerSN := p2_sns; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := TRUE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_R; endpoint.entityId := gen_rand_entityid_2(TRUE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -652,6 +661,7 @@ begin sub_s.writerSN := p2_sns; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := TRUE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_R; endpoint.entityId := gen_rand_entityid_2(TRUE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -674,6 +684,7 @@ begin sub_s.writerSN := p2_sns; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := TRUE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_R; endpoint.entityId := gen_rand_entityid_2(TRUE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -695,6 +706,7 @@ begin sub_s.writerSN := p2_sns; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := TRUE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_R; endpoint.entityId := gen_rand_entityid_2(TRUE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -706,7 +718,7 @@ begin gen_endpoint_data(endpoint, sub_s.data); gen_sentinel(sub_s.data); gen_rtps_handler_out(sub_s, endpoint, stimulus); - wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); + wr_sig := (NUM_READERS => '1', NUM_READERS+3 => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); push_endpoint_reference; start_test; wait_on_complete; @@ -719,6 +731,7 @@ begin sub_s.writerSN := p2_sns; endpoint := DEFAULT_ENDPOINT_DATA; endpoint.reader := TRUE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_R; endpoint.entityId := gen_rand_entityid_2(TRUE); endpoint.participant := p2; endpoint.topic_name := ENDPOINT_TOPIC(0); @@ -740,7 +753,7 @@ begin Log("Match Participant 2 Writer [Default]", INFO); sub_p.writerSN := p2_snp; - endpoint := e1; + endpoint := e1; gen_endpoint_data(endpoint, sub_p.data); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -755,11 +768,11 @@ begin Log("Match Participant 2 Reader [Default]", INFO); sub_s.writerSN := p2_sns; - endpoint := e2; + endpoint := e2; gen_endpoint_data(endpoint, sub_s.data); gen_sentinel(sub_s.data); gen_rtps_handler_out(sub_s, endpoint, stimulus); - wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); + wr_sig := (NUM_READERS => '1', NUM_READERS+3 => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); push_endpoint_reference; start_test; wait_on_complete; @@ -770,7 +783,7 @@ begin Log("Update Participant 2 Writer [Unicast Locators (1 valid, 2 invalid)]", INFO); sub_p.writerSN := p2_snp; - endpoint := e1; + endpoint := e1; endpoint.unicastLocatorList := (numLocators => int(4,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, 1 => gen_rand_loc_2, 2 => gen_rand_loc_2, 3 => gen_rand_loc_2, others => EMPTY_LOCATOR)); endpoint.unicastLocatorList.locator(1).kind := LOCATOR_KIND_UDPv6; endpoint.unicastLocatorList.locator(2).addr := (others => '0'); @@ -789,7 +802,7 @@ begin Log("Update Participant 2 Reader [Multicast Locator (1 valid, 2 invalid)]", INFO); sub_s.writerSN := p2_sns; - endpoint := e2; + endpoint := e2; endpoint.multicastLocatorList := (numLocators => int(4,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, 1 => gen_rand_loc_2, 2 => gen_rand_loc_2, 3 => gen_rand_loc_2, others => EMPTY_LOCATOR)); endpoint.multicastLocatorList.locator(1).kind := LOCATOR_KIND_UDPv6; endpoint.multicastLocatorList.locator(2).addr := (others => '0'); @@ -797,7 +810,7 @@ begin gen_endpoint_data(endpoint, sub_s.data); gen_sentinel(sub_s.data); gen_rtps_handler_out(sub_s, endpoint, stimulus); - wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); + wr_sig := (NUM_READERS => '1', NUM_READERS+3 => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); push_endpoint_reference; start_test; wait_on_complete; @@ -807,13 +820,13 @@ begin p2_sns := p2_sns + 1; Log("Change Match Participant 2 Writer [Reliability Best Effort]", INFO); - sub_p.writerSN := p2_snp; - endpoint := e1; - endpoint.reliability := BEST_EFFORT_RELIABILITY_QOS; + sub_p.writerSN := p2_snp; + endpoint := e1; + endpoint.reliability := BEST_EFFORT_RELIABILITY_QOS; gen_endpoint_data(endpoint, sub_p.data); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); - wr_sig := (15 => '1', others => '0'); + wr_sig := (0 => '1', 9 => '1', 10 => '1', others => '0'); push_endpoint_reference; start_test; wait_on_complete; @@ -824,7 +837,7 @@ begin Log("Change Match Participant 2 Reader [Topic & Type Change]", INFO); sub_s.writerSN := p2_sns; - endpoint := e2; + endpoint := e2; endpoint.topic_name := ENDPOINT_TOPIC(2); endpoint.type_name := ENDPOINT_TYPE(2); gen_endpoint_data(endpoint, sub_s.data); diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd index 8c11940..0f8c026 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd @@ -125,7 +125,7 @@ begin variable RV : RandomPType; variable p0, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA; variable e0, endpoint : ENDPOINT_DATA_TYPE := DEFAULT_ENDPOINT_DATA; - variable p_sn, p_snp, p_sns : SEQUENCENUMBER_TYPE := FIRST_SEQUENCENUMBER; + variable p_sn, p_snp, p_sns : SEQUENCENUMBER_TYPE := FIRST_SEQUENCENUMBER; variable wr_sig : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); -- Wrapper to use procedure as function @@ -635,6 +635,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -647,10 +648,11 @@ begin -- *PID_TOPIC_NAME* Log("Ignore Endpoint [Invalid PID_TOPIC_NAME]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -662,9 +664,10 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_TOPIC_NAME]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, +1); gen_sentinel(sub_p.data); @@ -681,9 +684,10 @@ begin -- *PID_TYPE_NAME* Log("Ignore Endpoint [Invalid PID_TYPE_NAME]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, -1); gen_sentinel(sub_p.data); @@ -696,9 +700,10 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_TYPE_NAME]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, +1); gen_sentinel(sub_p.data); @@ -715,9 +720,10 @@ begin -- *PID_DURABILITY* Log("Ignore Endpoint [Invalid PID_DURABILITY]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, -1); gen_sentinel(sub_p.data); @@ -730,9 +736,10 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_DURABILITY]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, +1); gen_sentinel(sub_p.data); @@ -749,9 +756,10 @@ begin -- *PID_DEADLINE* Log("Ignore Endpoint [Invalid PID_DEADLINE]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, -1); gen_sentinel(sub_p.data); @@ -764,9 +772,10 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_DEADLINE]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, +1); gen_sentinel(sub_p.data); @@ -786,6 +795,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, -1); gen_sentinel(sub_p.data); @@ -801,6 +811,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, +1); gen_sentinel(sub_p.data); @@ -820,6 +831,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, -1); gen_sentinel(sub_p.data); @@ -835,6 +847,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, +1); gen_sentinel(sub_p.data); @@ -851,10 +864,11 @@ begin -- *PID_DESTINATION_ORDER* Log("Ignore Endpoint [Invalid PID_DESTINATION_ORDER]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -869,6 +883,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, +1); gen_sentinel(sub_p.data); @@ -885,10 +900,11 @@ begin -- *PID_OWNERSHIP* Log("Ignore Endpoint [Invalid PID_OWNERSHIP]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -903,6 +919,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, +1); gen_sentinel(sub_p.data); @@ -919,10 +936,11 @@ begin -- *PID_PRESENTATION* Log("Ignore Endpoint [Invalid PID_PRESENTATION]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -937,6 +955,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, +1); gen_sentinel(sub_p.data); @@ -953,10 +972,11 @@ begin -- *PID_LATENCY_BUDGET* Log("Ignore Endpoint [Invalid PID_LATENCY_BUDGET]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -971,6 +991,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, +1); gen_sentinel(sub_p.data); @@ -987,10 +1008,11 @@ begin -- *PID_ENDPOINT_GUID* Log("Ignore Endpoint [Invalid PID_ENDPOINT_GUID]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -1005,6 +1027,7 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, +1); gen_sentinel(sub_p.data); @@ -1021,10 +1044,9 @@ begin -- *PID_EXPECTS_INLINE_QOS* Log("Ignore Endpoint [Invalid PID_EXPECTS_INLINE_QOS]", INFO); - sub_s.writerSN := p_sns; - endpoint := e0; - endpoint.reader := TRUE; - endpoint.entityId := gen_rand_entityid_2(TRUE); + sub_s.writerSN := p_sns; + endpoint := e0; + endpoint.entityId := gen_rand_entityid_2(TRUE); gen_endpoint_data(endpoint, sub_s.data, PID_EXPECTS_INLINE_QOS, -1); gen_sentinel(sub_s.data); gen_rtps_handler_out(sub_s, endpoint, stimulus); @@ -1036,30 +1058,30 @@ begin sub_s.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_EXPECTS_INLINE_QOS]", INFO); - sub_s.writerSN := p_sns; - endpoint := e0; - endpoint.reader := TRUE; - endpoint.entityId := gen_rand_entityid_2(TRUE); + sub_s.writerSN := p_sns; + endpoint := e0; + endpoint.entityId := gen_rand_entityid_2(TRUE); gen_endpoint_data(endpoint, sub_s.data, PID_EXPECTS_INLINE_QOS, +1); gen_sentinel(sub_s.data); gen_rtps_handler_out(sub_s, endpoint, stimulus); - wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0'); + wr_sig := (NUM_READERS => '1', NUM_READERS+3 => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0'); push_endpoint_reference; start_test; wait_on_sent; wait_on_mem_check; stimulus := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET; - sub_s.data := EMPTY_TEST_PACKET; - p_sns := p_sns + 1; + sub_p.data := EMPTY_TEST_PACKET; + p_sns := p_sns + 1; -- *PID_DATA_MAX_SIZE_SERIALIZED* Log("Ignore Endpoint [Invalid PID_DATA_MAX_SIZE_SERIALIZED]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); - endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); + endpoint.max_size_serialized := int(65000, CDR_LONG_WIDTH); gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -1071,11 +1093,12 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_DATA_MAX_SIZE_SERIALIZED]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); - endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); + endpoint.max_size_serialized := int(65000, CDR_LONG_WIDTH); gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, +1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -1094,8 +1117,9 @@ begin sub_p.writerSN := p_snp; endpoint := e0; endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; endpoint.entityId := gen_rand_entityid_2(FALSE); - endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, -1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -1107,11 +1131,12 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_UNICAST_LOCATOR]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); - endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); + endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, +1); gen_sentinel(sub_p.data); gen_rtps_handler_out(sub_p, endpoint, stimulus); @@ -1158,10 +1183,11 @@ begin -- *PID_MULTICAST_LOCATOR* Log("Ignore Endpoint [Invalid PID_MULTICAST_LOCATOR]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, -1); gen_sentinel(sub_p.data); @@ -1174,10 +1200,11 @@ begin sub_p.data := EMPTY_TEST_PACKET; Log("Match Endpoint [Extra Bytes in PID_MULTICAST_LOCATOR]", INFO); - sub_p.writerSN := p_snp; - endpoint := e0; - endpoint.reader := FALSE; - endpoint.entityId := gen_rand_entityid_2(FALSE); + sub_p.writerSN := p_snp; + endpoint := e0; + endpoint.reader := FALSE; + endpoint.reliability := DEFAULT_RELIABILITY_QOS_W; + endpoint.entityId := gen_rand_entityid_2(FALSE); endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, +1); gen_sentinel(sub_p.data); diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd index 360b097..b1ff1cc 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd @@ -227,13 +227,15 @@ begin e0.topic_name := ENDPOINT_TOPIC(2); e0.type_name := ENDPOINT_TYPE(2); e0.reader := FALSE; + e0.reliability := DEFAULT_RELIABILITY_QOS_W; e0.entityId := gen_rand_entityid_2(FALSE); e1.participant := p0; e1.topic_name := ENDPOINT_TOPIC(2); e1.type_name := ENDPOINT_TYPE(2); e1.reader := TRUE; - e1.entityId := gen_rand_entityid_2(FALSE); + e1.reliability := DEFAULT_RELIABILITY_QOS_R; + e1.entityId := gen_rand_entityid_2(TRUE); Log("Initiating Test", INFO); stim_done <= '0'; diff --git a/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd index 1e33011..67c695d 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd @@ -166,6 +166,7 @@ begin e0.participant := p0; e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 2 e1 := DEFAULT_ENDPOINT_DATA; e1.participant := p0; @@ -186,6 +187,7 @@ begin e3.entityid := RV.RandSlv(ENTITYID_WIDTH); e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.expectsInlineQoS(0) := '1'; + e3.reliability := RELIABLE_RELIABILITY_QOS; Log("Initiating Test", INFO); stim_done <= '0'; diff --git a/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd index 209b211..7b68f07 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd @@ -166,6 +166,7 @@ begin e0.participant := p0; e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 2 e1 := DEFAULT_ENDPOINT_DATA; e1.participant := p0; @@ -186,6 +187,7 @@ begin e3.entityid := RV.RandSlv(ENTITYID_WIDTH); e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.expectsInlineQoS(0) := '1'; + e3.reliability := RELIABLE_RELIABILITY_QOS; Log("Initiating Test", INFO); stim_done <= '0'; diff --git a/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd index 3665651..cf430a5 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd @@ -197,6 +197,7 @@ begin e0.participant.guidPrefix := gen_rand_guid_prefix; e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.participant.guidPrefix := gen_rand_guid_prefix; @@ -209,6 +210,7 @@ begin e2.entityid := RV.RandSlv(ENTITYID_WIDTH); e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.participant.guidPrefix := gen_rand_guid_prefix; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd index 9306fd3..3185ad8 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd index 9c94a69..5f7b053 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd index 08def95..c9fdcf2 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd index 7acdd3c..7800194 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd index a2dc7bd..3478943 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd index 81cb11e..3812c99 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd @@ -352,6 +352,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -368,6 +369,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -376,6 +378,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd index 28d06b1..6b7af25 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd @@ -353,6 +353,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -369,6 +370,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -377,6 +379,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd index 5ef8b83..8dd3390 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd @@ -355,6 +355,7 @@ begin e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.participant.guidPrefix := gen_rand_guid_prefix; e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); + e0.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 1 e1 := DEFAULT_ENDPOINT_DATA; e1.nr := 1; @@ -371,6 +372,7 @@ begin e2.participant.guidPrefix := gen_rand_guid_prefix; e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.expectsInlineQoS(0) := '1'; + e2.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 3 e3 := DEFAULT_ENDPOINT_DATA; e3.nr := 3; @@ -379,6 +381,7 @@ begin e3.participant.guidPrefix := gen_rand_guid_prefix; e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.durability := TRANSIENT_LOCAL_DURABILITY_QOS; + e3.reliability := RELIABLE_RELIABILITY_QOS; -- Endpoint 4 e4 := DEFAULT_ENDPOINT_DATA; e4.nr := 4; diff --git a/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd b/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd index ec246ad..b7fd23d 100644 --- a/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd @@ -105,7 +105,7 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => RELIABLE_RELIABILITY_QOS); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers) diff --git a/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd b/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd index 5619e5b..13b6152 100644 --- a/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd @@ -107,7 +107,7 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => RELIABLE_RELIABILITY_QOS); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers) diff --git a/src/Tests/Level_2/L2_testbench_Lib4_config.vhd b/src/Tests/Level_2/L2_testbench_Lib4_config.vhd index c939a98..3c9e119 100644 --- a/src/Tests/Level_2/L2_testbench_Lib4_config.vhd +++ b/src/Tests/Level_2/L2_testbench_Lib4_config.vhd @@ -104,7 +104,7 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => RELIABLE_RELIABILITY_QOS); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers) diff --git a/src/Tests/Level_2/L2_testbench_Lib5_config.vhd b/src/Tests/Level_2/L2_testbench_Lib5_config.vhd index 905add4..5d96146 100644 --- a/src/Tests/Level_2/L2_testbench_Lib5_config.vhd +++ b/src/Tests/Level_2/L2_testbench_Lib5_config.vhd @@ -104,7 +104,7 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => RELIABLE_RELIABILITY_QOS); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers) diff --git a/src/Tests/Testbench_Lib1_config.vhd b/src/Tests/Testbench_Lib1_config.vhd index d48158c..4582702 100644 --- a/src/Tests/Testbench_Lib1_config.vhd +++ b/src/Tests/Testbench_Lib1_config.vhd @@ -184,9 +184,11 @@ package user_config is -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 15 => BEST_EFFORT_RELIABILITY_QOS, - NUM_READERS+3 => BEST_EFFORT_RELIABILITY_QOS, - others => DEFAULT_RELIABILITY_QOS + 0 to 14 => DEFAULT_RELIABILITY_QOS_R, + 15 => RELIABLE_RELIABILITY_QOS, + 16 => DEFAULT_RELIABILITY_QOS_R, + NUM_READERS+3 => BEST_EFFORT_RELIABILITY_QOS, + others => DEFAULT_RELIABILITY_QOS_W ); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( diff --git a/src/rtps_config_package.vhd b/src/rtps_config_package.vhd index ef5a252..fdff92c 100644 --- a/src/rtps_config_package.vhd +++ b/src/rtps_config_package.vhd @@ -77,8 +77,9 @@ package rtps_config_package is constant READER_EXPECTS_INLINE_QOS_FLAG : natural := 0; constant READER_EXPECTS_HISTORICAL_DATA_FLAG : natural := 1; constant READER_IS_BEST_EFFORT_FLAG : natural := 2; + -- TODO: Auto generate based on other defaults constant DEFAULT_EXPECTS_HISTORICAL_DATA_FLAG : std_logic := '0'; - constant DEFAULT_IS_BEST_EFFORT_FLAG : std_logic := '0'; + constant DEFAULT_IS_BEST_EFFORT_FLAG : std_logic := '1'; -- Marks the Reader Endpoint in the Endpoint Array constant ENDPOINT_READERS : std_logic_vector(0 to NUM_ENDPOINTS-1); --Deferred to package body @@ -521,7 +522,7 @@ package body rtps_config_package is ret.data(ind+len) := std_logic_vector(ENDPOINT_TIME_BASED_FILTER_QOS(i)(1)); end if; -- RELIABILITY - if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then + if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS_R or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then len := len + 1; ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16)); len := len + 1; @@ -706,7 +707,7 @@ package body rtps_config_package is ret.data(ind+len) := std_logic_vector(ENDPOINT_LEASE_DURATION(i)(1)); end if; -- RELIABILITY - if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then + if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS_W or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then len := len + 1; ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16)); len := len + 1; @@ -831,7 +832,7 @@ package body rtps_config_package is ret.data(ret.length) := std_logic_vector(ENDPOINT_LEASE_DURATION(id)(1)); end if; -- RELIABILITY - if (ENDPOINT_RELIABILITY_QOS(id) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(id) /= DEFAULT_MAX_BLOCKING_TIME) then + if (ENDPOINT_RELIABILITY_QOS(id) /= DEFAULT_RELIABILITY_QOS_W or ENDPOINT_MAX_BLOCKING_TIME(id) /= DEFAULT_MAX_BLOCKING_TIME) then ret.length := ret.length + 1; ret.data(ret.length) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16)); ret.length := ret.length + 1; @@ -1146,8 +1147,14 @@ package body rtps_config_package is ret.LIVELINESS_QOS(i) := '0'; end if; -- RELIABILITY - if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_RELIABILITY_QOS), unsigned(ENDPOINT_RELIABILITY_QOS(i)))) then - ret.RELIABILITY_QOS(i) := '0'; + if (is_reader) then + if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_RELIABILITY_QOS_R), unsigned(ENDPOINT_RELIABILITY_QOS(i)))) then + ret.RELIABILITY_QOS(i) := '0'; + end if; + else + if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_RELIABILITY_QOS_W), unsigned(ENDPOINT_RELIABILITY_QOS(i)))) then + ret.RELIABILITY_QOS(i) := '0'; + end if; end if; -- DESTINATION_ORDER if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_DESTINATION_ORDER_QOS), unsigned(ENDPOINT_DESTINATION_ORDER_QOS(i)))) then diff --git a/src/rtps_package.vhd b/src/rtps_package.vhd index c0df588..b263eea 100644 --- a/src/rtps_package.vhd +++ b/src/rtps_package.vhd @@ -392,7 +392,8 @@ package rtps_package is -- RELIABILITY constant BEST_EFFORT_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(1,CDR_ENUMERATION_WIDTH)); constant RELIABLE_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(2,CDR_ENUMERATION_WIDTH)); - constant DEFAULT_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := RELIABLE_RELIABILITY_QOS; + constant DEFAULT_RELIABILITY_QOS_W : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := RELIABLE_RELIABILITY_QOS; + constant DEFAULT_RELIABILITY_QOS_R : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := BEST_EFFORT_RELIABILITY_QOS; -- MAX BLOCKING TIME (RELIABILITY) constant DEFAULT_MAX_BLOCKING_TIME : DURATION_TYPE; --Deferred to Package Body (100 ms) -- TRANSPORT_PRIORITY diff --git a/src/rtps_test_package.vhd b/src/rtps_test_package.vhd index 20852ff..2ab36e6 100644 --- a/src/rtps_test_package.vhd +++ b/src/rtps_test_package.vhd @@ -823,7 +823,7 @@ package body rtps_test_package is liveliness => DEFAULT_LIVELINESS_QOS, leaseDuration => DEFAULT_LEASE_DURATION, time_based_filter => DEFAULT_TIME_BASED_FILTER_QOS, - reliability => DEFAULT_RELIABILITY_QOS, + reliability => DEFAULT_RELIABILITY_QOS_R, max_blocking_time => DEFAULT_MAX_BLOCKING_TIME, lifespan => DEFAULT_LIFESPAN_QOS, destination_order => DEFAULT_DESTINATION_ORDER_QOS, @@ -2448,7 +2448,7 @@ package body rtps_test_package is end if; end if; -- RELIABILITY - if (ref.reliability /= DEFAULT_RELIABILITY_QOS or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then + if ((ref.reader and ref.reliability /= DEFAULT_RELIABILITY_QOS_R) or ((not ref.reader) and ref.reliability /= DEFAULT_RELIABILITY_QOS_W) or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then if (pid = PID_RELIABILITY) then assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE; output.data(output.length) := endian_swap(ref.littleEndian, PID_RELIABILITY) & endian_swap(ref.littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH)); @@ -2870,7 +2870,7 @@ package body rtps_test_package is end if; end if; -- RELIABILITY - if (endpoint.reliability /= DEFAULT_RELIABILITY_QOS or endpoint.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then + if (endpoint.reliability /= DEFAULT_RELIABILITY_QOS_W or endpoint.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then if (pid = PID_RELIABILITY) then assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE; output.data(output.length) := endian_swap(littleEndian, PID_RELIABILITY) & endian_swap(littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH)); diff --git a/syn/syn_config.vhd b/syn/syn_config.vhd index 05627fa..d48dffe 100644 --- a/syn/syn_config.vhd +++ b/syn/syn_config.vhd @@ -104,7 +104,7 @@ package user_config is constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS); -- XXX: PARTITION QoS Ignored -- Array mapping RELIABILITY QoS to Endpoints - constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS); + constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => RELIABLE_RELIABILITY_QOS); -- (Only relevant to Writers) constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME); -- Array mapping LIFESPAN QoS to Endpoints (Only relevant to Writers)