Rename rtps_builtin_endpoint to rtps_discovery_module

This commit is contained in:
Greek 2022-01-16 18:12:11 +01:00
parent e0280ea490
commit 59bff52832
28 changed files with 427 additions and 410 deletions

View File

@ -9,7 +9,7 @@
|DDS Writer|->|RTPS Writer|<-+->|RTPS Handler|<-->|RTPS Handler|<-+->|RTPS Reader|->|DDS Reader|
+----------+ +-----------+ | +------------+ +------------+ | +-----------+ +----------+
+---------------------+ | | +---------------------+
|RTPS Builtin Endpoint|<-+ +->|RTPS Builtin Endpoint|
|RTPS Discovery Module|<-+ +->|RTPS Discovery Module|
+---------------------+ +---------------------+
@ -20,8 +20,8 @@
+----------+ +-----------+ | | | | +-----------+ +----------+
+---------------------+ | | | | +---------------------+
| |<-+ | +-|--| |
|RTPS Builtin Endpoint| | +------------+ +------------+ | |RTPS Builtin Endpoint|
|RTPS Discovery Module| | +------------+ +------------+ | |RTPS Discovery Module|
| |----+->| RTPS OUT |--->|RTPS Handler|----+->| |
+---------------------+ +------------+ +------------+ +---------------------+
TODO: RTPS Reader/Writer and RTPS Builtin Endpoint Interconnection
TODO: RTPS Reader/Writer and RTPS Discovery Module Interconnection

View File

@ -106,7 +106,7 @@ ENDPOINT PACKET FORMAT
+---------------------------------------------------------------+
| SRC_ENTITYID |
+---------------------------------------------------------------+
| DEST_ENTITYID [only for Builtin Destinations] |
| DEST_ENTITYID [only for Discovery Module] |
+---------------------------------------------------------------+
| |
+ Sequence Number [only for DATA Submessage] +
@ -114,7 +114,7 @@ ENDPOINT PACKET FORMAT
+---------------------------------------------------------------+
| |
+ Timestamp +
| [only for DATA Submessage and User Destinations] |
| [only for DATA Submessage and RTPS Endpoints] |
+---------------------------------------------------------------+
| |
~ PAYLOAD (SUBMESSAGE CONTENT) ~
@ -182,8 +182,8 @@ ENDPOINT_ID
0...MAX_ENDPOINTS
READERS...WRITERS
BUILT-IN ENDPOINTS
==================
DISCOVERY MODULE
================
2.2.5 Built-In Topics
The QoS of the built-in Subscriber and DataReader objects is given by the following table:
@ -334,8 +334,8 @@ ENDPOINT LIVELINESS UPDATE
03| |
+---------------------------------------------------------------+
LOCAL ENDPOINT BUFFER
=====================
RTPS ENDPOINT
=============
READER
------
@ -421,8 +421,8 @@ Q...Reader expects in-line QoS
H...Reader expects Historical Data
B...Reader has RELIABILITY BEST_EFFORT
HISTORY CACHE
=============
DDS ENDPOINT
============
READER
------
@ -849,6 +849,11 @@ space available to store the modification, the writer is allowed to block.
If after that, the application wants to modify (write or dispose) the instance, it has to register it again,
or else use the special handle value HANDLE_NIL.
2.2.2.5.5 SampleInfo CLass (DDS)
The publication_handle that identifies locally the DataWriter that modified the instance. The publication_handle is the
same InstanceHandle_t that is returned by the operation get_matched_publications on the DataReader and can also
be used as a parameter to the DataReader operation get_matched_publication_data.
INVALIDATION
============

View File

