Commit Graph

45 Commits

Author SHA1 Message Date
a26faff89a Move functions between rtps_package and rtps_config_package 2022-02-03 14:35:54 +01:00
Greek
b5741dc9ae Implement ROS glue logic & ROS discovery data
All the necessary "glue" logic to convert ROS Data to a form that the
DDS/RTPS back-end can use is implemented in packages.
The ROS Node discovery information is statically generated in packages
(similar to the RTPS Participant Data), and a special dds writer is
implemented (ros_static_discovery_writer) that has this static data as
its only payload sample.
Some definitions are moved out of rtps_config_package to prevent
circular package dependency.
2022-01-29 11:12:22 +01:00
Greek
a99b8f13c8 Code Refactoring 2022-01-24 17:52:58 +01:00
Greek
e0280ea490 Define RTPS/DDS Configuration in record type 2022-01-16 16:16:58 +01:00
Greek
20dff4a208 BUG FIX: Default Reliability is different for Readers and Writers 2021-12-15 16:49:32 +01:00
Greek
3a1aeb818e Remove TRANSPORT_PRIORITY_QOS
According to RTPS Specification, the TRANSPORT_PRIORITY_QOS is only for
Topic Data.
2021-12-15 16:30:31 +01:00
Greek
6d609a5a34 CYCLONE DDS Compatibility: Remove expectsinlineQoS Flag
Apparently Cyclone DDS does not support Readers with the inline QoS
Flag.
Change rtps_test_package to generate only necessary PIDs (e.g. no
PID_EXPECTS_INLINE_QOS for writers)
2021-12-15 15:58:07 +01:00
Greek
70549853d5 code refactoring 2021-12-09 19:44:39 +01:00
5d9acb6f41 Add directive to allow QSYS Compilation
QSYS does not allow to change the VHDL version of processed files.
All respective files have to have a comment directive forcing the VHDL version.
2021-12-09 19:44:38 +01:00
Greek
b47d409f13 Make codebase Quartus synthesizable
Remove non-Quartus-supported VHDL 2008 features.
Remove inferred Latches.
Add test Entities to see resulting hw synthesis of various code
segments.
2021-12-07 13:05:24 +01:00
Greek
cffaafb284 Code refactoring 2021-11-20 16:01:57 +01:00
Greek
9cc4907a2f Add complete Level2 System Test
Using seperately compiled Libraries we interconnect two systems, and
test their communication and interaction.
A bug in rtps_builtin_endpoint was fixed (were if only the SUB data was
to be sent, it was never actually sent).
2021-11-17 14:23:53 +01:00
Greek
d907a85c07 Add Level 1 Test 2 of TYPE2 wrapper and key_holder
The writer_wrapper was modified to allow changing the used endian via
generic. This allows to test Little Endian handling in simulations.
The Test2 are basically Test1 with Little Endian
2021-11-07 16:21:20 +01:00
Greek
5a22d51974 Define Type2 IDL and implement TYPE2_READER_WRAPPER
A test type is defined in IDL, and then manually implemented in the
Reader Wrapper.
2021-11-04 14:16:32 +01:00
Greek
609ed2d686 Code Refactor 2021-05-15 20:39:56 +02:00
Greek
90a4c7928a Backport Memory Controller to rtps_builtin_endpoint
Backport Memory Controller and Memory FSM from RTPS/DDS Endpoints to
RTPS Builtin Endpoint.
The Memory is now using a single linked list and the FSM uses Frame Field
Flags.
The main FSM uses check_time to initiate stale checks, and the stale
checks are done in the main FSM.
Testbench was modified to accomodate the changes (Previous L0 Test4 was
removed and integrated in L0 Test 1).
2021-05-11 13:23:55 +02:00
Greek
4fc9029554 REMOVE_WRITER DDS Operation generates Samples
The REMOVE_WRITER DDS Operation of DDS Reader now generates Samples if
the Instance State changes.
Updated testbench.
Added checks for DATA_AVAILABLE communication status.
2021-04-30 13:03:13 +02:00
Greek
c5239679d7 Port changes and fix syntax of DDS Reader 2021-03-31 19:25:21 +02:00
Greek
a6802cc538 Add Test1 of DDS Writer
Test RTPS GET_MIN_SN, GET_MAX_SN, GET_CACHE_CHANGE, REMOVE_CACHE_CHANGE,
ACK_CACHE_CHANGE, and NACK_CACHE_CHANGE Operations.
Test DDS Register, Unregister, Write, Dispose, and Lookup Instance
Operations.
2021-03-21 18:49:59 +01:00
Greek
981ca09149 Change Type-Dependant Code Interface, and Code refactoring
The instantiation of the KEY related entities is moved outside the DDS
Endpoints (Currently only changed in DDS Writer). Define new KEY_HOLDER
entity that is responsible for all Key related type-specific code.
Fix syntax of DDS Writer, and misc code refactoring.
2021-03-09 14:56:54 +01:00
Greek
7ccf850adc Testbench Code Refactoring 2021-03-02 17:36:07 +01:00
Greek
f97e7da7bb Fix syntax of rtps_writer 2021-02-26 14:39:53 +01:00
Greek
1dc1d89f98 Add Test1 of RTPS Reader
Test metatraffic behaviour of RTPS Reader.
Compiling and Passing.
2021-02-20 14:08:06 +01:00
Greek
7244fffacd Memory Size of rtps_builtin_endpoint made Generic
Each Entity that contains a memory will have an independent size
generic. The testbench was modified to accomodate different RAM memory
sizes. This in effect makes all Memory related stuff pre-entity
dependant. The rtps_test_package needs updated Frame Sizes for the Tests
to work properly.
2021-02-17 10:51:57 +01:00
Greek
bfdc366273 Modify Endpoint Match Frame, Fix Test Suite
The reader falgs (Expects In-line QoS, Expects Historical Data, Is Best
Effort) of the remote reader is transfered in the Metatraffic Endpoint
Match Frame.
The Level 1 rtps_builtin_endpoint test was also fixed.
2021-02-15 13:50:48 +01:00
Greek
2aedc0229d Various fixes in RTPS Reader/Writer and DDS Reader
Amongst other fixes the interface between RTPS-HC/DDS was changed.
The Liveliness Update metatraffic operation was also made QOS dependant
and put behind synthesis guards.
Instance Removal trigger was modified. While before at least 1 instance
slot needed to be empty at all times (similar to the sample slot), thsi
was changed to only remove instances on demand. This is controlled via
a signal that holds the current number of stale (removalble) instances.
2021-02-13 20:08:17 +01:00
Greek
80cffb8197 Fix unaligned payload handling in DDS Reader
Since the payload can only be padded until the next 4-byte aligned
address, we needed a way to read out only the actual payload in case the
payload was not aligned in the last payload slot (did not go until the
end of the payload slot). This is now handled by an additional bit flag
in the Sample Status Info which denotes if the payload is aligned. In
the case the payload is unaligned, the last address of the last payload
slot contains the offset of the actual payload end.
This commit also adds MEMORY RESET states for the Sample, payload, and
instance Memory.
2021-02-08 12:31:36 +01:00
Greek
e8670aaf59 Blind implementation of RTPS Writer 2021-02-07 18:02:55 +01:00
Greek
d54bf55b46 Redo Memory Interface of RTPS Endpoint
The Memory Control Process is made more generic (with less specialised
code), to allow the main process more control. I.e. all Memory Frame
Fields are individually addressable (during GET and UPDATE).
The RAM instance is hidden behind a Memory Controller with Flow Control
Signals, allowing easy future integration to different Memory Interfaces
(e.g. AXI Lite).
2021-02-02 00:04:34 +01:00
Greek
164bd508c1 Blind implementation of READ/TAKE DDS READER operations
Finalized DDS Reader interface. Implemented read/take,
read_next_sample/take_next_sample, read_instance/take_instance,
read_next_instance/take_next_instance operations.
Instance Get operations were made generic to allow returning 2 variants
of instance data.
2021-01-25 20:04:55 +01:00
Greek
7e84a15d54 Redo Blind Implementation of READER side (RTPS Endpoint & History Cache)
Redefined Sample Memory Format. The design decision was made to handle
most (if not all) of the DDS QOS inside the History Cache, which allows
storing needed information in a more efiicient way.
A (dual port) Instance Memory was added into the HC, to support the QOS
operations.
This commit only implements the A side processes for the READER case.
RESOURCE_LIMITS_QOS, TIME_BASED_FILTER_QOS, and HISTORY_QOS are handled.
The inter-entity communication was changed to allow the HC to mark
parsed changes as rejected, and allow future re-transmission (in the
case of Reliable communication).
2021-01-17 10:49:38 +01:00
Greek
d0709db3a2 Blind implementation of READER rtps_endpoint 2021-01-11 12:18:59 +01:00
Greek
b9dff6bd71 * General Testbench Update
- Change Testbench naming Convention (File and Internal)
	- Remove Component declarations and use direct instantiating
