Change memory format of rtps_discovery_module to use double linked list

This commit is contained in:
John Ring 2022-03-13 12:40:48 +01:00
parent 290807f2ae
commit 70072a51bf
7 changed files with 712 additions and 540 deletions

View File

@ -1,71 +0,0 @@
onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate -divider SYSTEM
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/clk
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/reset
add wave -noupdate -divider INPUT
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/empty
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/rd
add wave -noupdate -radix hexadecimal /l0_rtps_builtin_endpoint_test1/uut/data_in
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/last_word_in
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/last_word_in_latch
add wave -noupdate -divider OUTPUT
add wave -noupdate -group ENDPOINTS /l0_rtps_builtin_endpoint_test1/uut/full_ue
add wave -noupdate -group ENDPOINTS /l0_rtps_builtin_endpoint_test1/uut/wr_ue
add wave -noupdate -group ENDPOINTS -radix hexadecimal /l0_rtps_builtin_endpoint_test1/uut/data_out_ue
add wave -noupdate -group ENDPOINTS /l0_rtps_builtin_endpoint_test1/uut/last_word_out_ue
add wave -noupdate -group {RTPS OUT} /l0_rtps_builtin_endpoint_test1/uut/full_ro
add wave -noupdate -group {RTPS OUT} /l0_rtps_builtin_endpoint_test1/uut/wr_ro
add wave -noupdate -group {RTPS OUT} -radix hexadecimal /l0_rtps_builtin_endpoint_test1/uut/data_out_ro
add wave -noupdate -group {RTPS OUT} /l0_rtps_builtin_endpoint_test1/uut/last_word_out_ro
add wave -noupdate -divider TESTBENCH
add wave -noupdate /l0_rtps_builtin_endpoint_test1/start
add wave -noupdate /l0_rtps_builtin_endpoint_test1/stim_stage
add wave -noupdate /l0_rtps_builtin_endpoint_test1/stimulus.length
add wave -noupdate /l0_rtps_builtin_endpoint_test1/cnt_stim
add wave -noupdate /l0_rtps_builtin_endpoint_test1/packet_sent
add wave -noupdate /l0_rtps_builtin_endpoint_test1/SB.ItemNumberVar
add wave -noupdate -divider {MAIN FSM}
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/stage
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/stage_next
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/cnt
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/endpoint_mask
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/participant_match
add wave -noupdate -divider {MEM FSM}
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_opcode
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_op_start
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_op_done
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_stage
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_stage_next
add wave -noupdate -group MEM_FSM /l0_rtps_builtin_endpoint_test1/uut/mem_cnt
add wave -noupdate -group MEM_FSM -radix unsigned /l0_rtps_builtin_endpoint_test1/uut/mem_addr_base
add wave -noupdate -divider GUARD
add wave -noupdate -radix unsigned /l0_rtps_builtin_endpoint_test1/uut/read_cnt
add wave -noupdate -radix unsigned /l0_rtps_builtin_endpoint_test1/uut/parameter_end
add wave -noupdate /l0_rtps_builtin_endpoint_test1/uut/parse_prc/rd_guard
add wave -noupdate -divider MEMORY
add wave -noupdate -group MEMORY -radix unsigned /l0_rtps_builtin_endpoint_test1/uut/mem_ctrl_inst/ram_inst/addr
add wave -noupdate -group MEMORY /l0_rtps_builtin_endpoint_test1/uut/mem_ctrl_inst/ram_inst/wen
add wave -noupdate -group MEMORY /l0_rtps_builtin_endpoint_test1/uut/mem_ctrl_inst/ram_inst/ren
add wave -noupdate -group MEMORY -radix hexadecimal /l0_rtps_builtin_endpoint_test1/uut/mem_ctrl_inst/ram_inst/wr_data
add wave -noupdate -group MEMORY -radix hexadecimal /l0_rtps_builtin_endpoint_test1/uut/mem_ctrl_inst/ram_inst/rd_data
add wave -noupdate -divider MISC
add wave -noupdate -radix unsigned /l0_rtps_builtin_endpoint_test1/uut/seq_nr
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {Begin {63775000 ps} 1} {Error {66975000 ps} 1} {Cursor {33675000 ps} 0}
quietly wave cursor active 1
configure wave -namecolwidth 149
configure wave -valuecolwidth 144
configure wave -justifyvalue left
configure wave -signalnamewidth 1
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
WaveRestoreZoom {63200829 ps} {64349171 ps}

