Change memory format of rtps_reader to use double linked list
This commit is contained in:
parent
1e2a835c02
commit
76824037d1
@ -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}
|
||||||
|
|||||||
@ -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
|
||||||
------
|
------
|
||||||
|
|||||||
@ -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);
|
||||||
@ -201,7 +204,8 @@ begin
|
|||||||
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;
|
||||||
@ -213,7 +217,8 @@ begin
|
|||||||
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;
|
||||||
@ -225,7 +230,8 @@ begin
|
|||||||
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;
|
||||||
@ -248,20 +254,21 @@ begin
|
|||||||
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;
|
||||||
@ -273,29 +280,29 @@ begin
|
|||||||
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;
|
||||||
@ -307,7 +314,8 @@ begin
|
|||||||
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
|
||||||
@ -336,7 +344,8 @@ begin
|
|||||||
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;
|
||||||
@ -350,9 +359,8 @@ begin
|
|||||||
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;
|
||||||
|
|||||||
@ -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);
|
||||||
@ -201,7 +204,8 @@ begin
|
|||||||
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;
|
||||||
@ -213,7 +217,8 @@ begin
|
|||||||
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;
|
||||||
@ -225,7 +230,8 @@ begin
|
|||||||
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;
|
||||||
@ -248,20 +254,21 @@ begin
|
|||||||
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;
|
||||||
@ -273,29 +280,29 @@ begin
|
|||||||
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;
|
||||||
@ -307,7 +314,8 @@ begin
|
|||||||
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
|
||||||
@ -336,7 +344,8 @@ begin
|
|||||||
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;
|
||||||
@ -350,7 +359,8 @@ begin
|
|||||||
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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
1086
src/rtps_reader.vhd
1086
src/rtps_reader.vhd
File diff suppressed because it is too large
Load Diff
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user