@ -60,17 +60,17 @@ architecture arch of dds_top is
type DURATION_WARRAY_TYPE is array (0 to NUM_WRITERS-1) of DURATION_TYPE;
signal full_fire_rh, write_rh_fire : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_rh_fire, data_rh_firb : std_logic_vector(WORD_WIDTH downto 0);
signal full_firb_rh, write_rh_firb : std_logic;
signal read_rb_firb, empty_firb_rb : std_logic;
signal data_firb_rb : std_logic_vector(WORD_WIDTH downto 0);
signal data_rh_fire, data_rh_fidm : std_logic_vector(WORD_WIDTH downto 0);
signal full_fidm_rh, write_rh_fidm : std_logic;
signal read_dm_fidm, empty_fidm_dm : std_logic;
signal data_fidm_dm : std_logic_vector(WORD_WIDTH downto 0);
signal read_re_fire, empty_fire_re : std_logic_vector(0 to NUM_ENDPOINTS);
signal data_fire_re : EARRAY_DATA_TYPE;
signal alive_re_rb, full_frbre_re, write_rb_frbre : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_rb_frbre , data_rb_firo : std_logic_vector(WORD_WIDTH downto 0);
signal full_firo_rb, write_rb_firo : std_logic;
signal empty_frbre_re, read_re_frbre : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_frbre_re : EARRAY_DATA_TYPE;
signal alive_re_dm, full_fdmre_re, write_dm_fdmre : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_dm_fdmre , data_dm_firo : std_logic_vector(WORD_WIDTH downto 0);
signal full_firo_dm, write_dm_firo : std_logic;
signal empty_fdmre_re, read_re_fdmre : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_fdmre_re : EARRAY_DATA_TYPE;
signal full_firo_re, write_re_firo : std_logic_vector(0 to NUM_ENDPOINTS-1);
signal data_re_firo : EARRAY_DATA_TYPE;
signal start_rr_dr, ack_dr_rr, done_dr_rr, valid_rr_dr, ready_dr_rr : std_logic_vector(0 to NUM_READERS-1);
@ -127,20 +127,20 @@ begin
empty => empty,
rd => read,
data_in => data_in,
-- TO BUILTIN ENDPOINT
full_be => full_firb_rh,
wr_be => write_rh_firb,
data_out_be => data_rh_firb(WORD_WIDTH-1 downto 0),
last_word_out_be => data_rh_firb(WORD_WIDTH),
-- TO DISCOVERY MODULE
full_dm => full_fidm_rh,
wr_dm => write_rh_fidm,
data_out_dm => data_rh_fidm(WORD_WIDTH-1 downto 0),
last_word_out_dm => data_rh_fidm(WORD_WIDTH),
-- TO USER ENDPOINTS
full_ue => full_fire_rh,
wr_ue => write_rh_fire,
data_out_ue => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rh_fire(WORD_WIDTH)
full_rtps => full_fire_rh,
wr_rtps => write_rh_fire,
data_out_rtps => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_rh_fire(WORD_WIDTH)
);
fifo_in_rb_inst : configuration work.FWFT_FIFO_cfg
fifo_in_dm_inst : configuration work.FWFT_FIFO_cfg
generic map (
FIFO_DEPTH => 2,
DATA_WIDTH => WORD_WIDTH+1
@ -150,13 +150,13 @@ begin
reset => reset,
clk => clk,
-- INPUT
full => full_firb_rh,
write => write_rh_firb,
data_in => data_rh_firb,
full => full_fidm_rh,
write => write_rh_fidm,
data_in => data_rh_fidm,
-- OUTPUT
empty => empty_firb_rb,
read => read_rb_firb,
data_out => data_firb_rb,
empty => empty_fidm_dm,
read => read_dm_fidm,
data_out => data_fidm_dm,
-- MISC
free => open
);
@ -186,7 +186,7 @@ begin
end generate;
rtps_builtin_endpoint_inst : entity work.rtps_builtin_endpoint(arch)
rtps_discovery_module_inst : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS
)
@ -195,27 +195,27 @@ begin
reset => reset,
time => time,
-- FROM RTPS HANDLER
empty => empty_firb_rb,
rd => read_rb_firb,
data_in => data_firb_rb(WORD_WIDTH-1 downto 0),
last_word_in => data_firb_rb(WORD_WIDTH),
-- FROM USER ENDPOINTS
alive => alive_re_rb,
-- TO USER ENDPOINTS
full_ue => full_frbre_re,
wr_ue => write_rb_frbre,
data_out_ue => data_rb_frbre(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rb_frbre(WORD_WIDTH),
empty => empty_fidm_dm,
rd => read_dm_fidm,
data_in => data_fidm_dm(WORD_WIDTH-1 downto 0),
last_word_in => data_fidm_dm(WORD_WIDTH),
-- FROM RTPS ENDPOINTS
alive => alive_re_dm,
-- TO RTPS ENDPOINTS
full_rtps => full_fdmre_re,
wr_rtps => write_dm_fdmre,
data_out_rtps => data_dm_fdmre(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_dm_fdmre(WORD_WIDTH),
-- TO RTPS OUT
full_ro => full_firo_rb,
wr_ro => write_rb_firo,
data_out_ro => data_rb_firo(WORD_WIDTH-1 downto 0),
last_word_out_ro => data_rb_firo(WORD_WIDTH)
full_ro => full_firo_dm,
wr_ro => write_dm_firo,
data_out_ro => data_dm_firo(WORD_WIDTH-1 downto 0),
last_word_out_ro => data_dm_firo(WORD_WIDTH)
);
fifo_rb_re_gen : for i in 0 to NUM_ENDPOINTS-1 generate
fifo_rb_re_inst : configuration work.FWFT_FIFO_cfg
fifo_dm_re_gen : for i in 0 to NUM_ENDPOINTS-1 generate
fifo_dm_re_inst : configuration work.FWFT_FIFO_cfg
generic map (
FIFO_DEPTH => 2,
DATA_WIDTH => WORD_WIDTH+1
@ -225,13 +225,13 @@ begin
reset => reset,
clk => clk,
-- INPUT
full => full_frbre_re(i),
write => write_rb_frbre(i),
data_in => data_rb_frbre, -- Multicast
full => full_fdmre_re(i),
write => write_dm_fdmre(i),
data_in => data_dm_fdmre, -- Multicast
-- OUTPUT
empty => empty_frbre_re(i),
read => read_re_frbre(i),
data_out => data_frbre_re(i),
empty => empty_fdmre_re(i),
read => read_re_fdmre(i),
data_out => data_fdmre_re(i),
-- MISC
free => open
);
@ -262,11 +262,11 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_frbre_re(i)(WORD_WIDTH),
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_fdmre_re(i),
rd_meta => read_re_fdmre(i),
data_in_meta => data_fdmre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_fdmre_re(i)(WORD_WIDTH),
-- RTPS OUTPUT
full_ro => full_firo_re(i),
wr_ro => write_re_firo(i),
@ -285,7 +285,7 @@ begin
);
-- Set Alive Signals of Readers to Zero
alive_re_rb(i) <= ('0');
alive_re_dm(i) <= ('0');
else generate
rtps_writer_inst : entity work.rtps_writer(arch)
generic map (
@ -313,13 +313,13 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_frbre_re(i)(WORD_WIDTH),
-- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
alive_sig => alive_re_rb(i),
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_fdmre_re(i),
rd_meta => read_re_fdmre(i),
data_in_meta => data_fdmre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_fdmre_re(i)(WORD_WIDTH),
-- TO DISCOVERY MODULE (META TRAFFIC)
alive_sig => alive_re_dm(i),
-- RTPS OUTPUT
full_ro => full_firo_re(i),
wr_ro => write_re_firo(i),
@ -495,9 +495,9 @@ begin
reset => reset,
clk => clk,
-- INPUT
full => full_firo_rb,
write => write_rb_firo,
data_in => data_rb_firo,
full => full_firo_dm,
write => write_dm_firo,
data_in => data_dm_firo,
-- OUTPUT
empty => empty_firo_ro(i),
read => read_ro_firo(i),

View File

@ -86,18 +86,19 @@
* Does TIME_BASED_FILTER also apply to meta-samples (DISPOSED, NO_WRITERS)? That is an easy way to not get convergent state in different DDS Readers. What do other implementations do?
* The Participant GUID of the ParticipantMessageData is theoretically not needed, since it is the same as the source GUID of the Packet. This is done, so that the ParticipantMessageData has a key and can be decrypted as every other DATA Message. Our implementation checks if it is the expected GUID and drops it otherwise.
- see (https://issues.omg.org/issues/DDSIRTP21-4)
* The RTPS Builtin Endpoint skips a Packet it doesn't understand. The RTPS Builtin Endpoint does not parse "serialized key" of DATA messages (since the specification does not actually define what the serialized key even is). So a SPDP DATA Packet with in-line QoS (PID_STATUS_INFO) and serialized key will be dropped if the RTPS Builtin Endpoint does not know the GUID, and that may stall the whole process pipeline (since the SN will be never acknowledged)
* The Discovery Module skips a Packet it doesn't understand. The Discovery Module does not parse "serialized key" of DATA messages (since the specification does not actually define what the serialized key even is). So a SPDP DATA Packet with in-line QoS (PID_STATUS_INFO) and serialized key will be dropped if the Discovery Module does not know the GUID, and that may stall the whole process pipeline (since the SN will be never acknowledged)
* Is the parameter header of an optional member in CDR_LE also endian swapped?
- Yes. (See Figure 24, 7.4.1.2.1, DDS-XTYPES 1.3)
* Based on the examples given in 7.6.8 DDS-XTYPES v1.3 specification it seems that the string bounds do not count the NUL byte.
- Under close inspection the IDL 4.2 specification states under 7.4.1.4.4.3.2
"IDL defines the string type string consisting of a list of all possible 8-bit quantities except null."
Which means that the bound of a bounded string does not count the NUL byte.
* Currently we use one rtps_builtin_endpoint per participant. Meaning that if we want to compile 2 seperate participants we have to actually compile 2 different systems (e.g. in seperate Libraries for testing).
It would make sense to remove this restriction, rename the rtps_builtin_endpoint to something more generic like "discovery_module", and allow a way to set participant boundaries.
* Currently we use one rtps_discovery_module per participant. Meaning that if we want to compile 2 seperate participants we have to actually compile 2 different systems (e.g. in seperate Libraries for testing).
It would make sense to remove this restriction, rename the rtps_discovery_module to something more generic like "discovery_module", and allow a way to set participant boundaries.
* Convert ROS MSG and SRV files to IDL files
ros2 run rosidl_adapter msg2idl.py *.msg
ros2 run rosidl_adapter srv2idl.py *.srv
* The publication_handle of the DDS Specification (e.g. the one returned in the Sample Info) is an implementation specific ID that can identify local and remote DDS Entities LOCALY.
* Fast-RTPS does not follow DDSI-RTPS Specification
- Open Github Issue
@ -200,7 +201,7 @@ DESIGN DECISIONS
- Writer Endpoints fill the fields with the reference index as placeholder, and a seperate Entity will access the central memory and replace the actual values
The Second option was chosen (Less resources)
RTPS Handler should lookup received message GUID in central memory (The lookup should happen in parallel with the actual message handling):
- If not stored, and messegae not for Built-in ENdpoints, drop message
- If not stored, and message not for Discovery Module, drop message
- If in memory, replace with refernece index
The central memory is accessd by 3 Entities:
- RTPS Handler (READ, GUID Lookup)
@ -208,9 +209,9 @@ DESIGN DECISIONS
- Discovery Module (WRITE, GUID Save) [Need initial Lookup? RTPS Handler should have already handled it. How does DM know if actual GUID or reference index?]
Use a 2-port RAM with an arbiter for READ operations (Give Placeholder Handler priority to prevent DoS starvation)
* !REJECTED! (Use the unused extra flags in the stored participant data)
Use the lowest bit of the Heartbeat/Acknack Deadline stored in the Participant Data to differentiate
* Use the lowest bit of the Heartbeat/Acknack Deadline stored in the Participant Data to differentiate
between Delay and Suppression. This reduces the resolution from 0.23 ns to 0.47 ns
(A previous version was using the unused extra flags in the stored participant data)
* Originally we stored the mask of local matching endpoints in the memory frame of the remote endpoint
in order to be able to send MATCH frames only to new matches, and UNMATCH frames only to previously
@ -269,7 +270,7 @@ DESIGN DECISIONS
through the whole memory. Originally the memory was to be implemented in a true dual port fashion,
and two seperate procoesses would each satisfy the requests from one input side. This would allow
concurrent RTPS and DDS requests to be handled. The write concurrency (add and remove change) does
not allow for state keeping (first empty slot address), since it is reset by the "adding" side, by
not allow for state keeping (first empty slot address), since it is reset by the "adding" side, but
set by the "removing" side. Because of this, it was decided against concurrent input handling in
light of the fact that the history cache will be most commonly quite large in size, and iterating
through all...
@ -413,12 +414,23 @@ DESIGN DECISIONS
This means that a Reliable RTPS Writer in PUSH_MODE = FALSE cannot communicate with Best Effort Readers.
Historical Data is also only sent out on request (But NACKed in the HC, until the remote Reader ACKs them).
BRAINSTORMING
-------------
* Add all Participant specific configuration into a generic array (maybe array of record?) and modify the
discovery module to be centric to ALL participants. That means that the Participant Memory will
contain ALL remortely matched participants (even if they are matched only be 1 local participant).
The discovery module will also need to differentiate between the local participants for replies
(Parse RTPPS GUID and set local array index).
The port interface of the discovery module will not change, meaning that ALL the endpoints of all the
local participants will be flattened into one array for communication purposes (Maybe define "static"
demangle package function?).
PROTOCOL UNCOMPLIANCE
=====================
* Partition QoS Not Supported
* Coherent Sets Not Supported
* Built-in Endpoint is NOT the same as a normal Endpoint
* Built-in Endpoints (of Discovery Module) is NOT the same as a normal Endpoint
-> No User access to Data
* Known but unused Submessage IDs are treated as uknown
-> No validity check

View File

@ -11,7 +11,7 @@ use work.rtps_config_package.all;
use work.rtps_test_package.all;
-- This testbench tests the matching of remote participants. Due to the fact, that participant matching does not have an immediate effect visible to the outside,
-- this testbench is using external names to access the memory of the rtps_builtin_endpoint directly and check the contents at the supposed participant locations.
-- this testbench is using external names to access the memory of the rtps_discovery_module directly and check the contents at the supposed participant locations.
-- This testbench covers following:
-- * Mathing compatible Participants
-- * Ignoring incompatible Participants
@ -23,10 +23,10 @@ use work.rtps_test_package.all;
-- * PREFER_MULTICAST = TRUE
entity L0_rtps_builtin_endpoint_test1_mc is
entity L0_rtps_discovery_module_test1_mc is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test1_mc is
architecture testbench of L0_rtps_discovery_module_test1_mc is
-- *CONSTANT DECLARATION*
constant MAX_REMOTE_PARTICIPANTS : natural := 3;
@ -36,16 +36,16 @@ architecture testbench of L0_rtps_builtin_endpoint_test1_mc is
type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1'; --TODO: Do that in all testbenches
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
shared variable SB_mem : work.ScoreBoardPkg_MemoryTest.ScoreBoardPType;
signal stim_done, mem_check_done, check_done, test_done : std_logic := '0';
@ -72,7 +72,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test1_mc is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS,
PREFER_MULTICAST => TRUE
@ -90,10 +90,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -142,7 +142,7 @@ begin
end procedure;
begin
SetAlertLogName("rtps_builtin_endpoint - Level 0 - (Prefer Multicast) - Participant Matching");
SetAlertLogName("rtps_discovery_module - Level 0 - (Prefer Multicast) - Participant Matching");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -623,10 +623,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -634,7 +634,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -673,8 +673,8 @@ begin
output_check_prc : process(all)
begin
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -11,7 +11,7 @@ use work.rtps_config_package.all;
use work.rtps_test_package.all;
-- This testbench tests the matching of remote participants. Due to the fact, that participant matching does not have an immediate effect visible to the outside,
-- this testbench is using external names to access the memory of the rtps_builtin_endpoint directly and check the contents at the supposed participant locations.
-- this testbench is using external names to access the memory of the rtps_discovery_module directly and check the contents at the supposed participant locations.
-- This testbench covers following:
-- * Mathing compatible Participants
-- * Ignoring incompatible Participants
@ -23,10 +23,10 @@ use work.rtps_test_package.all;
-- * PREFER_MULTICAST = FALSE
entity L0_rtps_builtin_endpoint_test1_uc is
entity L0_rtps_discovery_module_test1_uc is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test1_uc is
architecture testbench of L0_rtps_discovery_module_test1_uc is
-- *CONSTANT DECLARATION*
constant MAX_REMOTE_PARTICIPANTS : natural := 3;
@ -36,16 +36,16 @@ architecture testbench of L0_rtps_builtin_endpoint_test1_uc is
type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1'; --TODO: Do that in all testbenches
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
shared variable SB_mem : work.ScoreBoardPkg_MemoryTest.ScoreBoardPType;
signal stim_done, mem_check_done, check_done, test_done : std_logic := '0';
@ -72,7 +72,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test1_uc is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS
)
@ -89,10 +89,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -141,7 +141,7 @@ begin
end procedure;
begin
SetAlertLogName("rtps_builtin_endpoint - Level 0 - (Prefer Unicast) - Participant Matching");
SetAlertLogName("rtps_discovery_module - Level 0 - (Prefer Unicast) - Participant Matching");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -605,10 +605,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -616,7 +616,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -655,8 +655,8 @@ begin
output_check_prc : process(all)
begin
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -97,26 +97,26 @@ use work.rtps_test_package.all;
-- The testbench also tests endpoint unmatching by Unregister/Dispose Status Updates.
entity L0_rtps_builtin_endpoint_test2 is
entity L0_rtps_discovery_module_test2 is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test2 is
architecture testbench of L0_rtps_discovery_module_test2 is
-- *TYPE DECLARATION*
type TEST_STAGE_TYPE is (IDLE, BUSY);
type MATCH_MATRIX_TYPE is array (0 to NUM_WRITERS-1) of std_logic_vector(0 to NUM_READERS-1);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1';
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
signal MATCH_MATRIX : MATCH_MATRIX_TYPE := (others => (others => '0'));
signal stim_done, check_done : std_logic := '0';
@ -144,7 +144,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test2 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => 3
)
@ -161,10 +161,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -252,7 +252,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 0 - Endpoint Matching");
SetAlertLogName("rtps_discovery_module - Level 0 - Endpoint Matching");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -917,10 +917,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -928,7 +928,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -968,8 +968,8 @@ begin
begin
check_done <= '0';
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB.empty) then
check_done <= '1';