View File

@ -0,0 +1,65 @@
onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate -divider SYSTEM
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/clk
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/reset
add wave -noupdate -divider INPUT
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/empty
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/rd
add wave -noupdate -radix hexadecimal /l0_rtps_discovery_module_test1_uc/uut/data_in
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/last_word_in
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/last_word_in_latch
add wave -noupdate -divider OUTPUT
add wave -noupdate -group {RTPS OUT} /l0_rtps_discovery_module_test1_uc/uut/full_ro
add wave -noupdate -group {RTPS OUT} /l0_rtps_discovery_module_test1_uc/uut/wr_ro
add wave -noupdate -group {RTPS OUT} -radix hexadecimal /l0_rtps_discovery_module_test1_uc/uut/data_out_ro
add wave -noupdate -group {RTPS OUT} /l0_rtps_discovery_module_test1_uc/uut/last_word_out_ro
add wave -noupdate -divider {MAIN FSM}
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/stage
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/cnt
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/endpoint_mask
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/participant_match
add wave -noupdate -divider {MEM FSM}
add wave -noupdate -expand -group MEM_FSM /l0_rtps_discovery_module_test1_uc/uut/mem_op_start
add wave -noupdate -expand -group MEM_FSM /l0_rtps_discovery_module_test1_uc/uut/mem_opcode
add wave -noupdate -expand -group MEM_FSM /l0_rtps_discovery_module_test1_uc/uut/mem_op_done
add wave -noupdate -expand -group MEM_FSM /l0_rtps_discovery_module_test1_uc/uut/mem_stage
add wave -noupdate -expand -group MEM_FSM /l0_rtps_discovery_module_test1_uc/uut/mem_cnt
add wave -noupdate -expand -group MEM_FSM -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/mem_empty_head
add wave -noupdate -expand -group MEM_FSM -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/mem_occupied_head
add wave -noupdate -expand -group MEM_FSM -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/mem_addr_base
add wave -noupdate -expand -group MEMORY -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/mem_ctrl_inst/ram_inst/addr
add wave -noupdate -expand -group MEMORY /l0_rtps_discovery_module_test1_uc/uut/mem_ctrl_inst/ram_inst/wen
add wave -noupdate -expand -group MEMORY /l0_rtps_discovery_module_test1_uc/uut/mem_ctrl_inst/ram_inst/ren
add wave -noupdate -expand -group MEMORY -radix hexadecimal /l0_rtps_discovery_module_test1_uc/uut/mem_ctrl_inst/ram_inst/wr_data
add wave -noupdate -expand -group MEMORY -radix hexadecimal /l0_rtps_discovery_module_test1_uc/uut/mem_ctrl_inst/ram_inst/rd_data
add wave -noupdate -divider MISC
add wave -noupdate -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/seq_nr
add wave -noupdate -divider TESTBENCH
add wave -noupdate -group TESTBENCH /l0_rtps_discovery_module_test1_uc/start
add wave -noupdate -group TESTBENCH /l0_rtps_discovery_module_test1_uc/stim_stage
add wave -noupdate -group TESTBENCH /l0_rtps_discovery_module_test1_uc/stimulus.length
add wave -noupdate -group TESTBENCH /l0_rtps_discovery_module_test1_uc/cnt_stim
add wave -noupdate -group TESTBENCH /l0_rtps_discovery_module_test1_uc/packet_sent
add wave -noupdate -divider GUARD
add wave -noupdate -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/read_cnt
add wave -noupdate -radix unsigned /l0_rtps_discovery_module_test1_uc/uut/parameter_end
add wave -noupdate /l0_rtps_discovery_module_test1_uc/uut/parse_prc/rd_guard
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {Begin {63775000 ps} 1} {Error {66975000 ps} 1} {Cursor {4039782 ps} 0}
quietly wave cursor active 3
configure wave -namecolwidth 149
configure wave -valuecolwidth 144
configure wave -justifyvalue left
configure wave -signalnamewidth 1
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
WaveRestoreZoom {3817836 ps} {4966178 ps}

View File

