Commit Graph

178 Commits

Author SHA1 Message Date
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
ee67fe9493 Minor declaration & documentation fixes 2021-11-03 20:07:14 +01:00
Greek
e33d982182 Add 'si_ack' to DDS Reader
Previously the simaple info data was valid for exectly 1 clock cycle,
in which the user had to pull the 'get_data' signal if he wanted the
associated payload.
This change allows the user to control how long the sample info data is
shown.
2021-11-03 18:33:35 +01:00
Greek
609ed2d686 Code Refactor 2021-05-15 20:39:56 +02:00
Greek
4392aa8288 Parse PID_STATUS_INFO in RTPS Builtin Endpoint
The inline-QoS of PDP Packets is parsed, and Participants/Endpoints can
be unmatched by Unregister/Dispose Status Info Updates.
Test 1,2,3 was extended to test this functionality.
NOTE: PID_KEY_HASH is a requirement (at least for unmatching Endpoints),
as serialized key payloads are unsupported.
2021-05-14 12:08:21 +02:00
Greek
8cd1c29518 Backport GAP parsing logic to RTPS Builtin Endpoint
The GAP parsing logic was backported from RTPS Reader, so that the RTPS
Builtin Endpoint can parse all kind of GAP without making assumptions.
The Test 4 of the RTPS Builtin Endpoint was extended to test HAERTBEAT and GAP Handling of the RTPS
Builting endpoint, and Test 2 of the RTPS Reader was extended with an
additional Test (GAP with next expected SN not marked in bitmap)
2021-05-13 13:31:00 +02:00
Greek
293d89f083 NACK SN in ACKNACk Response of RTPS Builtin Endpoint
Until now the ACKNACK Response of the RTPS Builtin Endpoint had an empty
Bitmap, effectively ACKing SNs, but never NACKing any (i.e. not
requesting any).
Similar to the RTPS Endpoints we request the next 32 SNs on every
ACKNACK Response.
The ParticipantMessageData SN Handling was also implemented.
2021-05-12 12:09:29 +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
7f7b7a6164 Add Documentation to rtps_test_package 2021-05-06 15:59:07 +02:00
Greek
e067952e49 Add test 7 of DDS Reader
Test the bitmap writer conversion to/from memory.
2021-04-30 16:33:06 +02:00
Greek
131ee48f2a Add test 6 of DDS Reader
Test the Lifespan Handling of the DDS Reader
2021-04-30 14:48:32 +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
996c1fe962 Add test 5 of DDS Reader
Test Sample Rejected Status Handling.
Test GET_SAMPLE_REJECTED_STATUS DDS Operation.
Extend Sample Rejected Status Kind by REJECTED_BY_PAYLOAD_MEMORY_LIMIT
2021-04-26 20:47:00 +02:00
Greek
7a096de5c1 Add test 4 of DDS Reader
Test Deadline Handling of the DDS Reader.
Test the GET_REQUESTED_DEADLINE_MISSED_STATUS DDS Operation.
Add Documentation to some Testbenches.
2021-04-26 12:57:09 +02:00
Greek
0beafe13b3 Add test 3 of the DDS Reader
Test the DDS READ, TAKE, READ_NEXT_SAMPLE, TAKE_NEXT_SAMPLE,
READ_INSTANCE, TAKE_INSTANCE, READ_NEXT_INSTANCE, TAKE_NEXT_INSTANCE
Operations.
Backport fixes to previous testbenches.
Change handling of DISPOSE Samples of unknown Instances.
2021-04-25 16:12:22 +02:00
Greek
5a0eeef1e6 Add test 2 of DDS Reader
Test TIME_BASED_FILTER QoS Handling.
2021-04-18 16:17:24 +02:00
Greek
49f3c3eb65 Change DDS Reader - User Interface
The si_last Signal was replaced with eoc (End of Collection)
The eoc signal is pulled high after the last si_valid.
2021-04-18 15:50:53 +02:00
Greek
bac011905a Add Test 1 of DDS Reader
Test RTPS Operations ADD_CACHE_CHANGE, and REMOVE_WRITER of DDS Reader.
Port changes and code refoctoring in DDS Writer.
2021-04-11 16:39:17 +02:00
Greek
c5239679d7 Port changes and fix syntax of DDS Reader 2021-03-31 19:25:21 +02:00
Greek
4a67a18df2 Add Test 5 of DDS Writer
Test Lifespan Handling of DDS Writer.
2021-03-29 17:55:11 +02:00
Greek
501f67a67f Add Test4 of DDS Writer
Test Liveliness handling of RTPS Writer.
Test GET_LIVELINESS_LOST_STATUS and ASSERT_LIVELINESS DDS Operations
2021-03-29 14:13:26 +02:00
Greek
7c2978e863 Add Test3 of DDS Writer
Test Deadline Handling of DDS Writer.
Test GET_OFFERED_DEADLINE_MISSED_STATUS DDS Operation.
2021-03-29 14:13:08 +02:00
Greek
069657ee3b Add Test2 of DDS Writer
Test for WAIT_FOR_ACKNOWLEDGEMENT DDS Operation
2021-03-28 19:59:05 +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
3ba5fae871 Add Test4 of RTPS Writer
Test remote Reader Liveliness handling of RTPS Writer.
Backport fix to RTPS Reader.
Compiling and Passing
2021-03-03 18:40:36 +01:00
Greek
09e74e9ddb Add Test3 of RTPS Writer
Test RTPS Output (HEARTBEAT Message Generation & Manual By Topic
Liveliness Assertion) of the RTPS Writer.
Compiling and Passing
2021-03-03 12:24:23 +01:00
Greek
f96af25a6a Add Test2 of RTPS Writer
Test RTPS Output (DATA and GAP Message Generation) of the RTPS Writer.
Backport some small changes to Test1.
Compiling and Passing
2021-03-02 18:48:01 +01:00
Greek
7ccf850adc Testbench Code Refactoring 2021-03-02 17:36:07 +01:00
Greek
a9eb56d6e5 Change HC Operation Handshake Behaviour 2021-03-02 13:57:22 +01:00
Greek
b5206f66f1 Update Inline QoS Generation related Testbench Code 2021-03-02 13:53:12 +01:00
Greek
c9f0d70979 Add Test1 of RTPS Writer
Test metatraffic behaviour of RTPS Writer.
Compiling and Passing.
2021-02-26 14:39:53 +01:00
Greek
268e166b4f Update Cache Change Generation related Testbench Code
Remove littleEndian from Cache Change, and add it as explicit parameter
to inline-QoS Generator functions.
2021-02-26 14:39:53 +01:00
Greek
f97e7da7bb Fix syntax of rtps_writer 2021-02-26 14:39:53 +01:00
Greek
597edb5f94 Add test 4 of RTPS Reader (Level 1)
Check the output handling (ACKNACK Response) of the RTPS Reader.
Compiling and Passing
2021-02-26 14:39:43 +01:00
Greek
260acba5b6 Add test 3 of RTPS Reader
Test Liveliness Handling of RTPS Reader.
Test 2 expanded with extra case for Little Endian Handling.
Compiling and Passing
2021-02-22 12:16:47 +01:00
Greek
0f7750bd5a Expanded test 1 and test 2 of RTPS Reader with different Generics
Tests are added for different Generics Settings (Durability,
Reliability, Keyed Topic).
Test 2 of RTPS Reader (User Tarffic Handling) is extended with a few
extra test cases.
2021-02-21 15:20:27 +01:00
Greek
4530688c8b Add test 2 of RTPS Reader
Test user traffic handling (DATA, HEARTBEAT, GAP).
Compiling and Passing
2021-02-21 00:02:22 +01:00
Greek
9f8887e8c5 Testbench wide input_prc fix 2021-02-20 14:08:19 +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
fa28997ec6 Fix Syntax in rtps_reader 2021-02-17 17:56:00 +01:00
Greek
52bd4053d1 Add mem_ctrl Level 0 Test 1
mem_ctrl fixed and testbench implemented
2021-02-17 14:01:49 +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
a3a51e2f52 Various Fixes in RTPS Reader/Writer
Amongst other changes the RTPS Reader now supportes VOLATILE Durability
(Will only request most recent change from new matched Writers)
2021-02-14 19:58:09 +01:00
Greek
348d036659 Blind Implementation of DDS Writer
A Serialized Key Generator Entity Hull (responsible for generating the
serialized Key) was also added.
2021-02-13 20:09:35 +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
f0cc1e5432 Various fixes in RTPS Reader
Ignore unknown Metatraffic Operations.
Drop payload if not necessary (i.e. do not push payload if payload
contains serialized Key, but Key Hash is already provided).
Added Memory Reset State.
Misc fixes
2021-02-07 18:02:28 +01:00
Greek
6488918ede Fix Port Name Convention and RTPS/DDS Handshacking 2021-02-03 20:22:43 +01:00
Greek
dc8746c463 Support WITH_KEY=FALSE Topics in DDS and RTPS Reader
In the event of Keyless Topics less resources are used with the
help of "synthesis guards".
2021-02-03 18:28:37 +01:00
Greek
d3fb1cc176 Support MANUAL_BY_TOPIC Liveliness and various fixes in RTPS Reader 2021-02-02 23:51:10 +01:00
Greek
5b8206d539 Modify Lifespan Checktime
Make the time, at which the Lifespan of samples is checked dependant on
the actual Lifespans. This should prevent unnecessary memory bandwidth
waste.
2021-02-02 23:07:34 +01:00
Greek
bcaace1b8c Add documentation to DDS Reader 2021-02-02 18:56:38 +01:00
Greek
d1d95c4ec7 Redo Memory Interface of DDS Endpoint
Propagation of RTPS changes
2021-02-02 00:04:35 +01:00
Greek
d4795c1838 Add documentation to RTPS Reader, Best Efoort RELIABILITY uses less memory
RELIABILITY_QOS is checked, allowing BEST EFFORT to use less
memory.
2021-02-02 00:04:35 +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
63b8858af9 Implemented LIFESPAN_QOS
Samples are periodically checked if their Lifespans have expired and are
removed if so.
2021-02-02 00:04:30 +01:00
Greek
abdd14eb51 Implemented DEADLINE_QOS and REQUESTED_DEADLINE_MISSED_STATUS in DDS Reader 2021-01-27 13:42:08 +01:00
Greek
4914dbe5ea Added DATA_AVAILABLE_STATUS, and SAMPLE_REJECTED_STATUS in DDS Reader 2021-01-27 12:01:38 +01:00
Greek
607273e1c4 Add code to handle unaligned Payloads
If the payload is not directly aligned with the Payload slots, it has
to be ensured that the rest of the payload slot is zeroed.
If we ran out of payload slots during the write process (Which can
happen since we don't know the size of the payload beforehand), we have
to abort the Key Hash Generation before parsing the next sample.
2021-01-26 23:37:24 +01:00
Greek
8433006fb8 Fix on-demand Instance/Sample removal code 2021-01-26 20:45:59 +01:00
Greek
728a6964d3 Fix DESTINATION_ORDER_QOS in dds_endpoint
The rtps_endpoint only sends the source timestamp (TIME_INVALID if no
source timestamp provided). If ordering BY_RECEPTION, the sample is added
to the list tail. If ordering BY_SOURCE the samples are ordered
according to the source timestamp, but droped if the source timestamp is
earlier than a sample that has been read by the user or INVALID (Ensures
determenistic behavior).
2021-01-26 19:07:38 +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
c3b656c654 Insert Instances in KEY_HASH numerical order
in order to support the read_next_instance/take_next_instance
operations, the instances have to have a a logical order. Whie the
previous implementation did have a logical order for inserted instances
(Since they are added in a linked list), we need to support relative
ordering also for non-inserted instances (acording to DDS Spec), so we
just order them in ascending order.
2021-01-22 13:24:37 +01:00
Greek
f152abc373 Remove GENERATION_COUNTERS Option
Generation Counters are always needed (e.g. for the calculation of the
view_state, since they are dependent on the reading of samples of the
last generation). As such, the Generation Counters were "converted" to
mandatory fields.
2021-01-22 12:01:16 +01:00
Greek
bdb397ae7d Major History Cache/DDS Endpoint Redesign
It was decided to connect the DDS Endpoint directly to the RTPS
Endpoint. The history_cache Entity will be converted to a generic
History Cache acording to the RTPS Specification.
Because of consistency requirements the implementation was changed to a
single process/single port RAM design.
This should fully (blindly) implement the RTPS Reader side of the DDS
Entity.
2021-01-21 12:51:39 +01:00
Greek
f2826ddd20 Change Sample Memory Format
The Sample Memory was changed to contain only the Instance Memory
Address instead of the whole Key Hash. This simplifies the B process and
reduces memory footprint.
The instance memory process was also updated to handle the conditional
fields defined in the previous commit.
2021-01-17 21:01:15 +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
d2f466d588 revert 06ed44c code refactor
Revert changes made in commit 06ed44c to the memory FSMs.
NOTE: This commit only reverts the changes in rtps_builtin_endpoint. The rest of the reverted changes are merged with following commits.
2021-01-16 18:14:40 +01:00
Greek
9ff39c6fea Remove HIGHEST_AVAILABLE_SN from local endpoint buffer 2021-01-11 18:45:37 +01:00
Greek
0574f9e69d Blind implementation of RTPS READER history Cache
Initial imeplementation of the RTPS Reader side of the history cache.
A key_hash_generator entity that will house the future MD5 hash
calculation was also added, along with the entity definition of
key_generator, which has to be implemented per-topic-type.
2021-01-11 12:21:36 +01:00
Greek
d0709db3a2 Blind implementation of READER rtps_endpoint 2021-01-11 12:18:59 +01:00
Greek
349db19edd Add True Dual Port RAM Implementation 2021-01-11 12:16:37 +01:00
Greek
dcd0b51c83 Code refactoring 2021-01-11 12:16:17 +01:00
Greek
35743b6f19 Add and update doc
Added documentation for MD5 HASH Cacluclation
Updated TODO and REF with new design decisions
2021-01-11 12:06:18 +01:00
Greek
a00f942826 change rtps_handler output format
While previously we sent the EntityID before the GUID Prefix (for some
reason), we changed swaped the order to allow easier decoding (by having
uniform format for all inputs)
2020-12-18 16:19:57 +01:00
Greek
3566eb1282 * Added rtps_builting_endpoint_test7
- Compiling and Passing
2020-12-06 23:55:28 +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
035ff837b0 * Add rtps_builtin_endpoint_test6
- Compiling and Passing
* Bug Fix in rtps_builtin_endpoint to make testbench pass
2020-12-03 12:56:37 +01:00
Greek
0ae131189b * partly revert commit ec4d44c
- Re-add max_participant_addr to prevent iterating through the whole memory area unnecessarily
	- Pointer points to last occuoied participant frame
2020-12-02 20:06:04 +01:00
Greek
e18c6e15ce * Bug fix input_prc of testbenches
- packet_sent signal of by one cycle
* Bug fix in rtps_handler
	- Exit condition of Gap Parsing
2020-12-02 17:02:13 +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
c1bb9a7bd2 * Re-design rtps_handler
- Input format is now a decoded UDP Packet (Documented in REF.txt)
	  This allows the whole RTPS system to use universal input and output.
2020-11-30 15:48:47 +01:00
Greek
533b50f0f9 * Added rtps_builtin_endpoint_test5 (Sequence Number Handling)
- Compiling and Passing
2020-11-30 12:52:49 +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
1812eaa41a * Added rtps_builtin_test4
- Memory Handling
	- Compiling and Passing
2020-11-29 10:28:30 +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
c411cab887 * Added some testbench documentation 2020-11-28 13:19:05 +01:00
Greek
472af656b3 * Added rtps_builtin_endpoint_test3
- Compiling and Passing
2020-11-28 10:12:35 +01:00
Greek
02be7bb0a3 * Update rtps_test_package
- Unify get_loc functions
	- Overload functions with less parameters for defaults
	- Add Parameter Corruption Injection to Participant and Endpoint Data Generators
2020-11-27 12:34:28 +01:00
Greek
e358244578 * Add universal Test Result File for all Testbenches 2020-11-26 18:40:50 +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
16bd4558de * rtps_handler
- Handle case where packet end = submessage end (Avoid extra stage switches)
	- Fix last_word_out
	- Fix case where rd and empty are both high (INFO_TS)
* Modify Endpoint Frame format of GAP
	- Add dummy word to avoid complexity
* rtps_handler Testbench
	- Add check for last_word_out
2020-11-21 21:10:26 +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