View File

@ -11,7 +11,7 @@ use work.rtps_config_package.all;
use work.rtps_test_package.all;
-- This testbench tests the input handling of parameter lists. We issue one parameter list with invalid parameter length (less than expected)
-- and one with valid larger parameter length (extra Bytes after expected parameter end) for each of the parameters that are handled by the built-in endpoint by checking if the Participant/Endpoint matched.
-- and one with valid larger parameter length (extra Bytes after expected parameter end) for each of the parameters that are handled by the Discovery Module by checking if the Participant/Endpoint matched.
-- (We also issue a parameter list that is missing its sentinel)
-- Particpant matches are checked by memory content, and Endpoint matches by the generated match frame.
-- The PIDs handled are:
@ -43,10 +43,10 @@ use work.rtps_test_package.all;
-- * PID_KEY_HASH
-- * PID_STATUS_INFO
entity L0_rtps_builtin_endpoint_test3 is
entity L0_rtps_discovery_module_test3 is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test3 is
architecture testbench of L0_rtps_discovery_module_test3 is
-- *CONSTANT DECLARATION*
constant MAX_REMOTE_PARTICIPANTS : natural := 11;
@ -56,16 +56,16 @@ architecture testbench of L0_rtps_builtin_endpoint_test3 is
type TEST_STAGE_TYPE is (IDLE, BUSY);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1';
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
shared variable SB_mem : work.ScoreBoardPkg_MemoryTest.ScoreBoardPType;
signal stim_done, check_done, mem_check_done, test_done : std_logic := '0';
@ -92,7 +92,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test3 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS
)
@ -109,10 +109,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -193,7 +193,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 0 - Input Handling");
SetAlertLogName("rtps_discovery_module - Level 0 - Input Handling");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -1315,10 +1315,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -1326,7 +1326,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -1365,8 +1365,8 @@ begin
output_check_prc : process(all)
begin
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -12,10 +12,10 @@ use work.rtps_test_package.all;
-- This testbench tests the SequenceNumber, HEARTBEAT, and GAP handling of the Participant, Subscriber, Publisher, and ParticipantMessage DATA Submessages.
entity L0_rtps_builtin_endpoint_test4 is
entity L0_rtps_discovery_module_test4 is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test4 is
architecture testbench of L0_rtps_discovery_module_test4 is
-- *CONSTANT DECLARATION*
constant MAX_REMOTE_PARTICIPANTS : natural := 1;
@ -25,16 +25,16 @@ architecture testbench of L0_rtps_builtin_endpoint_test4 is
type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1';
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
shared variable SB_mem : work.ScoreBoardPkg_MemoryTest.ScoreBoardPType;
signal stim_done, mem_check_done, check_done, test_done : std_logic := '0';
@ -69,7 +69,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test4 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS
)
@ -86,10 +86,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -186,7 +186,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 0 - Sequence Number Handling");
SetAlertLogName("rtps_discovery_module - Level 0 - Sequence Number Handling");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -1774,10 +1774,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -1785,7 +1785,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -1824,8 +1824,8 @@ begin
output_check_prc : process(all)
begin
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -10,15 +10,15 @@ use work.user_config.all;
use work.rtps_config_package.all;
use work.rtps_test_package.all;
-- This testbench tests the stale participant handling of the rtps_builtin_endpoint. It does so by checking for the Participant Unmatch Frame.
-- This testbench tests the stale participant handling of the rtps_discovery_module. It does so by checking for the Participant Unmatch Frame.
-- It first matches 3 Participants: Participant 0 with default lease duration 100s, Participant 1 with lease duration 10s, and Participant 2 with lease duration 30s.
-- After matching the time is artificially progressed to 15s (from 0s), and the removal of Participant 1 is checked. Than the time is again artificially progressed to 101s
-- and the removal of Participant 0 and 2 is checked (in that order).
entity L0_rtps_builtin_endpoint_test5 is
entity L0_rtps_discovery_module_test5 is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test5 is
architecture testbench of L0_rtps_discovery_module_test5 is
-- *CONSTANT DECLARATION*
constant MAX_REMOTE_PARTICIPANTS : natural := 3;
@ -28,16 +28,16 @@ architecture testbench of L0_rtps_builtin_endpoint_test5 is
type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1';
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
signal stim_done, check_done, test_done : std_logic := '0';
signal test_time : TIME_TYPE := TIME_ZERO;
@ -65,7 +65,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test5 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS
)
@ -82,10 +82,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -163,7 +163,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 0 - Stale Participant Handling");
SetAlertLogName("rtps_discovery_module - Level 0 - Stale Participant Handling");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -308,10 +308,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -319,7 +319,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -358,8 +358,8 @@ begin
output_check_prc : process(all)
begin
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -14,25 +14,25 @@ use work.rtps_test_package.all;
-- The testbench matches 2 remote Participants, P0 and P1. P0 sends an automatic liveliness assertion, while P1 sends a manual liveliness assertion.
-- P0 also sends a manual liveliness assertion with extra Bytes.
entity L0_rtps_builtin_endpoint_test6 is
entity L0_rtps_discovery_module_test6 is
end entity;
architecture testbench of L0_rtps_builtin_endpoint_test6 is
architecture testbench of L0_rtps_discovery_module_test6 is
-- *TYPE DECLARATION*
type TEST_STAGE_TYPE is (IDLE, BUSY);
-- *SIGNAL DECLARATION*
signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0';
signal clk, in_empty, rd_sig, last_word_in, last_word_out_rtps: std_logic := '0';
signal reset : std_logic := '1';
signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal wr_rtps, full_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent : std_logic := '0';
signal cnt_stim : natural := 0;
signal start : std_logic := '0';
shared variable SB_out : work.ScoreBoardPkg_builtin_endpoint.ScoreBoardPType;
shared variable SB_out : work.ScoreBoardPkg_discovery_module.ScoreBoardPType;
signal stim_done, check_done, mem_check : std_logic := '0';
-- *FUNCTION DECLARATION*
@ -52,7 +52,7 @@ architecture testbench of L0_rtps_builtin_endpoint_test6 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => 2
)
@ -69,10 +69,10 @@ begin
-- FROM USER ENDPOINT
alive => (others => '0'),
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue,
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps,
-- RTPS OUTPUT
full_ro => '0',
wr_ro => open,
@ -120,7 +120,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 0 - Remote Liveliness Assertion Handling");
SetAlertLogName("rtps_discovery_module - Level 0 - Remote Liveliness Assertion Handling");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);
@ -285,10 +285,10 @@ begin
endpoint_full_prc : process
begin
full_ue <= (others => '0');
wait until (or wr_ue) = '1';
full_rtps <= (others => '0');
wait until (or wr_rtps) = '1';
wait until rising_edge(clk);
full_ue <= (others => '1');
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -296,7 +296,7 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -336,8 +336,8 @@ begin
begin
check_done <= '0';
if rising_edge(clk) then
if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_ue & last_word_out_ue & data_out_ue);
if (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
SB_out.Check(wr_rtps & last_word_out_rtps & data_out_rtps);
end if;
if (stim_done = '1' and SB_out.empty) then
check_done <= '1';

View File

@ -88,9 +88,9 @@ architecture testbench of L0_rtps_handler_test1 is
type TEST_STAGE_TYPE is (IDLE, BUSY);
-- *SIGNAL DECLARATION*
signal clk, reset, in_empty, rd_sig, full_be, wr_be, last_word_out_be, last_word_out_ue : std_logic := '0';
signal full_ue, wr_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_be, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal clk, reset, in_empty, rd_sig, full_dm, wr_dm, last_word_out_dm, last_word_out_rtps : std_logic := '0';
signal full_rtps, wr_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_dm, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage, ref_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent, packet_checked : std_logic := '0';
@ -118,16 +118,16 @@ begin
empty => in_empty or packet_sent,
rd => rd_sig,
data_in => data_in,
-- TO BUILTIN ENDPOINT
full_be => full_be,
wr_be => wr_be,
data_out_be => data_out_be,
last_word_out_be => last_word_out_be,
-- TO DISCOVERY MODULE
full_dm => full_dm,
wr_dm => wr_dm,
data_out_dm => data_out_dm,
last_word_out_dm => last_word_out_dm,
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps
);
stimulus_prc : process
@ -1506,20 +1506,20 @@ begin
fifo_ctl_prc : process
begin
in_empty <= '0';
full_be <= '0';
full_ue <= (others => '0');
full_dm <= '0';
full_rtps <= (others => '0');
wait until rising_edge(clk);
in_empty <= '1';
full_be <= '0';
full_ue <= (others => '0');
full_dm <= '0';
full_rtps <= (others => '0');
wait until rising_edge(clk);
in_empty <= '0';
full_be <= '1';
full_ue <= (others => '0');
full_dm <= '1';
full_rtps <= (others => '0');
wait until rising_edge(clk);
in_empty <= '0';
full_be <= '0';
full_ue <= (others => '1');
full_dm <= '0';
full_rtps <= (others => '1');
wait until rising_edge(clk);
end process;
@ -1527,8 +1527,8 @@ begin
begin
if rising_edge(clk) then
alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR);
alertif(full_be = '1' and wr_be = '1', "Builtin FIFO write signal high while full signal high", ERROR);
alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "User FIFO write signal high while full signal high", ERROR);
alertif(full_dm = '1' and wr_dm = '1', "DIscovery Module FIFO write signal high while full signal high", ERROR);
alertif(full_rtps /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')), "User FIFO write signal high while full signal high", ERROR);
end if;
end process;
@ -1586,11 +1586,11 @@ begin
when BUSY =>
if (cnt_ref = reference.length) then
ref_stage <= IDLE;
elsif (wr_be = '1') then
AffirmIfEqual(last_word_out_be & data_out_be, reference.last(cnt_ref) & reference.data(cnt_ref));
elsif (wr_dm = '1') then
AffirmIfEqual(last_word_out_dm & data_out_dm, reference.last(cnt_ref) & reference.data(cnt_ref));
cnt_ref <= cnt_ref + 1;
elsif (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
AffirmIfEqual(last_word_out_ue & data_out_ue, reference.last(cnt_ref) & reference.data(cnt_ref));
elsif (wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
AffirmIfEqual(last_word_out_rtps & data_out_rtps, reference.last(cnt_ref) & reference.data(cnt_ref));
cnt_ref <= cnt_ref + 1;
end if;
end case;

View File

@ -26,9 +26,9 @@ architecture testbench of L0_rtps_handler_test2 is
type TEST_STAGE_TYPE is (IDLE, BUSY);
-- *SIGNAL DECLARATION*
signal clk, reset, in_empty, rd_sig, full_be, wr_be, last_word_out_be, last_word_out_ue : std_logic := '0';
signal full_ue, wr_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_be, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal clk, reset, in_empty, rd_sig, full_dm, wr_dm, last_word_out_dm, last_word_out_rtps : std_logic := '0';
signal full_rtps, wr_rtps : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
signal data_in, data_out_dm, data_out_rtps : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0');
signal stim_stage, ref_stage : TEST_STAGE_TYPE := IDLE;
shared variable stimulus, dummy : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
signal packet_sent, packet_checked : std_logic := '0';
@ -57,16 +57,16 @@ begin
empty => in_empty or packet_sent,
rd => rd_sig,
data_in => data_in,
-- TO BUILTIN ENDPOINT
full_be => full_be,
wr_be => wr_be,
data_out_be => data_out_be,
last_word_out_be => last_word_out_be,
-- TO DISCOVERY MODULE
full_dm => full_dm,
wr_dm => wr_dm,
data_out_dm => data_out_dm,
last_word_out_dm => last_word_out_dm,
-- TO USER ENDPOINT
full_ue => full_ue,
wr_ue => wr_ue,
data_out_ue => data_out_ue,
last_word_out_ue => last_word_out_ue
full_rtps => full_rtps,
wr_rtps => wr_rtps,
data_out_rtps => data_out_rtps,
last_word_out_rtps => last_word_out_rtps
);
stimulus_prc : process
@ -119,8 +119,8 @@ begin
Log("Initiating Test", INFO);
in_empty <= '0';
full_be <= '0';
full_ue <= (others => '0');
full_dm <= '0';
full_rtps <= (others => '0');
start <= '0';
reset <= '1';
wait until rising_edge(clk);
@ -299,8 +299,8 @@ begin
when BUSY =>
if (cnt_ref = dummy.length) then
ref_stage <= IDLE;
elsif (wr_be = '1' or wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then
AffirmIfEqual((wr_ue & wr_be), reference);
elsif (wr_dm = '1' or wr_rtps /= (0 to NUM_ENDPOINTS-1 => '0')) then
AffirmIfEqual((wr_rtps & wr_dm), reference);
cnt_ref <= cnt_ref + 1;
end if;
end case;

View File

@ -10,7 +10,7 @@ use work.user_config.all;
use work.rtps_config_package.all;
use work.rtps_test_package.all;
-- This testbench tests the rtps output of the builtin endpoint (Local Liveliness Assertion, Local Heartbeat Generation, Local Participant Announcement, Remote HEARTBEAT Response, Remote ACKNACK Response).
-- This testbench tests the rtps output of the Discovery Module (Local Liveliness Assertion, Local Heartbeat Generation, Local Participant Announcement, Remote HEARTBEAT Response, Remote ACKNACK Response).
-- This test is a Level 1 Test (Meaning the input/output is not connected directly to the uut) in order to have output in the same format as the input of the system and allow us to compare using existing data generators.
-- The testflow is as follows:
-- * 0s
@ -73,10 +73,10 @@ use work.rtps_test_package.all;
-- - Liveliness Assertion (Auto only)
entity L1_rtps_builtin_endpoint_test1 is
entity L1_rtps_discovery_module_test1 is
end entity;
architecture testbench of L1_rtps_builtin_endpoint_test1 is
architecture testbench of L1_rtps_discovery_module_test1 is
-- *TYPE DECLARATION*
type TEST_STAGE_TYPE is (IDLE, BUSY);
@ -384,7 +384,7 @@ architecture testbench of L1_rtps_builtin_endpoint_test1 is
begin
-- Unit Under Test
uut : entity work.rtps_builtin_endpoint(arch)
uut : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => 1
)
@ -401,10 +401,10 @@ begin
-- FROM USER ENDPOINT
alive => alive,
-- TO USER ENDPOINT
full_ue => (others => '0'),
wr_ue => open,
data_out_ue => open,
last_word_out_ue => open,
full_rtps => (others => '0'),
wr_rtps => open,
data_out_rtps => open,
last_word_out_rtps => open,
-- RTPS OUTPUT
full_ro => fifo_full,
wr_ro => fifo_wr,
@ -507,7 +507,7 @@ begin
assert (TEST_STRING = "TEST_CONFIG_1") report "user_config incompatible with testbench." severity FAILURE;
SetAlertLogName("rtps_builtin_endpoint - Level 1 - RTPS Output");
SetAlertLogName("rtps_discovery_module - Level 1 - RTPS Output");
SetAlertEnable(FAILURE, TRUE);
SetAlertEnable(ERROR, TRUE);
SetAlertEnable(WARNING, TRUE);

View File

@ -213,12 +213,12 @@ begin
rd_user => rd_rh(0),
data_in_user => data_out_rh(0)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_out_rh(0)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_rtps(0),
rd_meta => rd_rtps(0),
data_in_meta => data_out_rtps(0)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_out_rtps(0)(WORD_WIDTH),
-- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- TO DISCOVERY MODULE (META TRAFFIC)
alive_sig => alive_sig_rtps(0),
-- RTPS OUTPUT
wr_ro => wr_rtps_out(0),
@ -245,7 +245,7 @@ begin
cc_seq_nr => cc_seq_nr_dds_rtps
);
rtps_builtin_endpoint_w_inst : entity Testbench_Lib2.rtps_builtin_endpoint(arch)
rtps_discovery_module_w_inst : entity Testbench_Lib2.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => 5,
PREFER_MULTICAST => PREFER_MULTICAST_LOCATORS
@ -262,10 +262,10 @@ begin
-- FROM USER ENDPOINTS
alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1),
-- TO USER ENDPOINTS
full_ue => full_rtps(0 to NUM_ENDPOINTS-1),
wr_ue => wr_rtps(0 to NUM_ENDPOINTS-1),
data_out_ue => data_out_rbe,
last_word_out_ue => last_word_out_rbe,
full_rtps => full_rtps(0 to NUM_ENDPOINTS-1),
wr_rtps => wr_rtps(0 to NUM_ENDPOINTS-1),
data_out_rtps => data_out_rbe,
last_word_out_rtps => last_word_out_rbe,
-- TO RTPS OUT
full_ro => full_rtps_out(NUM_ENDPOINTS),
wr_ro => wr_rtps_out(NUM_ENDPOINTS),
@ -284,16 +284,16 @@ begin
empty => empty,
rd => rd,
data_in => data_in,
-- TO RTPS BUILTIN ENDPOINT
full_be => full_rh(NUM_ENDPOINTS),
wr_be => wr_rh(NUM_ENDPOINTS),
data_out_be => data_out_rh_be_s,
last_word_out_be => last_word_out_rh_be_s,
-- TO RTPS DISCOVERY MODULE
full_dm => full_rh(NUM_ENDPOINTS),
wr_dm => wr_rh(NUM_ENDPOINTS),
data_out_dm => data_out_rh_be_s,
last_word_out_dm => last_word_out_rh_be_s,
-- TO RTPS ENDPOINT
full_ue => full_rh(0 to NUM_ENDPOINTS-1),
wr_ue => wr_rh(0 to NUM_ENDPOINTS-1),
data_out_ue => data_out_rh_ue_s,
last_word_out_ue => last_word_out_rh_ue_s
full_rtps => full_rh(0 to NUM_ENDPOINTS-1),
wr_rtps => wr_rh(0 to NUM_ENDPOINTS-1),
data_out_rtps => data_out_rh_ue_s,
last_word_out_rtps => last_word_out_rh_ue_s
);
data_in_rh <= (NUM_ENDPOINTS => (last_word_out_rh_be_s & data_out_rh_be_s), others => (last_word_out_rh_ue_s & data_out_rh_ue_s));