* Add more static generated SLVs in rtps_config_package
2020-12-06 19:32:40 +01:00
Greek
929fbe5c80 * Update rtps_builtin_endpoint_test7
- Add participant Announcement check
* bug Fix in rtps_config_package
	- Fix Participant Announcement Generation
2020-12-06 18:25:19 +01:00
Greek
0f50e66942 * Add FWFT FIFO
* Added rtps_builtin_endpoint_test7 Level 1 testbench
	- Compiling and Passing
* Various Bug Fixes in rtps_builtin_endpoint
2020-12-06 17:26:15 +01:00
Greek
f8debfb086 * Add rtps_out Entity
- Use round robin to select output from endpoints and generate the expected uniform RTPS system output
* Add rtps_out_test1
	- Compiling and Passing
2020-12-02 14:21:27 +01:00
Greek
fec81c0b43 * Re-design rtps_builtin_endpoint
- Remove endpoint data from memory. Store only participant data
	- Write PARTICIPANT_UNMATCH_FRAME to all endpoints on remote participant removal
	- Write ENDPOINT_MATCH and ENDPOINT_UNMATCH frames for all remote endpoints
* Update testbenches to accomodate re-design
* Streamline scorboard reference pushing and testbench completion detection
2020-11-29 23:34:28 +01:00
Greek
eac58dd183 * rtps_builtin_endpoint in-memory fromat change
- Do not store local endpoint mask of remote endpoints
	- Send MATCH/UNMATCH Frames to all local Endpoinst (Not only previously matched)
