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).
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.
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).
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.
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.
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.
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.
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.
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).
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.
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.
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)
- Change Testbench naming Convention (File and Internal)
- Remove Component declarations and use direct instantiating
* Add more static generated SLVs in rtps_config_package
- 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
- Unify get_loc functions
- Overload functions with less parameters for defaults
- Add Parameter Corruption Injection to Participant and Endpoint Data Generators
* 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
* 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
- 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