View File

@ -280,7 +280,7 @@ begin
rd_user => rd_rh(0),
data_in_user => data_out_rh(0)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_out_rh(0)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_rtps(0),
rd_meta => rd_rtps(0),
data_in_meta => data_out_rtps(0)(WORD_WIDTH-1 downto 0),
@ -302,7 +302,7 @@ begin
last_word_out_hc => last_word_in_dds_rtps
);
rtps_builtin_endpoint_r_inst : entity Testbench_Lib3.rtps_builtin_endpoint(arch)
rtps_discovery_module_r_inst : entity Testbench_Lib3.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => 5,
PREFER_MULTICAST => PREFER_MULTICAST_LOCATORS
@ -319,10 +319,10 @@ begin
-- FROM USER ENDPOINTS
alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1),
-- TO USER ENDPOINTS
full_ue => full_rtps(0 to NUM_ENDPOINTS-1),
wr_ue => wr_rtps(0 to NUM_ENDPOINTS-1),
data_out_ue => data_out_rbe,
last_word_out_ue => last_word_out_rbe,
full_rtps => full_rtps(0 to NUM_ENDPOINTS-1),
wr_rtps => wr_rtps(0 to NUM_ENDPOINTS-1),
data_out_rtps => data_out_rbe,
last_word_out_rtps => last_word_out_rbe,
-- TO RTPS OUT
full_ro => full_rtps_out(NUM_ENDPOINTS),
wr_ro => wr_rtps_out(NUM_ENDPOINTS),
@ -341,16 +341,16 @@ begin
empty => empty,
rd => rd,
data_in => data_in,
-- TO RTPS BUILTIN ENDPOINT
full_be => full_rh(NUM_ENDPOINTS),
wr_be => wr_rh(NUM_ENDPOINTS),
data_out_be => data_out_rh_be_s,
last_word_out_be => last_word_out_rh_be_s,
-- TO DISCOVERY MODULE
full_dm => full_rh(NUM_ENDPOINTS),
wr_dm => wr_rh(NUM_ENDPOINTS),
data_out_dm => data_out_rh_be_s,
last_word_out_dm => last_word_out_rh_be_s,
-- TO RTPS ENDPOINT
full_ue => full_rh(0 to NUM_ENDPOINTS-1),
wr_ue => wr_rh(0 to NUM_ENDPOINTS-1),
data_out_ue => data_out_rh_ue_s,
last_word_out_ue => last_word_out_rh_ue_s
full_rtps => full_rh(0 to NUM_ENDPOINTS-1),
wr_rtps => wr_rh(0 to NUM_ENDPOINTS-1),
data_out_rtps => data_out_rh_ue_s,
last_word_out_rtps => last_word_out_rh_ue_s
);
data_in_rh <= (NUM_ENDPOINTS => (last_word_out_rh_be_s & data_out_rh_be_s), others => (last_word_out_rh_ue_s & data_out_rh_ue_s));