2020-11-28 14:37:15 +01:00
Greek
32fd1ac31e * Add modelsim.ini File in gitignore
* Small change in rtps_builtin_endpoint_test1
	- Empty Signal was not toggling
* Added rtps_builtin_endpoint_test2
	- Compiling and Passing
* Update rtps_test_package
* Various bug Fixes in rtps_builtin_endpoint
2020-11-26 18:04:59 +01:00
Greek
521e2466f5 * Add new DEFAULT values in packages
* Add test RAM (Used for testbenches)
* Add Data Structures and functions to check memory contents
* Add rtps_builtin_endpoint_test1
	- Compiles and Passes
* Various bug fixes in rtps_builtin_endpoint to Pass testbench
2020-11-23 12:20:05 +01:00
Greek
e624ba4bac * Added rtps_handler_test2
- Complete and Passing
* Added timeout watchdogs
* Switched to OSVVM Logging
* Added Test Config
2020-11-18 11:24:03 +01:00
Greek
9b4a2ed073 * Various Bug Fixes in rtps_handler
* rtps_handler_test1 Complete and Passing
2020-11-17 15:26:20 +01:00
Greek
9c95e58e32 * Added OSVVM Library as Submodule
* Merged stimulus generation procedures to one single procedure
* Integrated OSVVM into testbench
* Generated OSVVM Project Script File
* Various Bug Fixes to compile testbench
2020-11-15 20:34:39 +01:00
Greek
c68caec626 * Package update
- New functions
	- Renames
	- New Definitions
* rtps_handler overhaul
	- Validity Check for Submessages
	- OVERREAD Guard
	- Info Timestamp parsed and sent to Endpoints
2020-11-13 11:44:17 +01:00
Greek
9acd98b32e * Update .gitignore
* Split rtps_package
2020-11-02 14:39:27 +01:00