Change memory format of rtps_reader to use double linked list

This commit is contained in:
John Ring 2022-03-11 23:34:52 +01:00
parent 1e2a835c02
commit 76824037d1
8 changed files with 893 additions and 586 deletions

View File

@ -1,52 +1,52 @@
onerror {resume} onerror {resume}
quietly WaveActivateNextPane {} 0 quietly WaveActivateNextPane {} 0
add wave -noupdate -divider SYSTEM add wave -noupdate -divider SYSTEM
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/clk add wave -noupdate /l0_rtps_reader_test1_vbk/uut/clk
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/reset add wave -noupdate /l0_rtps_reader_test1_vbk/uut/reset
add wave -noupdate -divider INPUT add wave -noupdate -divider INPUT
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/empty_meta add wave -noupdate /l0_rtps_reader_test1_vbk/uut/empty_meta
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/rd_meta add wave -noupdate /l0_rtps_reader_test1_vbk/uut/rd_meta
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/last_word_in_meta add wave -noupdate /l0_rtps_reader_test1_vbk/uut/last_word_in_meta
add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vrk/uut/data_in_meta add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/data_in_meta
add wave -noupdate -divider OUTPUT add wave -noupdate -divider OUTPUT
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/start_hc add wave -noupdate /l0_rtps_reader_test1_vbk/uut/start_hc
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/opcode_hc add wave -noupdate /l0_rtps_reader_test1_vbk/uut/opcode_hc
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/ack_hc add wave -noupdate /l0_rtps_reader_test1_vbk/uut/ack_hc
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/done_hc add wave -noupdate /l0_rtps_reader_test1_vbk/uut/done_hc
add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vrk/uut/data_out_hc add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/data_out_hc
add wave -noupdate -divider {MAIN FSM} add wave -noupdate -divider {MAIN FSM}
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/stage add wave -noupdate /l0_rtps_reader_test1_vbk/uut/stage
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/stage_next add wave -noupdate /l0_rtps_reader_test1_vbk/uut/stage_next
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/cnt add wave -noupdate /l0_rtps_reader_test1_vbk/uut/cnt
add wave -noupdate -divider {MEMORY FSM} add wave -noupdate -divider {MEMORY FSM}
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_op_done add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_op_done
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_op_start add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_op_start
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_opcode add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_opcode
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_stage add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_stage
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_stage_next add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_cnt
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_cnt add wave -noupdate -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_occupied_head
add wave -noupdate /l0_rtps_reader_test1_vrk/uut/mem_pos add wave -noupdate -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_empty_head
add wave -noupdate -radix unsigned /l0_rtps_reader_test1_vrk/uut/mem_addr_base add wave -noupdate -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_addr_base
add wave -noupdate -expand -group MEM_CTRL -radix unsigned /l0_rtps_reader_test1_vrk/uut/mem_addr add wave -noupdate -expand -group MEM_CTRL -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_addr
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/mem_valid_in add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_valid_in
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/mem_ready_in add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_ready_in
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/mem_read add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_read
add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vrk/uut/mem_write_data add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/mem_write_data
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/abort_read add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/abort_read
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/mem_valid_out add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_valid_out
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vrk/uut/mem_ready_out add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_ready_out
add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vrk/uut/mem_read_data add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/mem_read_data
add wave -noupdate -divider TESTBENCH add wave -noupdate -divider TESTBENCH
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/start add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/start
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/cnt_stim add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/cnt_stim
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/packet_sent add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/packet_sent
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/mem_check_done add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/mem_check_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/stim_done add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/stim_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/test_done add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/test_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vrk/uut/idle_sig add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/uut/idle_sig
TreeUpdate [SetDefaultTree] TreeUpdate [SetDefaultTree]
WaveRestoreCursors {Begin {8325000 ps} 1} {Error {9725000 ps} 1} {Cursor {9175000 ps} 0} WaveRestoreCursors {Cursor {8391550 ps} 0}
quietly wave cursor active 3 quietly wave cursor active 1
configure wave -namecolwidth 150 configure wave -namecolwidth 150
configure wave -valuecolwidth 100 configure wave -valuecolwidth 100
configure wave -justifyvalue left configure wave -justifyvalue left
@ -61,4 +61,4 @@ configure wave -griddelta 40
configure wave -timeline 0 configure wave -timeline 0
configure wave -timelineunits ns configure wave -timelineunits ns
update update
WaveRestoreZoom {8888200 ps} {9912200 ps} WaveRestoreZoom {7937 ns} {8961 ns}