View File

@ -150,16 +150,16 @@ begin
empty => empty,
rd => read,
data_in => data_in,
-- TO BUILTIN ENDPOINT
full_be => full_firb_rh,
wr_be => write_rh_firb,
data_out_be => data_rh_firb(WORD_WIDTH-1 downto 0),
last_word_out_be => data_rh_firb(WORD_WIDTH),
-- TO DISCOVERY MODULE
full_dm => full_firb_rh,
wr_dm => write_rh_firb,
data_out_dm => data_rh_firb(WORD_WIDTH-1 downto 0),
last_word_out_dm => data_rh_firb(WORD_WIDTH),
-- TO USER ENDPOINTS
full_ue => full_fire_rh,
wr_ue => write_rh_fire,
data_out_ue => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rh_fire(WORD_WIDTH)
full_rtps => full_fire_rh,
wr_rtps => write_rh_fire,
data_out_rtps => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_rh_fire(WORD_WIDTH)
);
@ -209,7 +209,7 @@ begin
end generate;
rtps_builtin_endpoint_inst : entity work.rtps_builtin_endpoint(arch)
rtps_discovery_module_inst : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS,
PREFER_MULTICAST => PREFER_MULTICAST_LOCATORS
@ -226,10 +226,10 @@ begin
-- FROM USER ENDPOINTS
alive => alive_re_rb,
-- TO USER ENDPOINTS
full_ue => full_frbre_re,
wr_ue => write_rb_frbre,
data_out_ue => data_rb_frbre(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rb_frbre(WORD_WIDTH),
full_rtps => full_frbre_re,
wr_rtps => write_rb_frbre,
data_out_rtps => data_rb_frbre(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_rb_frbre(WORD_WIDTH),
-- TO RTPS OUT
full_ro => full_firo_rb,
wr_ro => write_rb_firo,
@ -286,7 +286,7 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
@ -337,12 +337,12 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_frbre_re(i)(WORD_WIDTH),
-- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- TO DISCOVERY MODULE (META TRAFFIC)
alive_sig => alive_re_rb(i),
-- RTPS OUTPUT
full_ro => full_firo_re(i),

View File

@ -172,16 +172,16 @@ begin
empty => empty,
rd => read,
data_in => data_in,
-- TO BUILTIN ENDPOINT
full_be => full_firb_rh,
wr_be => write_rh_firb,
data_out_be => data_rh_firb(WORD_WIDTH-1 downto 0),
last_word_out_be => data_rh_firb(WORD_WIDTH),
-- TO DISCOVERY MODULE
full_dm => full_firb_rh,
wr_dm => write_rh_firb,
data_out_dm => data_rh_firb(WORD_WIDTH-1 downto 0),
last_word_out_dm => data_rh_firb(WORD_WIDTH),
-- TO USER ENDPOINTS
full_ue => full_fire_rh,
wr_ue => write_rh_fire,
data_out_ue => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rh_fire(WORD_WIDTH)
full_rtps => full_fire_rh,
wr_rtps => write_rh_fire,
data_out_rtps => data_rh_fire(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_rh_fire(WORD_WIDTH)
);
@ -231,7 +231,7 @@ begin
end generate;
rtps_builtin_endpoint_inst : entity work.rtps_builtin_endpoint(arch)
rtps_discovery_module_inst : entity work.rtps_discovery_module(arch)
generic map (
MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS,
PREFER_MULTICAST => PREFER_MULTICAST_LOCATORS
@ -248,10 +248,10 @@ begin
-- FROM USER ENDPOINTS
alive => alive_re_rb,
-- TO USER ENDPOINTS
full_ue => full_frbre_re,
wr_ue => write_rb_frbre,
data_out_ue => data_rb_frbre(WORD_WIDTH-1 downto 0),
last_word_out_ue => data_rb_frbre(WORD_WIDTH),
full_rtps => full_frbre_re,
wr_rtps => write_rb_frbre,
data_out_rtps => data_rb_frbre(WORD_WIDTH-1 downto 0),
last_word_out_rtps => data_rb_frbre(WORD_WIDTH),
-- TO RTPS OUT
full_ro => full_firo_rb,
wr_ro => write_rb_firo,
@ -308,7 +308,7 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
@ -359,12 +359,12 @@ begin
rd_user => read_re_fire(i),
data_in_user => data_fire_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_user => data_fire_re(i)(WORD_WIDTH),
-- FROM RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta => empty_frbre_re(i),
rd_meta => read_re_frbre(i),
data_in_meta => data_frbre_re(i)(WORD_WIDTH-1 downto 0),
last_word_in_meta => data_frbre_re(i)(WORD_WIDTH),
-- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC)
-- TO DISCOVERY MODULE (META TRAFFIC)
alive_sig => alive_re_rb(i),
-- RTPS OUTPUT
full_ro => full_firo_re(i),

View File

@ -7,7 +7,7 @@ context osvvm.OsvvmContext;
use work.rtps_test_package.all;
package ScoreBoardPkg_builtin_endpoint is new osvvm.ScoreboardGenericPkg
package ScoreBoardPkg_discovery_module is new osvvm.ScoreboardGenericPkg
generic map (
ExpectedType => std_logic_vector,
ActualType => std_logic_vector,

View File

@ -19,7 +19,7 @@ analyze ../FWFT_FIFO_cfg.vhd
analyze ../mem_ctrl.vhd
analyze ../dp_mem_ctrl.vhd
analyze ../rtps_handler.vhd
analyze ../rtps_builtin_endpoint.vhd
analyze ../rtps_discovery_module.vhd
analyze ../rtps_out.vhd
analyze ../rtps_reader.vhd
analyze ../rtps_writer.vhd
@ -53,7 +53,7 @@ analyze FWFT_FIFO_cfg.vhd
analyze ../mem_ctrl.vhd
analyze ../dp_mem_ctrl.vhd
analyze ../rtps_handler.vhd
analyze ../rtps_builtin_endpoint.vhd
analyze ../rtps_discovery_module.vhd
analyze ../rtps_out.vhd
analyze ../rtps_reader.vhd
analyze ../rtps_writer.vhd
@ -87,7 +87,7 @@ analyze ../FWFT_FIFO_cfg.vhd
analyze ../mem_ctrl.vhd
analyze ../dp_mem_ctrl.vhd
analyze ../rtps_handler.vhd
analyze ../rtps_builtin_endpoint.vhd
analyze ../rtps_discovery_module.vhd
analyze ../rtps_out.vhd
analyze ../rtps_reader.vhd
analyze ../rtps_writer.vhd
@ -122,7 +122,7 @@ analyze FWFT_FIFO_cfg.vhd
analyze ../mem_ctrl.vhd
analyze ../dp_mem_ctrl.vhd
analyze ../rtps_handler.vhd
analyze ../rtps_builtin_endpoint.vhd
analyze ../rtps_discovery_module.vhd
analyze ../rtps_out.vhd
analyze ../rtps_reader.vhd
analyze ../rtps_writer.vhd
@ -158,7 +158,7 @@ analyze FWFT_FIFO_cfg.vhd
analyze ../mem_ctrl.vhd
analyze ../dp_mem_ctrl.vhd
analyze ../rtps_handler.vhd
analyze ../rtps_builtin_endpoint.vhd
analyze ../rtps_discovery_module.vhd
analyze ../rtps_out.vhd
analyze ../rtps_reader.vhd
analyze ../rtps_writer.vhd
@ -177,18 +177,18 @@ analyze Type2_writer_interface.vhd
analyze Type2_key_holder.vhd
analyze test_key_holder.vhd
analyze ScoreBoard_test_memory.vhd
analyze ScoreBoard_builtin_endpoint.vhd
analyze ScoreBoard_discovery_module.vhd
analyze Level_0/L0_rtps_handler_test1.vhd
analyze Level_0/L0_rtps_handler_test2.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test1_uc.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test1_mc.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test2.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test3.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test4.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test5.vhd
analyze Level_0/L0_rtps_builtin_endpoint_test6.vhd
analyze Level_0/L0_rtps_discovery_module_test1_uc.vhd
analyze Level_0/L0_rtps_discovery_module_test1_mc.vhd
analyze Level_0/L0_rtps_discovery_module_test2.vhd
analyze Level_0/L0_rtps_discovery_module_test3.vhd
analyze Level_0/L0_rtps_discovery_module_test4.vhd
analyze Level_0/L0_rtps_discovery_module_test5.vhd
analyze Level_0/L0_rtps_discovery_module_test6.vhd
analyze Level_0/L0_rtps_out_test1.vhd
analyze Level_1/L1_rtps_builtin_endpoint_test1.vhd
analyze Level_1/L1_rtps_discovery_module_test1.vhd
analyze Level_0/L0_mem_ctrl_test1.vhd
analyze Level_0/L0_rtps_reader_test1_vrk.vhd
analyze Level_0/L0_rtps_reader_test1_vbk.vhd
@ -259,14 +259,14 @@ simulate L0_rtps_handler_test1
simulate L0_rtps_handler_test2
simulate L0_rtps_out_test1
simulate L0_mem_ctrl_test1
simulate L0_rtps_builtin_endpoint_test1_uc
simulate L0_rtps_builtin_endpoint_test1_mc
simulate L0_rtps_builtin_endpoint_test2
simulate L0_rtps_builtin_endpoint_test3
simulate L0_rtps_builtin_endpoint_test4
simulate L0_rtps_builtin_endpoint_test5
simulate L0_rtps_builtin_endpoint_test6
simulate L1_rtps_builtin_endpoint_test1
simulate L0_rtps_discovery_module_test1_uc
simulate L0_rtps_discovery_module_test1_mc
simulate L0_rtps_discovery_module_test2
simulate L0_rtps_discovery_module_test3
simulate L0_rtps_discovery_module_test4
simulate L0_rtps_discovery_module_test5
simulate L0_rtps_discovery_module_test6
simulate L1_rtps_discovery_module_test1
simulate L0_rtps_reader_test1_vrk
simulate L0_rtps_reader_test1_vbk
simulate L0_rtps_reader_test2_vrk

View File

@ -105,4 +105,4 @@ message.TestString = "HelloWorld";
6f 57 6f 72
| TestString[8] | TestString[9] | TestString[10]|###############|
6c 64 00
+---------------------------------------------------------------+

View File

@ -10,7 +10,7 @@ use work.rtps_package.all;
use work.user_config.all;
use work.rtps_config_package.all;
entity rtps_builtin_endpoint is
entity rtps_discovery_module is
generic (
PREFER_MULTICAST : boolean := FALSE;
MAX_REMOTE_PARTICIPANTS : natural := 50
@ -25,13 +25,13 @@ entity rtps_builtin_endpoint is
rd : out std_logic;
data_in : in std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_in : in std_logic;
-- FROM USER ENDPOINTS
-- FROM RTPS ENDPOINTS
alive : in std_logic_vector(0 to NUM_ENDPOINTS-1);
-- TO USER ENDPOINTS
full_ue : in std_logic_vector(0 to NUM_ENDPOINTS-1);
wr_ue : out std_logic_vector(0 to NUM_ENDPOINTS-1);
data_out_ue : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection
last_word_out_ue : out std_logic; -- one-to-many (Multicast) Connection
-- TO RTPS ENDPOINTS
full_rtps : in std_logic_vector(0 to NUM_ENDPOINTS-1);
wr_rtps : out std_logic_vector(0 to NUM_ENDPOINTS-1);
data_out_rtps : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection
last_word_out_rtps : out std_logic; -- one-to-many (Multicast) Connection
-- RTPS OUTPUT
full_ro : in std_logic;
wr_ro : out std_logic;
@ -40,7 +40,7 @@ entity rtps_builtin_endpoint is
);
end entity;
architecture arch of rtps_builtin_endpoint is
architecture arch of rtps_discovery_module is
--*****CONSTANT DECLARATION*****
-- Max Serialized Payload Size in a UDP Stream (Bytes) [MAX_PAYLOAD(65536) - IPv4_HEADER(20) - UDP_HEADER(8) - RTPS_HEADER(20) - DATA_HEADER(24)]
@ -533,33 +533,33 @@ begin
-- This process connects the Intermediate Output Signals to the actual output FIFOs
output_prc : process(all)
begin
wr_ue <= (others => '0');
wr_rtps <= (others => '0');
wr_ro <= '0';
case (stage) is
when INFORM_ENDPOINTS_MATCH =>
if (wr_sig = '1') then
wr_ue <= endpoint_mask;
wr_rtps <= endpoint_mask;
end if;
when INFORM_ENDPOINTS_UNMATCH =>
if (wr_sig = '1') then
wr_ue <= not endpoint_mask;
wr_rtps <= not endpoint_mask;
end if;
when INFORM_ENDPOINTS_PARTICIPANT_UNMATCH =>
if (wr_sig = '1') then
wr_ue <= (others => '1');
wr_rtps <= (others => '1');
end if;
when LIVELINESS_UPDATE =>
if (wr_sig = '1') then
wr_ue <= endpoint_mask;
wr_rtps <= endpoint_mask;
end if;
when others =>
wr_ro <= wr_sig;
end case;
end process;
data_out_ue <= data_out_sig;
data_out_rtps <= data_out_sig;
data_out_ro <= data_out_sig;
last_word_out_ue <= last_word_out_sig;
last_word_out_rtps <= last_word_out_sig;
last_word_out_ro <= last_word_out_sig;
-- Main State Machine
@ -1432,7 +1432,7 @@ begin
-- DONE
stage_next <= SKIP_PACKET;
-- Output FIFO Guard
elsif ((endpoint_mask and full_ue) = (full_ue'range => '0')) then
elsif ((endpoint_mask and full_rtps) = (full_rtps'range => '0')) then
wr_sig <= '1';
case (cnt) is
@ -2114,7 +2114,7 @@ begin
when PID_BUILTIN_ENDPOINT_QOS =>
-- Only relevant for Participant Discovery Protocol
-- NOTE: As of DDSI-RTPS 2.3 the PID_BUILTIN_ENDPOINT_QOS only contains the BEST_EFFORT_PARTICIPANT_MESSAGE_DATA_READER bit
-- Due to how the built-in Endpoint is behaving, this bit as no impact in our case and we can safely ignore it.
-- Due to how the built-in Endpoint is behaving, this bit has no impact in our case and we can safely ignore it.
-- Ignore
null;
when PID_TOPIC_NAME =>
@ -3121,7 +3121,7 @@ begin
assert check_mask(current_pmf, PMF_DEFAULT_IPV4_ADDR_FLAG or PMF_UDP_PORT_FLAG) severity FAILURE;
-- Output FIFO Guard
if ((endpoint_mask and full_ue) = (full_ue'range => '0')) then
if ((endpoint_mask and full_rtps) = (full_rtps'range => '0')) then
wr_sig <= '1';
case (cnt) is
@ -3195,7 +3195,7 @@ begin
end if;
when INFORM_ENDPOINTS_UNMATCH =>
-- Output FIFO Guard
if (((not endpoint_mask) and full_ue) = (full_ue'range => '0')) then
if (((not endpoint_mask) and full_rtps) = (full_rtps'range => '0')) then
wr_sig <= '1';
case (cnt) is
@ -3228,7 +3228,7 @@ begin
end if;
when INFORM_ENDPOINTS_PARTICIPANT_UNMATCH =>
-- Output FIFO Guard
if (full_ue = (full_ue'range => '0')) then
if (full_rtps = (full_rtps'range => '0')) then
wr_sig <= '1';
case (cnt) is

View File

@ -19,16 +19,16 @@ entity rtps_handler is
empty : in std_logic;
rd : out std_logic;
data_in : in std_logic_vector(WORD_WIDTH-1 downto 0);
-- TO BUILTIN ENDPOINT
full_be : in std_logic;
wr_be : out std_logic;
data_out_be : out std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_out_be : out std_logic;
-- TO USER ENDPOINTS
full_ue : in std_logic_vector(0 to NUM_ENDPOINTS-1);
wr_ue : out std_logic_vector(0 to NUM_ENDPOINTS-1);
data_out_ue : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection
last_word_out_ue : out std_logic -- one-to-many (Multicast) Connection
-- TO DISCOVERY MODULE
full_dm : in std_logic;
wr_dm : out std_logic;
data_out_dm : out std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_out_dm : out std_logic;
-- TO RTPS ENDPOINTS
full_rtps : in std_logic_vector(0 to NUM_ENDPOINTS-1);
wr_rtps : out std_logic_vector(0 to NUM_ENDPOINTS-1);
data_out_rtps : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection
last_word_out_rtps : out std_logic -- one-to-many (Multicast) Connection
);
end entity;
@ -160,21 +160,21 @@ begin
output_prc : process(all)
begin
--Write Enable Signal
wr_be <= '0';
wr_ue <= (others => '0');
wr_dm <= '0';
wr_rtps <= (others => '0');
if (wr_sig = '1') then
if (builtin_endpoint = '1') then
wr_be <= '1';
wr_dm <= '1';
else
wr_ue <= user_endpoints;
wr_rtps <= user_endpoints;
end if;
end if;
end process;
data_out_be <= data_out_sig;
data_out_ue <= data_out_sig;
last_word_out_be <= last_word_out_sig;
last_word_out_ue <= last_word_out_sig;
data_out_dm <= data_out_sig;
data_out_rtps <= data_out_sig;
last_word_out_dm <= last_word_out_sig;
last_word_out_rtps <= last_word_out_sig;
-- This process is responsible for reading the input FIFO 4-Byte Word aligned.
-- Even though DDSI-RTPS 2.3 defines that Submessages begin at 4-byte boundries, meaning that the
@ -1031,7 +1031,7 @@ begin
when PUSH_PAYLOAD_HEADER =>
-- NOTE: This is a synchronised push on potentially multiple output FIFOs. If one FIFO gets full, the process stalls for all FIFOs.
-- Output FIFO Guard
if (builtin_endpoint = '1' and full_be = '0') or (builtin_endpoint = '0' and ((user_endpoints and full_ue) = (user_endpoints'range => '0'))) then
if (builtin_endpoint = '1' and full_dm = '0') or (builtin_endpoint = '0' and ((user_endpoints and full_rtps) = (user_endpoints'range => '0'))) then
case (cnt) is
-- OPCODE (Submessage ID), Submessage Flags, UPDv4 Source Port
@ -1108,7 +1108,7 @@ begin
when PUSH_PAYLOAD =>
-- NOTE: This is a synchronised push on potentially multiple output FIFOs. If one FIFO gets full, the process stalls for all FIFOs.
-- Output FIFO Guard
if (builtin_endpoint = '1' and full_be = '0') or (builtin_endpoint = '0' and ((user_endpoints and full_ue) = (user_endpoints'range => '0'))) then
if (builtin_endpoint = '1' and full_dm = '0') or (builtin_endpoint = '0' and ((user_endpoints and full_rtps) = (user_endpoints'range => '0'))) then
case (opcode) is
when SID_HEARTBEAT =>

View File

@ -450,7 +450,7 @@ package rtps_package is
constant DISC_BUILTIN_ENDPOINT_TOPICS_DETECTOR : natural := 29;
-- *BUILTIN ENDPOINT QOS BITMASK*
-- XXX: We use some of the unused bits of the 32-bit bitmask when stored in the buffer for internal purposes. (see "builtin_endpoint" Entity)
-- XXX: We use some of the unused bits of the 32-bit bitmask when stored in the buffer for internal purposes. (see "rtps_discovery_module" Entity)
constant BEST_EFFORT_PARTICIPANT_MESSAGE_DATA_READER : natural := 0;
-- *PARTICIPANT MESSAGE KIND*

View File

@ -37,7 +37,7 @@ entity rtps_reader is
rd_user : out std_logic;
data_in_user : in std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_in_user : in std_logic;
-- FROM RTPS BUILTIN ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta : in std_logic;
rd_meta : out std_logic;
data_in_meta : in std_logic_vector(WORD_WIDTH-1 downto 0);

View File

@ -21,7 +21,7 @@ package rtps_test_package is
constant RESULTS_FILE : string := "./Test_Results.txt";
-- Frame Sizes have to be specified, so that direct memory probing is possible
-- rtps_builtin_endpoint Participant Frame Size
-- rtps_discovery_module Participant Frame Size
constant PARTICIPANT_FRAME_SIZE : natural := 24;
-- rtps_reader Endpoint Frame Size (RELIABLE=TRUE)
constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 14;
@ -202,7 +202,7 @@ package rtps_test_package is
match : MATCH_TYPE;
-- Denotes the Position in the Memory of this Participant Data
nr : natural;
-- Denotes which locator is to be used (Same as PREFER_MULTICAST generic of rtps_builtin_endpoint)
-- Denotes which locator is to be used (Same as PREFER_MULTICAST generic of rtps_discovery_module)
PREFER_MULTICAST : boolean;
end record;
@ -490,7 +490,7 @@ package rtps_test_package is
-- Generates RTPS_HANDLER output
-- ref RTPS Submessage
-- loc Source Locator of RTPS Submessage
-- is_meta Indicates if the RTPS Submessage is metatraffic (Destined for Built-in Endpoints)
-- is_meta Indicates if the RTPS Submessage is metatraffic (Destined for Discovery Module)
-- ts Source Timestamp of RTPS Submessage
-- src_guid Source GUID of RTPS Submessage
-- output Destination of generated output
@ -501,14 +501,14 @@ package rtps_test_package is
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; endpoint : ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
-- *RTPS_BUILTIN_ENDPOINT*
-- Generate a rtps_builtin_endpoint memory Participant Frame based on "ref".
-- *DISCOVERY MODULE*
-- Generate a rtps_discovery_module memory Participant Frame based on "ref".
function gen_participant_mem_frame (ref : PARTICIPANT_DATA_TYPE) return TEST_PARTICIPANT_MEMORY_FRAME_TYPE;
-- Writes a rtps_builtin_endpoint Endpoint Match Frame based on "ref" to "output"
-- Writes a rtps_discovery_module Endpoint Match Frame based on "ref" to "output"
procedure gen_endpoint_match_frame( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
-- Writes a rtps_builtin_endpoint Participant Match Frame based on "ref" to "output"
-- Writes a rtps_discovery_module Participant Match Frame based on "ref" to "output"
procedure gen_participant_match_frame( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
-- Writes a rtps_builtin_endpoint Endpoint Liveliness Update Frame based on "ref" to "output"
-- Writes a rtps_discovery_module Endpoint Liveliness Update Frame based on "ref" to "output"
procedure gen_liveliness_update_frame( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
@ -577,7 +577,7 @@ package rtps_test_package is
-- n Unsigned Value of generated SLV
-- width Width of generated SLV
function int(n : integer; width : natural) return std_logic_vector;
-- to_string Function for ScoreBoardPkg_builtin_endpoint
-- to_string Function for ScoreBoardPkg_discovery_module
function to_string1 (input : std_logic_vector) return string;
-- Find first valid Locator of Particiapnt Data
-- ref Participant Data to extract Locator from

View File

@ -40,12 +40,12 @@ entity rtps_writer is
rd_user : out std_logic;
data_in_user : in std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_in_user : in std_logic;
-- TO/FROM RTPS BUILTIN ENDPOINT (META TRAFFIC)
-- FROM DISCOVERY MODULE (META TRAFFIC)
empty_meta : in std_logic;
rd_meta : out std_logic;
data_in_meta : in std_logic_vector(WORD_WIDTH-1 downto 0);
last_word_in_meta : in std_logic;
-- TO RTPS BUILTIN ENDPOINT (META TRAFFIC)
-- TO DISCOVERY MODULE (META TRAFFIC)
alive_sig : out std_logic;
-- RTPS OUTPUT
full_ro : in std_logic;

View File

@ -73,7 +73,7 @@ set_global_assignment -name VHDL_FILE ../rtps_reader_syn.vhd -hdl_version VHDL_2
set_global_assignment -name VHDL_FILE ../../src/rtps_reader.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../rtps_writer_syn.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../../src/rtps_writer.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../../src/rtps_builtin_endpoint.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../../src/rtps_discovery_module.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../../src/rtps_handler.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../../src/rtps_out.vhd -hdl_version VHDL_2008
set_global_assignment -name VHDL_FILE ../test5.vhd -hdl_version VHDL_2008