@ -195,53 +195,55 @@ PARTICICPANT DATA
| | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+---------------------------------------------------------------+ +---------------------------------------------------------------+
00| NEXT_ADDRESS | 00| |
+---------------------------------------------------------------+
01| |
+ + + +
02| GUIDPREFIX | 01| GUIDPREFIX |
+ + + +
03| | 02| |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
04| META_IPv4_ADDRESS | 03| META_IPv4_ADDRESS |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
05| DEFAULT_IPv4_ADDRESS | 04| DEFAULT_IPv4_ADDRESS |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
06| META_UDP_PORT | DEFAULT_UDP_PORT | 05| META_UDP_PORT | DEFAULT_UDP_PORT |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
07| | 06| |
+ SPDP_SEQ_NR + + SPDP_SEQ_NR +
07| |
+---------------------------------------------------------------+
08| | 08| |
+---------------------------------------------------------------+
09| |
+ LEASE_DURATION + + LEASE_DURATION +
09| |
+---------------------------------------------------------------+
10| | 10| |
+---------------------------------------------------------------+
11| |
+ LEASE_DEADLINE + + LEASE_DEADLINE +
12| | 11| |
+---------------------------------------------------------+-+-+-+ +---------------------------------------------------------+-+-+-+
13| UNUSED |P|S|M| 12| UNUSED |P|S|M|
+---------------------------------------------------------+-+-+-+ +---------------------------------------------------------+-+-+-+
14| | 13| |
+ ACKNACK_RES_TIME + + ACKNACK_RES_TIME +
14| |
+---------------------------------------------------------------+
15| | 15| |
+---------------------------------------------------------------+
16| |
+ HEARTBEAT_RES_TIME + + HEARTBEAT_RES_TIME +
16| |
+---------------------------------------------------------------+
17| | 17| |
+---------------------------------------------------------------+
18| |
+ PUBLICATION_SEQ_NR + + PUBLICATION_SEQ_NR +
18| |
+---------------------------------------------------------------+
19| | 19| |
+---------------------------------------------------------------+
20| |
+ SUBSCRIPTION_SEQ_NR + + SUBSCRIPTION_SEQ_NR +
21| | 20| |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
22| | 21| |
+ MESSAGE_SEQ_NR + + MESSAGE_SEQ_NR +
23| | 22| |
+---------------------------------------------------------------+
23| NEXT_ADDRESS |
+---------------------------------------------------------------+
24| PREV_ADDRESS |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
M...Send Message Data (Liveliness Update) M...Send Message Data (Liveliness Update)

View File