View File

@ -371,6 +371,12 @@ READER
+ RES_TIME + [Reliable Only] + RES_TIME + [Reliable Only]
13| | 13| |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
14| WRITER_ID |
+---------------------------------------------------------------+
15| NEXT_ADDR |
+---------------------------------------------------------------+
16| PREV_ADDR |
+---------------------------------------------------------------+
WRITER WRITER
------ ------

View File

@ -118,6 +118,8 @@ begin
variable p0, p1, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA; variable p0, p1, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
variable e0, e1, e2, e3, endpoint : ENDPOINT_DATA_TYPE := DEFAULT_ENDPOINT_DATA; variable e0, e1, e2, e3, endpoint : ENDPOINT_DATA_TYPE := DEFAULT_ENDPOINT_DATA;
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;
@ -189,6 +191,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,13,26
Log("Insert Endpoint 0 Participant 0", INFO); Log("Insert Endpoint 0 Participant 0", INFO);
@ -199,9 +202,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,0,0] AlertIf(empty_head /= 13, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 0(P0E0)/13,26
Log("Insert Endpoint 1 Participant 0", INFO); Log("Insert Endpoint 1 Participant 0", INFO);
endpoint := e1; endpoint := e1;
@ -211,9 +215,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,0] AlertIf(empty_head /= 26, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 13(P0E1),0(P0E0)/26
Log("Insert Endpoint 2 Participant 1", INFO); Log("Insert Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -223,9 +228,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e2] AlertIf(empty_head /= 38, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 26(P1E2),13(P0E1),0(P0E0)/-
Log("Ignore Endpoint 3 Participant 1 [Memory Full]", INFO); Log("Ignore Endpoint 3 Participant 1 [Memory Full]", INFO);
endpoint := e3; endpoint := e3;
@ -246,22 +252,23 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e3] AlertIf(empty_head /= 38, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 26(P1E2),13(P0E1),0(P0E0)/-
Log("Remove Endpoint 2 Participant 1", INFO); Log("Remove Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
gen_endpoint_match_frame(endpoint, stimulus); gen_endpoint_match_frame(endpoint, stimulus);
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH))); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,0] AlertIf(empty_head /= 26, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 13(P0E1),0(P0E0)/26
Log("Insert Endpoint 3 Participant 1", INFO); Log("Insert Endpoint 3 Participant 1", INFO);
endpoint := e3; endpoint := e3;
@ -271,31 +278,31 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e3] AlertIf(empty_head /= 38, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 26(P1E3),13(P0E1),0(P0E0)/-
Log("Remove Participant 0", INFO); Log("Remove Participant 0", INFO);
participant := p0; participant := p0;
participant.match := UNMATCH; participant.match := UNMATCH;
gen_participant_match_frame(participant, stimulus); gen_participant_match_frame(participant, stimulus);
-- Remove Endpoint 0
endpoint := e0;
endpoint.nr := 0;
endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
-- Remove Endpoint 1 -- Remove Endpoint 1
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
-- Remove Endpoint 0
endpoint := e0;
endpoint.nr := 0;
endpoint.match := UNMATCH;
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH))); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [0,0,p1e3] AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 26(P1E3)/0,13
Log("Insert Endpoint 2 Participant 1", INFO); Log("Insert Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -305,9 +312,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,0,p1e3] AlertIf(empty_head /= 13, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 0(P1E2),26(P1E3)/13
Log("Unknown Metatraffic Operation followed by insertion of Enpoint 0 Participant 0", INFO); Log("Unknown Metatraffic Operation followed by insertion of Enpoint 0 Participant 0", INFO);
for i in 0 to 9 loop for i in 0 to 9 loop
@ -334,9 +342,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,p0e0,p1e3] AlertIf(empty_head /= 38, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 13(P0E0),0(P1E2),26(P1E3)/-
Log("Update Endpoint 2 Participant 1", INFO); Log("Update Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -348,11 +357,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,p0e0,p1e3] AlertIf(empty_head /= 38, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 13(P0E0),0(P1E2),26(P1E3)/-
stim_done <= '1'; stim_done <= '1';
wait_on_completion; wait_on_completion;

View File

@ -118,6 +118,8 @@ begin
variable p0, p1, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA; variable p0, p1, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
variable e0, e1, e2, e3, endpoint : ENDPOINT_DATA_TYPE := DEFAULT_ENDPOINT_DATA; variable e0, e1, e2, e3, endpoint : ENDPOINT_DATA_TYPE := DEFAULT_ENDPOINT_DATA;
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;
@ -189,6 +191,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,17,34
Log("Insert Endpoint 0 Participant 0", INFO); Log("Insert Endpoint 0 Participant 0", INFO);
@ -199,9 +202,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,0,0] AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 0(P0E0)/17,34
Log("Insert Endpoint 1 Participant 0", INFO); Log("Insert Endpoint 1 Participant 0", INFO);
endpoint := e1; endpoint := e1;
@ -211,9 +215,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,0] AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 17(P0E1),0(P0E0)/34
Log("Insert Endpoint 2 Participant 1", INFO); Log("Insert Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -223,9 +228,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e2] AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 34(P1E2),17(P0E1),0(P0E0)/-
Log("Ignore Endpoint 3 Participant 1 [Memory Full]", INFO); Log("Ignore Endpoint 3 Participant 1 [Memory Full]", INFO);
endpoint := e3; endpoint := e3;
@ -246,22 +252,23 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e3] AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 34(P1E2),17(P0E1),0(P0E0)/-
Log("Remove Endpoint 2 Participant 1", INFO); Log("Remove Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
gen_endpoint_match_frame(endpoint, stimulus); gen_endpoint_match_frame(endpoint, stimulus);
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH))); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,0] AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 17(P0E1),0(P0E0)/34
Log("Insert Endpoint 3 Participant 1", INFO); Log("Insert Endpoint 3 Participant 1", INFO);
endpoint := e3; endpoint := e3;
@ -271,31 +278,31 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p0e0,p0e1,p1e3] AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 34(P1E3),17(P0E1),0(P0E0)/-
Log("Remove Participant 0", INFO); Log("Remove Participant 0", INFO);
participant := p0; participant := p0;
participant.match := UNMATCH; participant.match := UNMATCH;
gen_participant_match_frame(participant, stimulus); gen_participant_match_frame(participant, stimulus);
-- Remove Endpoint 0
endpoint := e0;
endpoint.nr := 0;
endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
-- Remove Endpoint 1 -- Remove Endpoint 1
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
-- Remove Endpoint 0
endpoint := e0;
endpoint.nr := 0;
endpoint.match := UNMATCH;
SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH))); SB_out.Push(std_logic_vector(to_unsigned(endpoint.nr, WORD_WIDTH)));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [0,0,p1e3] AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 34(P1E3)/0,17
Log("Insert Endpoint 2 Participant 1", INFO); Log("Insert Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -305,9 +312,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,0,p1e3] AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 0(P1E2),34(P1E3)/17
Log("Unknown Metatraffic Operation followed by insertion of Enpoint 0 Participant 0", INFO); Log("Unknown Metatraffic Operation followed by insertion of Enpoint 0 Participant 0", INFO);
for i in 0 to 9 loop for i in 0 to 9 loop
@ -334,9 +342,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,p0e0,p1e3] AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 17(P0E0),0(P1E2),34(P1E3)/-
Log("Update Endpoint 2 Participant 1", INFO); Log("Update Endpoint 2 Participant 1", INFO);
endpoint := e2; endpoint := e2;
@ -348,9 +357,10 @@ begin
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
wait_on_sent; wait_on_sent;
stimulus := EMPTY_TEST_PACKET; stimulus := EMPTY_TEST_PACKET;
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,p0e0,p1e3] AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
-- MEMORY STATE 17(P0E0),0(P1E2),34(P1E3)/-
stim_done <= '1'; stim_done <= '1';
wait_on_completion; wait_on_completion;