@ -108,6 +108,8 @@ begin
variable m0, m1, m2 : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA; variable m0, m1, m2 : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
variable p0, p1, p2, p3 : GUIDPREFIX_TYPE; variable p0, p1, p2, p3 : GUIDPREFIX_TYPE;
alias empty_head is <<signal uut.empty_head_sig : natural>>;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
variable ret : LOCATOR_TYPE := EMPTY_LOCATOR; variable ret : LOCATOR_TYPE := EMPTY_LOCATOR;
@ -171,7 +173,7 @@ begin
wait until rising_edge(clk); wait until rising_edge(clk);
wait until rising_edge(clk); wait until rising_edge(clk);
reset <= '0'; reset <= '0';
-- MEMORY STATE: -/0,1,2 -- MEMORY STATE -/0,25,50
Log("Match Participant 0 [Compatible]", INFO); Log("Match Participant 0 [Compatible]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -192,10 +194,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p0)/1,2 -- MEMORY STATE: 0(P0)/25,50
Log("Match Participant 1 [Compatible, Little Endian]", INFO); Log("Match Participant 1 [Compatible, Little Endian]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -210,8 +213,6 @@ begin
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1'; participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1'; participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
m1 := participant; m1 := participant;
report "DOMAIN_ID: " & to_hstring(DOMAIN_ID);
report "PARTICIPANT DOMAIN_ID: " & to_hstring(participant.domainId);
gen_participant_data(participant, rtps_sub.data); gen_participant_data(participant, rtps_sub.data);
gen_sentinel('1', rtps_sub.data); gen_sentinel('1', rtps_sub.data);
gen_rtps_handler_out(rtps_sub, participant, stimulus); gen_rtps_handler_out(rtps_sub, participant, stimulus);
@ -219,10 +220,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1),0(p0)/2 -- MEMORY STATE: 25(P1),0(P0)/50
Log("Ignore Participant 2 [Incompatible Domain ID]", INFO); Log("Ignore Participant 2 [Incompatible Domain ID]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -242,10 +244,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1),0(p0)/2 -- MEMORY STATE: 25(P1),0(P0)/50
Log("Unmatch Participant 0 [Incompatible Domain ID]", INFO); Log("Unmatch Participant 0 [Incompatible Domain ID]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -267,10 +270,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1)/0,2 -- MEMORY STATE: 25(P1)/0,50
Log("Ignore Participant 2 [Incompatible Domain TAG]", INFO); Log("Ignore Participant 2 [Incompatible Domain TAG]", INFO);
@ -291,10 +295,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1)/0,2 -- MEMORY STATE: 25(P1)/0,50
Log("Unmatch Participant 1 [Incompatible Domain TAG]", INFO); Log("Unmatch Participant 1 [Incompatible Domain TAG]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -315,10 +320,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: -/1,0,2 -- MEMORY STATE: -/25,0,50
Log("Match Participant 0 [+Unicast Metatraffic Locator]", INFO); Log("Match Participant 0 [+Unicast Metatraffic Locator]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -340,10 +346,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0)/0,2 -- MEMORY STATE: 25(P0)/0,50
Log("Match Participant 1 [ALL Values Set non default]", INFO); Log("Match Participant 1 [ALL Values Set non default]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -372,10 +379,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1),1(p0)/2 -- MEMORY STATE: 0(P1),25(P0)/50
Log("Ignore Participant 2 [Incompatible Protocol Version]", INFO); Log("Ignore Participant 2 [Incompatible Protocol Version]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -395,10 +403,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1),1(p0)/2 -- MEMORY STATE: 0(P1),25(P0)/50
Log("Unmatch Participant 0 [Incompatible Protocol Version]", INFO); Log("Unmatch Participant 0 [Incompatible Protocol Version]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -420,10 +429,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1)/1,2 -- MEMORY STATE: 0(P1)/25,50
Log("Match Participant 0 [Compatible, Only Subscribers]", INFO); Log("Match Participant 0 [Compatible, Only Subscribers]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -442,10 +452,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0),0(p1)/2 -- MEMORY STATE: 25(P0),0(P1)/50
Log("Match Participant 2 [Compatible, Only Publishers]", INFO); Log("Match Participant 2 [Compatible, Only Publishers]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -464,10 +475,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 2(p2),1(p0),0(p1)/- -- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Update Participant 1 [Valid/Invalid Default/Metatraffic Locators]", INFO); Log("Update Participant 1 [Valid/Invalid Default/Metatraffic Locators]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -501,10 +513,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 2(p2),1(p0),0(p1)/- -- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Ignore Participant 3 [Memory Full]", INFO); Log("Ignore Participant 3 [Memory Full]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -527,9 +540,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Unmatch Participant 2 [No Endpoints]", INFO); Log("Unmatch Participant 2 [No Endpoints]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -546,10 +561,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0),0(p1)/2 -- MEMORY STATE: 25(P0),0(P1)/50
Log("Unmatch Participant 0 [Incompatible Built-in Endpoints]", INFO); Log("Unmatch Participant 0 [Incompatible Built-in Endpoints]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -568,10 +584,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1)/1,2 -- MEMORY STATE: 0(P1)/25,50
Log("Unmatch Participant 1 [Unregister/Dispose]", INFO); Log("Unmatch Participant 1 [Unregister/Dispose]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -588,11 +605,12 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.inlineQos := EMPTY_TEST_PACKET; rtps_sub.inlineQos := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
rtps_sub.flags := (SUBMESSAGE_DATA_FLAG_POS => '1', others => '0'); rtps_sub.flags := (SUBMESSAGE_DATA_FLAG_POS => '1', others => '0');
-- MEMORY STATE: -/0,1,2 -- MEMORY STATE: -/0,25,50
stim_done <= '1'; stim_done <= '1';
wait_on_complete; wait_on_complete;

View File

@ -107,6 +107,8 @@ begin
variable m0, m1, m2 : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA; variable m0, m1, m2 : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
variable p0, p1, p2, p3 : GUIDPREFIX_TYPE; variable p0, p1, p2, p3 : GUIDPREFIX_TYPE;
alias empty_head is <<signal uut.empty_head_sig : natural>>;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
variable ret : LOCATOR_TYPE := EMPTY_LOCATOR; variable ret : LOCATOR_TYPE := EMPTY_LOCATOR;
@ -170,7 +172,7 @@ begin
wait until rising_edge(clk); wait until rising_edge(clk);
wait until rising_edge(clk); wait until rising_edge(clk);
reset <= '0'; reset <= '0';
-- MEMORY STATE: -/0,1,2 -- MEMORY STATE: -/0,25,50
Log("Match Participant 0 [Compatible]", INFO); Log("Match Participant 0 [Compatible]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -190,10 +192,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p0)/1,2 -- MEMORY STATE: 0(P0)/25,50
Log("Match Participant 1 [Compatible, Little Endian]", INFO); Log("Match Participant 1 [Compatible, Little Endian]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -207,8 +210,6 @@ begin
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1'; participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1'; participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
m1 := participant; m1 := participant;
report "DOMAIN_ID: " & to_hstring(DOMAIN_ID);
report "PARTICIPANT DOMAIN_ID: " & to_hstring(participant.domainId);
gen_participant_data(participant, rtps_sub.data); gen_participant_data(participant, rtps_sub.data);
gen_sentinel('1', rtps_sub.data); gen_sentinel('1', rtps_sub.data);
gen_rtps_handler_out(rtps_sub, participant, stimulus); gen_rtps_handler_out(rtps_sub, participant, stimulus);
@ -216,10 +217,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1),0(p0)/2 -- MEMORY STATE: 25(P1),0(P0)/50
Log("Ignore Participant 2 [Incompatible Domain ID]", INFO); Log("Ignore Participant 2 [Incompatible Domain ID]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -238,10 +240,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1),0(p0)/2 -- MEMORY STATE: 25(P1),0(P0)/50
Log("Unmatch Participant 0 [Incompatible Domain ID]", INFO); Log("Unmatch Participant 0 [Incompatible Domain ID]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -262,10 +265,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1)/0,2 -- MEMORY STATE: 25(P1)/0,50
Log("Ignore Participant 2 [Incompatible Domain TAG]", INFO); Log("Ignore Participant 2 [Incompatible Domain TAG]", INFO);
@ -285,10 +289,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p1)/0,2 -- MEMORY STATE: 25(P1)/0,50
Log("Unmatch Participant 1 [Incompatible Domain TAG]", INFO); Log("Unmatch Participant 1 [Incompatible Domain TAG]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -308,10 +313,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: -/1,0,2 -- MEMORY STATE: -/25,0,50
Log("Match Participant 0 [+Unicast Metatraffic Locator]", INFO); Log("Match Participant 0 [+Unicast Metatraffic Locator]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -332,10 +338,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0)/0,2 -- MEMORY STATE: 25(P0)/0,50
Log("Match Participant 1 [ALL Values Set non default]", INFO); Log("Match Participant 1 [ALL Values Set non default]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -363,10 +370,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1),1(p0)/2 -- MEMORY STATE: 0(P1),25(P0)/50
Log("Ignore Participant 2 [Incompatible Protocol Version]", INFO); Log("Ignore Participant 2 [Incompatible Protocol Version]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -385,10 +393,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1),1(p0)/2 -- MEMORY STATE: 0(P1),25(P0)/50
Log("Unmatch Participant 0 [Incompatible Protocol Version]", INFO); Log("Unmatch Participant 0 [Incompatible Protocol Version]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -409,10 +418,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1)/1,2 -- MEMORY STATE: 0(P1)/25,50
Log("Match Participant 0 [Compatible, Only Subscribers]", INFO); Log("Match Participant 0 [Compatible, Only Subscribers]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -430,10 +440,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0),0(p1)/2 -- MEMORY STATE: 25(P0),0(P1)/50
Log("Match Participant 2 [Compatible, Only Publishers]", INFO); Log("Match Participant 2 [Compatible, Only Publishers]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -451,10 +462,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 2(p2),1(p0),0(p1)/- -- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Update Participant 1 [Valid/Invalid Default/Metatraffic Locators]", INFO); Log("Update Participant 1 [Valid/Invalid Default/Metatraffic Locators]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -487,10 +499,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 2(p2),1(p0),0(p1)/- -- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Ignore Participant 3 [Memory Full]", INFO); Log("Ignore Participant 3 [Memory Full]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -512,9 +525,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 74, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 50(P2),25(P0),0(P1)/-
Log("Unmatch Participant 2 [No Endpoints]", INFO); Log("Unmatch Participant 2 [No Endpoints]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -530,10 +545,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 1(p0),0(p1)/2 -- MEMORY STATE: 25(P0),0(P1)/50
Log("Unmatch Participant 0 [Incompatible Built-in Endpoints]", INFO); Log("Unmatch Participant 0 [Incompatible Built-in Endpoints]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -551,10 +567,11 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 25, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.data := EMPTY_TEST_PACKET; rtps_sub.data := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
-- MEMORY STATE: 0(p1)/1,2 -- MEMORY STATE: 0(P1)/25,50
Log("Unmatch Participant 1 [Unregister/Dispose]", INFO); Log("Unmatch Participant 1 [Unregister/Dispose]", INFO);
participant := DEFAULT_PARTICIPANT_DATA; participant := DEFAULT_PARTICIPANT_DATA;
@ -570,11 +587,12 @@ begin
start_test; start_test;
wait_on_sent; wait_on_sent;
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
rtps_sub.inlineQos := EMPTY_TEST_PACKET; rtps_sub.inlineQos := EMPTY_TEST_PACKET;
rtps_sub.writerSN := rtps_sub.writerSN + 1; rtps_sub.writerSN := rtps_sub.writerSN + 1;
rtps_sub.flags := (SUBMESSAGE_DATA_FLAG_POS => '1', others => '0'); rtps_sub.flags := (SUBMESSAGE_DATA_FLAG_POS => '1', others => '0');
-- MEMORY STATE: -/0,1,2 -- MEMORY STATE: -/0,25,50
stim_done <= '1'; stim_done <= '1';
wait_on_complete; wait_on_complete;

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ package rtps_test_package is
-- Frame Sizes have to be specified, so that direct memory probing is possible -- Frame Sizes have to be specified, so that direct memory probing is possible
-- rtps_discovery_module Participant Frame Size -- rtps_discovery_module Participant Frame Size
constant PARTICIPANT_FRAME_SIZE : natural := 24; constant PARTICIPANT_FRAME_SIZE : natural := 25;
-- rtps_reader Endpoint Frame Size (RELIABLE=TRUE) -- rtps_reader Endpoint Frame Size (RELIABLE=TRUE)
constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 17; constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 17;
-- rtps_reader Endpoint Frame Size (RELIABLE=FALSE) -- rtps_reader Endpoint Frame Size (RELIABLE=FALSE)
@ -1871,28 +1871,28 @@ package body rtps_test_package is
ret(i).addr := start + i; ret(i).addr := start + i;
case (i) is case (i) is
-- GUID Prefix 1/3 -- GUID Prefix 1/3
when 1 => when 0 =>
ret(i).data := ref.guidPrefix(0); ret(i).data := ref.guidPrefix(0);
-- GUID Prefix 2/3 -- GUID Prefix 2/3
when 2 => when 1 =>
ret(i).data := ref.guidPrefix(1); ret(i).data := ref.guidPrefix(1);
-- GUID Prefix 3/3 -- GUID Prefix 3/3
when 3 => when 2 =>
ret(i).data := ref.guidPrefix(2); ret(i).data := ref.guidPrefix(2);
-- METATRAFFIC IPv4 Address -- METATRAFFIC IPv4 Address
when 4 => when 3 =>
ret(i).data := meta_loc.addr(IPv4_ADDRESS_WIDTH-1 downto 0); ret(i).data := meta_loc.addr(IPv4_ADDRESS_WIDTH-1 downto 0);
-- DEFAULT IPv4 Address -- DEFAULT IPv4 Address
when 5 => when 4 =>
ret(i).data := user_loc.addr(IPv4_ADDRESS_WIDTH-1 downto 0); ret(i).data := user_loc.addr(IPv4_ADDRESS_WIDTH-1 downto 0);
-- METATRAFFIC & DEFAULT UDP Port -- METATRAFFIC & DEFAULT UDP Port
when 6 => when 5 =>
ret(i).data := meta_loc.portn(UDP_PORT_WIDTH-1 downto 0) & user_loc.portn(UDP_PORT_WIDTH-1 downto 0); ret(i).data := meta_loc.portn(UDP_PORT_WIDTH-1 downto 0) & user_loc.portn(UDP_PORT_WIDTH-1 downto 0);
-- Lease Duration 1/2 -- Lease Duration 1/2
when 9 => when 8 =>
ret(i).data := std_logic_vector(ref.leaseDuration(0)); ret(i).data := std_logic_vector(ref.leaseDuration(0));
-- Lease Duration 2/2 -- Lease Duration 2/2
when 10 => when 9 =>
ret(i).data := std_logic_vector(ref.leaseDuration(1)); ret(i).data := std_logic_vector(ref.leaseDuration(1));
-- Other Fields Ignored -- Other Fields Ignored
when others => when others =>