View File

@ -107,6 +107,7 @@ begin
alias mem_op_done is <<signal uut.mem_op_done : std_logic>>; alias mem_op_done is <<signal uut.mem_op_done : std_logic>>;
alias idle_sig is <<signal uut.idle_sig : std_logic>>; alias idle_sig is <<signal uut.idle_sig : std_logic>>;
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
@ -261,6 +262,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,17,34
Log("Current Time: 0 s", INFO); Log("Current Time: 0 s", INFO);
wait until rising_edge(clk); wait until rising_edge(clk);
@ -276,9 +278,11 @@ begin
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
mem_check <= '0'; mem_check <= '0';
AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 0(P0E0)/17,34
Log("Insert Endpoint 1 Participant 1", INFO); Log("Insert Endpoint 1 Participant 1", INFO);
endpoint := e1; endpoint := e1;
@ -291,9 +295,11 @@ begin
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
mem_check <= '0'; mem_check <= '0';
AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 17(P1E1),0(P0E0)/34
Log("Insert Endpoint 2 Participant 2", INFO); Log("Insert Endpoint 2 Participant 2", INFO);
endpoint := e2; endpoint := e2;
@ -306,9 +312,11 @@ begin
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
mem_check <= '0'; mem_check <= '0';
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 1 s", INFO); Log("Current Time: 1 s", INFO);
@ -334,6 +342,7 @@ begin
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 2 s", INFO); Log("Current Time: 2 s", INFO);
@ -347,6 +356,7 @@ begin
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 5 s", INFO); Log("Current Time: 5 s", INFO);
@ -365,15 +375,16 @@ begin
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push("0" & std_logic_vector(to_unsigned(2, WORD_WIDTH))); SB_out.Push("0" & std_logic_vector(to_unsigned(2, WORD_WIDTH)));
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 17(P1E1),0(P0E0)/34
wait_on_idle; wait_on_idle;
Log("Current Time: 6 s", INFO); Log("Current Time: 6 s", INFO);
@ -384,7 +395,6 @@ begin
endpoint := e0; endpoint := e0;
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := MATCH; endpoint.match := MATCH;
@ -392,15 +402,16 @@ begin
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push("0" & std_logic_vector(to_unsigned(0, WORD_WIDTH))); SB_out.Push("0" & std_logic_vector(to_unsigned(0, WORD_WIDTH)));
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 17(P1E1)/0,34
wait_on_idle; wait_on_idle;
Log("Current Time: 7 s", INFO); Log("Current Time: 7 s", INFO);
@ -411,23 +422,22 @@ begin
endpoint := e0; endpoint := e0;
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push("0" & std_logic_vector(to_unsigned(1, WORD_WIDTH))); SB_out.Push("0" & std_logic_vector(to_unsigned(1, WORD_WIDTH)));
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE -/17,0,34
stim_done <= '1'; stim_done <= '1';
wait_on_completion; wait_on_completion;

View File

@ -107,6 +107,7 @@ begin
alias mem_op_done is <<signal uut.mem_op_done : std_logic>>; alias mem_op_done is <<signal uut.mem_op_done : std_logic>>;
alias idle_sig is <<signal uut.idle_sig : std_logic>>; alias idle_sig is <<signal uut.idle_sig : std_logic>>;
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
@ -261,6 +262,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,17,34
Log("Current Time: 0 s", INFO); Log("Current Time: 0 s", INFO);
wait until rising_edge(clk); wait until rising_edge(clk);
@ -275,10 +277,12 @@ begin
wait_on_meta_sent; wait_on_meta_sent;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 0(P0E0)/17,34
Log("Insert Endpoint 1 Participant 1", INFO); Log("Insert Endpoint 1 Participant 1", INFO);
endpoint := e1; endpoint := e1;
@ -290,10 +294,12 @@ begin
wait_on_meta_sent; wait_on_meta_sent;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 17(P1E1),0(P0E0)/34
Log("Insert Endpoint 2 Participant 2", INFO); Log("Insert Endpoint 2 Participant 2", INFO);
endpoint := e2; endpoint := e2;
@ -305,10 +311,12 @@ begin
wait_on_meta_sent; wait_on_meta_sent;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 50, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 1 s", INFO); Log("Current Time: 1 s", INFO);
@ -334,6 +342,7 @@ begin
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 2 s", INFO); Log("Current Time: 2 s", INFO);
@ -347,6 +356,7 @@ begin
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 3 s", INFO); Log("Current Time: 3 s", INFO);
@ -368,6 +378,7 @@ begin
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),17(P1E1),0(P0E0)/-
wait_on_idle; wait_on_idle;
Log("Current Time: 5 s", INFO); Log("Current Time: 5 s", INFO);
@ -382,7 +393,6 @@ begin
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := MATCH; endpoint.match := MATCH;
@ -391,10 +401,12 @@ begin
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 17, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2),0(P0E0)/17
wait_on_idle; wait_on_idle;
Log("Current Time: 6 s", INFO); Log("Current Time: 6 s", INFO);
@ -405,11 +417,9 @@ begin
endpoint := e0; endpoint := e0;
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := MATCH; endpoint.match := MATCH;
@ -418,10 +428,12 @@ begin
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 0, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE 34(P2E2)/0,17
wait_on_idle; wait_on_idle;
Log("Current Time: 8 s", INFO); Log("Current Time: 8 s", INFO);
@ -432,23 +444,22 @@ begin
endpoint := e0; endpoint := e0;
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e1; endpoint := e1;
endpoint.nr := 1; endpoint.nr := 1;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
endpoint := e2; endpoint := e2;
endpoint.nr := 2; endpoint.nr := 2;
endpoint.match := UNMATCH; endpoint.match := UNMATCH;
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
SB_out.Push("0" & std_logic_vector(to_unsigned(2, WORD_WIDTH))); SB_out.Push("0" & std_logic_vector(to_unsigned(2, WORD_WIDTH)));
wait_on_out_check; wait_on_out_check;
mem_check <= '1'; mem_check <= '1';
wait_on_mem_check; wait_on_mem_check;
AlertIf(empty_head /= 34, "Memory Empty List Head incorrect", FAILURE);
mem_check <= '0'; mem_check <= '0';
stimulus_meta := EMPTY_TEST_PACKET; stimulus_meta := EMPTY_TEST_PACKET;
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
-- MEMORY STATE -/34,0,17
stim_done <= '1'; stim_done <= '1';
wait_on_completion; wait_on_completion;

File diff suppressed because it is too large Load Diff

View File

@ -24,9 +24,9 @@ package rtps_test_package is
-- rtps_discovery_module Participant Frame Size -- rtps_discovery_module Participant Frame Size
constant PARTICIPANT_FRAME_SIZE : natural := 24; constant PARTICIPANT_FRAME_SIZE : natural := 24;
-- rtps_reader Endpoint Frame Size (RELIABLE=TRUE) -- rtps_reader Endpoint Frame Size (RELIABLE=TRUE)
constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 14; constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 17;
-- rtps_reader Endpoint Frame Size (RELIABLE=FALSE) -- rtps_reader Endpoint Frame Size (RELIABLE=FALSE)
constant WRITER_ENDPOINT_FRAME_SIZE_B : natural := 10; constant WRITER_ENDPOINT_FRAME_SIZE_B : natural := 13;
-- rtps_writer Endpoint Frame Size (RELIABLE=TRUE) -- rtps_writer Endpoint Frame Size (RELIABLE=TRUE)
constant READER_ENDPOINT_FRAME_SIZE_A : natural := 17; constant READER_ENDPOINT_FRAME_SIZE_A : natural := 17;
-- rtps_writer Endpoint Frame Size (RELIABLE=FALSE) -- rtps_writer Endpoint Frame Size (RELIABLE=FALSE)