Code Refactor
This commit is contained in:
parent
4392aa8288
commit
609ed2d686
@ -1,8 +1,8 @@
|
|||||||
Quartus 18.1 Unsupported
|
Quartus Unsupported
|
||||||
========================
|
===================
|
||||||
* Unconstrained arrays in records (Supported in Pro)
|
* Unconstrained arrays in records (Supported in Pro)
|
||||||
* Vectors in aggregate statements
|
* Vectors in aggregate statements
|
||||||
e.g. V := ("0000", others => '1');
|
e.g. V := ("0000", others => '1');
|
||||||
* Unary logical operators
|
* Unary logical operators
|
||||||
* Referencing generics in generic lists
|
* Referencing other generics in generic declaration
|
||||||
*
|
* Conditional Assignements
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
doc/DDS-XTYPES_1-1.pdf
(Stored with Git LFS)
Normal file
BIN
doc/DDS-XTYPES_1-1.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -105,7 +105,7 @@ Explicit = 1
|
|||||||
|
|
||||||
; Inhibit range checks on all (implicit and explicit) assignments to
|
; Inhibit range checks on all (implicit and explicit) assignments to
|
||||||
; scalar objects defined with subtypes.
|
; scalar objects defined with subtypes.
|
||||||
NoRangeCheck = 1
|
NoRangeCheck = 0
|
||||||
|
|
||||||
[vlog]
|
[vlog]
|
||||||
|
|
||||||
|
|||||||
12
src/ASCII.txt
Normal file
12
src/ASCII.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
+----------+ +-------------+ +-----------+ +-----------+ +-------------+ +----------+
|
||||||
|
|DDS Writer|->|History Cache|->|RTPS Writer|<-->|RTPS Reader|->|History Cache|->|DDS Reader|
|
||||||
|
+----------+ +-------------+ +-----------+ +-----------+ +-------------+ +----------+
|
||||||
|
|
||||||
|
+----------+ +-----------+ +------------+ +------------+ +-----------+ +----------+
|
||||||
|
|DDS Writer|->|RTPS Writer|<-+->|RTPS Handler|<-->|RTPS Handler|<-+->|RTPS Reader|->|DDS Reader|
|
||||||
|
+----------+ +-----------+ | +------------+ +------------+ | +-----------+ +----------+
|
||||||
|
+---------------------+ | | +---------------------+
|
||||||
|
|RTPS Builtin Endpoint|<-+ +->|RTPS Builtin Endpoint|
|
||||||
|
+---------------------+ +---------------------+
|
||||||
@ -40,7 +40,7 @@ begin
|
|||||||
sync : process(clk, reset)
|
sync : process(clk, reset)
|
||||||
variable free_var : integer range 0 to FIFO_DEPTH;
|
variable free_var : integer range 0 to FIFO_DEPTH;
|
||||||
begin
|
begin
|
||||||
if(rising_edge(clk)) then
|
if rising_edge(clk) then
|
||||||
if (reset = '1') then
|
if (reset = '1') then
|
||||||
fifo_data <= (others => (others => '0'));
|
fifo_data <= (others => (others => '0'));
|
||||||
free_sig <= FIFO_DEPTH;
|
free_sig <= FIFO_DEPTH;
|
||||||
|
|||||||
15
src/REF.txt
15
src/REF.txt
@ -433,14 +433,13 @@ STATUS INFO
|
|||||||
-----------
|
-----------
|
||||||
31............24..............16..............8...............0
|
31............24..............16..............8...............0
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
+-+-+-+-+-----------------------------------------------+-+-+-+
|
+-+-+-+-------------------------------------------------+-+-+-+
|
||||||
|R|P|A|K| UNUSED |F|U|D|
|
|R|P|A| UNUSED |F|U|D|
|
||||||
+-+-+-+-+-----------------------------------------------+-+-+-+
|
+-+-+-+-------------------------------------------------+-+-+-+
|
||||||
|
|
||||||
R...Sample has been Read
|
R...Sample has been Read
|
||||||
P...Sample has associated Payload
|
P...Sample has associated DATA Payload
|
||||||
A...Associated Payload is aligned (Payload does extend until end of last Palyload Slot)
|
A...Associated Payload is aligned (Payload does extend until end of last Palyload Slot)
|
||||||
K...Key Hash available
|
|
||||||
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
D...DisposedFlag (1:1 PID_STATUS_INFO Mapping)
|
D...DisposedFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
@ -485,7 +484,7 @@ STATUS INFO
|
|||||||
+-+-+-+-------------------------------------------------+-+-+-+
|
+-+-+-+-------------------------------------------------+-+-+-+
|
||||||
|
|
||||||
R...Sample has been ACKed
|
R...Sample has been ACKed
|
||||||
P...Sample has associated Payload
|
P...Sample has associated DATA Payload
|
||||||
A...Associated Payload is aligned (Payload does extend until end of last Palyload Slot)
|
A...Associated Payload is aligned (Payload does extend until end of last Palyload Slot)
|
||||||
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
@ -529,7 +528,7 @@ READER
|
|||||||
+ +
|
+ +
|
||||||
08| |
|
08| |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
09| ENDPOINT_POSITION |
|
09| WRITER_ID |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
10| |
|
10| |
|
||||||
~ PAYLOAD ~
|
~ PAYLOAD ~
|
||||||
@ -544,7 +543,7 @@ STATUS INFO
|
|||||||
| |P| |K| UNUSED |F|U|D|
|
| |P| |K| UNUSED |F|U|D|
|
||||||
+-+-+-+-+-----------------------------------------------+-+-+-+
|
+-+-+-+-+-----------------------------------------------+-+-+-+
|
||||||
|
|
||||||
P...Sample has associated Payload
|
P...Sample has associated DATA Payload
|
||||||
K...Key Hash available
|
K...Key Hash available
|
||||||
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
|
||||||
|
|||||||
@ -301,7 +301,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Best Effort, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Best Effort, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1556,7 +1556,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -300,7 +300,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1562,7 +1562,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -300,7 +300,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1560,7 +1560,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -279,7 +279,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1011,7 +1011,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -301,7 +301,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP LAST, Best Effort, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP LAST, Best Effort, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1556,7 +1556,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -301,7 +301,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP LAST, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - RTPS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP LAST, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - RTPS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1556,7 +1556,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Positive TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - TIME_BASED_FILTER QoS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Positive TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - TIME_BASED_FILTER QoS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -475,7 +475,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -294,7 +294,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Ordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Ordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1348,7 +1348,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -294,7 +294,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1347,7 +1347,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -294,7 +294,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Topic, Ordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Topic, Ordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1347,7 +1347,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -294,7 +294,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Topic, Unordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Topic, Unordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1347,7 +1347,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -295,7 +295,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS, ACCESS SCOPE Topic, Ordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS, ACCESS SCOPE Topic, Ordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1366,7 +1366,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -275,7 +275,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - DDS Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - DDS Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -707,7 +707,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - Deadline Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Deadline Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -606,7 +606,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - Deadline Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyless, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Deadline Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -475,7 +475,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - Sample Rejected Status Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Sample Rejected Status Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -768,7 +768,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - Sample Rejected Status Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Sample Rejected Status Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -538,7 +538,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_reader - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Level 0 - Sample Rejected Status Handling");
|
SetAlertLogName("dds_reader - Level 0 - (KEEP ALL, Reliable, Zero TIME_BASED_FILTER, Keyed, BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER, ACCESS SCOPE Instance, Unordered) - Sample Rejected Status Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -478,7 +478,7 @@ begin
|
|||||||
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
AffirmIfEqual(sstate_id, si_sample_state, col.s(dds_cnt).sstate);
|
||||||
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
AffirmIfEqual(vstate_id, si_view_state, col.s(dds_cnt).vstate);
|
||||||
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
AffirmIfEqual(istate_id, si_instance_state, col.s(dds_cnt).istate);
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(si_source_timestamp), convert_from_double_word(col.s(dds_cnt).ts));
|
AffirmIfEqual(ts_id, to_unsigned(si_source_timestamp), to_unsigned(col.s(dds_cnt).ts));
|
||||||
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
AffirmIfEqual(inst_id, to_unsigned(si_instance_handle), to_unsigned(col.s(dds_cnt).inst));
|
||||||
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
AffirmIfEqual(pub_id, to_unsigned(si_publication_handle), to_unsigned(HANDLE_NIL));
|
||||||
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
AffirmIfEqual(dis_gen_cnt_id, si_disposed_generation_count, std_logic_vector(to_unsigned(col.s(dds_cnt).dis_gen_cnt,WORD_WIDTH)));
|
||||||
|
|||||||
@ -301,7 +301,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Finite Lifespan, Keyed) - Level 0 - General");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Finite Lifespan, Keyed) - General");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -2087,15 +2087,15 @@ begin
|
|||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -281,7 +281,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - General");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - General");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -2067,15 +2067,15 @@ begin
|
|||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyless) - Level 0 - General");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyless) - General");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -991,15 +991,15 @@ begin
|
|||||||
when GET_CACHE_CHANGE =>
|
when GET_CACHE_CHANGE =>
|
||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -281,7 +281,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - General");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - General");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -1839,15 +1839,15 @@ begin
|
|||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -215,7 +215,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - Wait For Acknowledgements");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - Wait For Acknowledgements");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -472,15 +472,15 @@ begin
|
|||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -232,7 +232,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - Deadline Handling");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - Deadline Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -599,15 +599,15 @@ begin
|
|||||||
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
||||||
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -232,7 +232,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - Deadline Handling");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - Deadline Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -514,15 +514,15 @@ begin
|
|||||||
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
||||||
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -232,7 +232,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - Liveliness Handling");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - Liveliness Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -609,15 +609,15 @@ begin
|
|||||||
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
AffirmIfEqual(inst_id, cc_instance_handle(2), rtps.cc.instance(2));
|
||||||
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
AffirmIfEqual(inst_id, cc_instance_handle(3), rtps.cc.instance(3));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -232,7 +232,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("dds_writer - (KEEP ALL, Infinite Lifespan, Keyed) - Level 0 - Lifespan Handling");
|
SetAlertLogName("dds_writer - Level 0 - (KEEP ALL, Infinite Lifespan, Keyed) - Lifespan Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
@ -591,15 +591,15 @@ begin
|
|||||||
if (rtps.ret_code = OK) then
|
if (rtps.ret_code = OK) then
|
||||||
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
AffirmIfEqual(inst_id, to_unsigned(cc_instance_handle), to_unsigned(rtps.cc.instance));
|
||||||
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
AffirmIfEqual(kind_id, CACHE_CHANGE_KIND_TYPE'pos(cc_kind), CACHE_CHANGE_KIND_TYPE'pos(rtps.cc.kind));
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
AffirmIfEqual(ts_id, convert_from_double_word(cc_source_timestamp), convert_from_double_word(rtps.cc.src_timestamp));
|
AffirmIfEqual(ts_id, to_unsigned(cc_source_timestamp), to_unsigned(rtps.cc.src_timestamp));
|
||||||
rtps_stage <= CHECK;
|
rtps_stage <= CHECK;
|
||||||
rtps_cnt <= 0;
|
rtps_cnt <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_MIN_SN =>
|
when GET_MIN_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when GET_MAX_SN =>
|
when GET_MAX_SN =>
|
||||||
AffirmIfEqual(sn_id, convert_from_double_word(cc_seq_nr), convert_from_double_word(rtps.cc.seq_nr));
|
AffirmIfEqual(sn_id, to_unsigned(cc_seq_nr), to_unsigned(rtps.cc.seq_nr));
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|||||||
@ -29,6 +29,15 @@ architecture testbench of L0_mem_ctrl_test1 is
|
|||||||
signal addr : std_logic_vector(ADDR_WIDTH-1 downto 0) := (others => '0');
|
signal addr : std_logic_vector(ADDR_WIDTH-1 downto 0) := (others => '0');
|
||||||
signal reset : std_logic := '1';
|
signal reset : std_logic := '1';
|
||||||
shared variable SB : osvvm.ScoreBoardPkg_slv.ScoreBoardPType;
|
shared variable SB : osvvm.ScoreBoardPkg_slv.ScoreBoardPType;
|
||||||
|
signal stim_done, test_done : std_logic := '0';
|
||||||
|
|
||||||
|
-- *FUNCTION DECLARATION*
|
||||||
|
procedure wait_on_complete is
|
||||||
|
begin
|
||||||
|
if (test_done /= '1') then
|
||||||
|
wait until test_done = '1';
|
||||||
|
end if;
|
||||||
|
end procedure;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
@ -69,6 +78,7 @@ begin
|
|||||||
RV.InitSeed(RV'instance_name);
|
RV.InitSeed(RV'instance_name);
|
||||||
|
|
||||||
Log("Initiating Test", INFO);
|
Log("Initiating Test", INFO);
|
||||||
|
stim_done <= '0';
|
||||||
valid_in <= '0';
|
valid_in <= '0';
|
||||||
data_in <= (others => '0');
|
data_in <= (others => '0');
|
||||||
reset <= '1';
|
reset <= '1';
|
||||||
@ -193,10 +203,8 @@ begin
|
|||||||
wait until rising_edge(clk);
|
wait until rising_edge(clk);
|
||||||
wait until rising_edge(clk);
|
wait until rising_edge(clk);
|
||||||
|
|
||||||
-- Wait until test Completion
|
stim_done <= '1';
|
||||||
if (not SB.empty) then
|
wait_on_complete;
|
||||||
wait until SB.empty;
|
|
||||||
end if;
|
|
||||||
TranscriptOpen(RESULTS_FILE, APPEND_MODE);
|
TranscriptOpen(RESULTS_FILE, APPEND_MODE);
|
||||||
SetTranscriptMirror;
|
SetTranscriptMirror;
|
||||||
ReportAlerts;
|
ReportAlerts;
|
||||||
@ -217,6 +225,17 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|
||||||
|
done_proc : process(clk)
|
||||||
|
begin
|
||||||
|
if rising_edge(clk) then
|
||||||
|
if (stim_done = '1' and SB.empty) then
|
||||||
|
test_done <= '1';
|
||||||
|
else
|
||||||
|
test_done <= '0';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
clock_prc : process
|
clock_prc : process
|
||||||
begin
|
begin
|
||||||
clk <= '0';
|
clk <= '0';
|
||||||
|
|||||||
@ -140,13 +140,13 @@ begin
|
|||||||
locator => (
|
locator => (
|
||||||
0 => (
|
0 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & META_IPv4_MULTICAST_PORT,
|
portn => UDP_PORT_INVALID & META_IPv4_MULTICAST_PORT,
|
||||||
addr => RV.RandSlv(LOCATOR_ADDR_WIDTH)
|
addr => RV.RandSlv(LOCATOR_ADDR_WIDTH)
|
||||||
),
|
),
|
||||||
1 => (
|
1 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => RV.RandSlv(LOCATOR_PORT_WIDTH),
|
portn => RV.RandSlv(LOCATOR_PORT_WIDTH),
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_META_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_META_ADDRESS
|
||||||
),
|
),
|
||||||
others => EMPTY_LOCATOR
|
others => EMPTY_LOCATOR
|
||||||
)
|
)
|
||||||
@ -175,7 +175,8 @@ begin
|
|||||||
-- USER
|
-- USER
|
||||||
when others =>
|
when others =>
|
||||||
tmp_id := ENTITYID(k);
|
tmp_id := ENTITYID(k);
|
||||||
ref2 := (k => '1', others => '0');
|
ref2 := (others => '0');
|
||||||
|
ref2(k) := '1';
|
||||||
end case;
|
end case;
|
||||||
|
|
||||||
for l in 0 to 1 loop -- Reader/Writer Source
|
for l in 0 to 1 loop -- Reader/Writer Source
|
||||||
|
|||||||
@ -112,6 +112,7 @@ begin
|
|||||||
variable RV : RandomPType;
|
variable RV : RandomPType;
|
||||||
variable t1, t2, t3 : natural := 0;
|
variable t1, t2, t3 : natural := 0;
|
||||||
variable tmp : std_logic_vector(0 to NUM_ENDPOINTS) := (others => '0');
|
variable tmp : std_logic_vector(0 to NUM_ENDPOINTS) := (others => '0');
|
||||||
|
variable tmp_packet : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
|
||||||
|
|
||||||
procedure gen_rand_packet(size : in natural; output : inout TEST_PACKET_TYPE) is
|
procedure gen_rand_packet(size : in natural; output : inout TEST_PACKET_TYPE) is
|
||||||
variable tmp : natural := 0;
|
variable tmp : natural := 0;
|
||||||
@ -193,11 +194,14 @@ begin
|
|||||||
push_reference(1, stimulus(t3));
|
push_reference(1, stimulus(t3));
|
||||||
start_test;
|
start_test;
|
||||||
-- Wait until begining of t3 sending
|
-- Wait until begining of t3 sending
|
||||||
tmp := (t3 => '0', others => '1');
|
tmp := (others => '1');
|
||||||
|
tmp(t3) := '0';
|
||||||
wait on rd_sig until packet_sent = tmp and rd_sig = not tmp;
|
wait on rd_sig until packet_sent = tmp and rd_sig = not tmp;
|
||||||
|
|
||||||
-- Reset Input
|
-- Reset Input
|
||||||
stimulus := (t3 => stimulus(t3), others => EMPTY_TEST_PACKET);
|
tmp_packet := stimulus(t3);
|
||||||
|
stimulus := (others => EMPTY_TEST_PACKET);
|
||||||
|
stimulus(t3) := tmp_packet;
|
||||||
Log("Begin Test 2", INFO);
|
Log("Begin Test 2", INFO);
|
||||||
-- Min Valid Packet
|
-- Min Valid Packet
|
||||||
gen_rand_packet(4, stimulus(t1));
|
gen_rand_packet(4, stimulus(t1));
|
||||||
@ -213,11 +217,14 @@ begin
|
|||||||
gen_rand_packet(1, stimulus(t1));
|
gen_rand_packet(1, stimulus(t1));
|
||||||
start_test;
|
start_test;
|
||||||
-- Wait until all but t1 sent
|
-- Wait until all but t1 sent
|
||||||
tmp := (t1 => '0', others => '1');
|
tmp := (others => '1');
|
||||||
|
tmp(t1) := '0';
|
||||||
wait on rd_sig until packet_sent = tmp and rd_sig = not tmp;
|
wait on rd_sig until packet_sent = tmp and rd_sig = not tmp;
|
||||||
|
|
||||||
-- reset Input
|
-- reset Input
|
||||||
stimulus := (t1 => stimulus(t1), others => EMPTY_TEST_PACKET);
|
tmp_packet := stimulus(t1);
|
||||||
|
stimulus := (others => EMPTY_TEST_PACKET) ;
|
||||||
|
stimulus(t1) := tmp_packet;
|
||||||
Log("Begin Test 3", INFO);
|
Log("Begin Test 3", INFO);
|
||||||
for i in 1 to NUM_ENDPOINTS+1 loop
|
for i in 1 to NUM_ENDPOINTS+1 loop
|
||||||
t3 := (t1+i) mod (NUM_ENDPOINTS+1);
|
t3 := (t1+i) mod (NUM_ENDPOINTS+1);
|
||||||
|
|||||||
@ -76,7 +76,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -142,7 +142,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Volatile, Best Effort, Keyed) - Level 0 - Metatraffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Volatile, Best Effort, Keyed) - Metatraffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -76,7 +76,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -142,7 +142,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Volatile, Reliable, Keyed) - Level 0 - Metatraffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Volatile, Reliable, Keyed) - Metatraffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -198,7 +198,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Transient Local, Best Effort, Keyed) - Level 0 - User Traffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Transient Local, Best Effort, Keyed) - User Traffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -198,7 +198,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Transient Local, Reliable, Keyed) - Level 0 - User Traffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Transient Local, Reliable, Keyed) - User Traffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -198,7 +198,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Volatile, Best Effort, Keyed) - Level 0 - User Traffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Volatile, Best Effort, Keyed) - User Traffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -198,7 +198,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Volatile, Reliable, Keyed) - Level 0 - User Traffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Volatile, Reliable, Keyed) - User Traffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -198,7 +198,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Volatile, Reliable, Non Keyed) - Level 0 - User Traffic Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Volatile, Reliable, Non Keyed) - User Traffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -60,7 +60,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -213,7 +213,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Automatic Liveliness) - Level 0 - Liveliness Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Automatic Liveliness) - Liveliness Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -60,7 +60,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => MANUAL_BY_TOPIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => MANUAL_BY_TOPIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
HEARTBEAT_RESPONSE_DELAY => DURATION_ZERO,
|
||||||
@ -213,7 +213,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader - (Manual by Topic Liveliness) - Level 0 - Liveliness Handling");
|
SetAlertLogName("rtps_reader - Level 0 - (Manual by Topic Liveliness) - Liveliness Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -70,7 +70,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -149,7 +149,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer - (Volatile, Best Effort, Keyed, By Reception Timestamp, Push Mode) - Level 0 - Metatraffic Handling");
|
SetAlertLogName("rtps_writer - Level 0 - (Volatile, Best Effort, Keyed, By Reception Timestamp, Push Mode) - Metatraffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -70,7 +70,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -149,7 +149,7 @@ begin
|
|||||||
end procedure;
|
end procedure;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer - (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - Level 0 - Metatraffic Handling");
|
SetAlertLogName("rtps_writer - Level 0 - (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - Metatraffic Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -54,7 +54,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -183,7 +183,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - Level 0 - Reader Liveliness Handling");
|
SetAlertLogName("rtps_writer - Level 0 - (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - Reader Liveliness Handling");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -83,7 +83,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => gen_duration(5,0),
|
HEARTBEAT_RESPONSE_DELAY => gen_duration(5,0),
|
||||||
@ -245,7 +245,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader (Transient Local, Reliable, Keyed) - Level 1 - RTPS Output");
|
SetAlertLogName("rtps_reader - Level 1 - (Transient Local, Reliable, Keyed) - RTPS Output");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -84,7 +84,7 @@ begin
|
|||||||
uut : entity work.rtps_reader(arch)
|
uut : entity work.rtps_reader(arch)
|
||||||
generic map (
|
generic map (
|
||||||
ENTITYID => DEFAULT_READER_ENTITYID,
|
ENTITYID => DEFAULT_READER_ENTITYID,
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
HEARTBEAT_RESPONSE_DELAY => gen_duration(5,0),
|
HEARTBEAT_RESPONSE_DELAY => gen_duration(5,0),
|
||||||
@ -246,7 +246,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_reader (Volatile, Reliable, Keyed) - Level 1 - RTPS Output");
|
SetAlertLogName("rtps_reader - Level 1 - (Volatile, Reliable, Keyed) - RTPS Output");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Transient Local, Best Effort, Keyed, By Reception Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Transient Local, Best Effort, Keyed, By Reception Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Transient Local, Reliable, Keyed, By Reception Timestamp, Pull Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Transient Local, Reliable, Keyed, By Reception Timestamp, Pull Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
DURABILITY_QOS => TRANSIENT_LOCAL_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Transient Local, Reliable, Keyed, By Reception Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Transient Local, Reliable, Keyed, By Reception Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
RELIABILITY_QOS => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Best Effort, Keyed, By Reception Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Best Effort, Keyed, By Reception Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Keyed, By Reception Timestamp, Pull Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Reliable, Keyed, By Reception Timestamp, Pull Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -336,7 +336,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Reliable, Keyed, By Reception Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -337,7 +337,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Keyed, By Source Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Reliable, Keyed, By Source Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -77,7 +77,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => AUTOMATIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -339,7 +339,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Non Keyed, By Reception Timestamp, Push Mode) - Level 1 - RTPS Output (DATA & GAP)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Reliable, Non Keyed, By Reception Timestamp, Push Mode) - RTPS Output (DATA & GAP)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -76,7 +76,7 @@ begin
|
|||||||
-- Unit Under Test
|
-- Unit Under Test
|
||||||
uut : entity work.rtps_writer(arch)
|
uut : entity work.rtps_writer(arch)
|
||||||
generic map (
|
generic map (
|
||||||
RELIABILTY_QOS => RELIABLE_RELIABILITY_QOS,
|
RELIABILITY_QOS => RELIABLE_RELIABILITY_QOS,
|
||||||
LIVELINESS_QOS => MANUAL_BY_TOPIC_LIVELINESS_QOS,
|
LIVELINESS_QOS => MANUAL_BY_TOPIC_LIVELINESS_QOS,
|
||||||
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
DURABILITY_QOS => VOLATILE_DURABILITY_QOS,
|
||||||
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
DESTINATION_ORDER_QOS => BY_RECEPTION_TIMESTAMP_DESTINATION_ORDER_QOS,
|
||||||
@ -277,7 +277,7 @@ begin
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
SetAlertLogName("rtps_writer (Volatile, Reliable, Keyed, By Reception Timestamp, Pull Mode) - Level 1 - RTPS Output (HEARTBEAT)");
|
SetAlertLogName("rtps_writer - Level 1 - (Volatile, Reliable, Keyed, By Reception Timestamp, Pull Mode) - RTPS Output (HEARTBEAT)");
|
||||||
SetAlertEnable(FAILURE, TRUE);
|
SetAlertEnable(FAILURE, TRUE);
|
||||||
SetAlertEnable(ERROR, TRUE);
|
SetAlertEnable(ERROR, TRUE);
|
||||||
SetAlertEnable(WARNING, TRUE);
|
SetAlertEnable(WARNING, TRUE);
|
||||||
|
|||||||
@ -175,7 +175,7 @@ package user_config is
|
|||||||
constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (
|
constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (
|
||||||
15 => BEST_EFFORT_RELIABILITY_QOS,
|
15 => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
NUM_READERS+3 => BEST_EFFORT_RELIABILITY_QOS,
|
NUM_READERS+3 => BEST_EFFORT_RELIABILITY_QOS,
|
||||||
others => DEFAULT_RELIABILTY_QOS
|
others => DEFAULT_RELIABILITY_QOS
|
||||||
);
|
);
|
||||||
-- (Only relevant to Writers)
|
-- (Only relevant to Writers)
|
||||||
constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (
|
constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (
|
||||||
@ -215,4 +215,7 @@ package user_config is
|
|||||||
-- TESTING PARAMETERS
|
-- TESTING PARAMETERS
|
||||||
constant TEST_STRING : string := "TEST_CONFIG_1";
|
constant TEST_STRING : string := "TEST_CONFIG_1";
|
||||||
|
|
||||||
|
-- Set to TRUE for Simulation Testing (Extra Code generated)
|
||||||
|
constant SIMULATION_FLAG : boolean := TRUE;
|
||||||
|
|
||||||
end package;
|
end package;
|
||||||
@ -84,15 +84,15 @@ analyze Level_0/L0_dds_reader_test7_arzkriu.vhd
|
|||||||
|
|
||||||
simulate L0_rtps_handler_test1
|
simulate L0_rtps_handler_test1
|
||||||
simulate L0_rtps_handler_test2
|
simulate L0_rtps_handler_test2
|
||||||
|
simulate L0_rtps_out_test1
|
||||||
|
simulate L0_mem_ctrl_test1
|
||||||
simulate L0_rtps_builtin_endpoint_test1
|
simulate L0_rtps_builtin_endpoint_test1
|
||||||
simulate L0_rtps_builtin_endpoint_test2
|
simulate L0_rtps_builtin_endpoint_test2
|
||||||
simulate L0_rtps_builtin_endpoint_test3
|
simulate L0_rtps_builtin_endpoint_test3
|
||||||
simulate L0_rtps_builtin_endpoint_test4
|
simulate L0_rtps_builtin_endpoint_test4
|
||||||
simulate L0_rtps_builtin_endpoint_test5
|
simulate L0_rtps_builtin_endpoint_test5
|
||||||
simulate L0_rtps_builtin_endpoint_test6
|
simulate L0_rtps_builtin_endpoint_test6
|
||||||
simulate L0_rtps_out_test1
|
|
||||||
simulate L1_rtps_builtin_endpoint_test1
|
simulate L1_rtps_builtin_endpoint_test1
|
||||||
simulate L0_mem_ctrl_test1
|
|
||||||
simulate L0_rtps_reader_test1_vrk
|
simulate L0_rtps_reader_test1_vrk
|
||||||
simulate L0_rtps_reader_test1_vbk
|
simulate L0_rtps_reader_test1_vbk
|
||||||
simulate L0_rtps_reader_test2_vrk
|
simulate L0_rtps_reader_test2_vrk
|
||||||
@ -106,6 +106,7 @@ simulate L1_rtps_reader_test1_vrk
|
|||||||
simulate L1_rtps_reader_test1_trk
|
simulate L1_rtps_reader_test1_trk
|
||||||
simulate L0_rtps_writer_test1_vrkdp
|
simulate L0_rtps_writer_test1_vrkdp
|
||||||
simulate L0_rtps_writer_test1_vbkdp
|
simulate L0_rtps_writer_test1_vbkdp
|
||||||
|
simulate L0_rtps_writer_test2_vrkdp
|
||||||
simulate L1_rtps_writer_test1_vrkdp
|
simulate L1_rtps_writer_test1_vrkdp
|
||||||
simulate L1_rtps_writer_test1_trkdp
|
simulate L1_rtps_writer_test1_trkdp
|
||||||
simulate L1_rtps_writer_test1_tbkdp
|
simulate L1_rtps_writer_test1_tbkdp
|
||||||
@ -115,7 +116,6 @@ simulate L1_rtps_writer_test1_vrksp
|
|||||||
simulate L1_rtps_writer_test1_vrkdn
|
simulate L1_rtps_writer_test1_vrkdn
|
||||||
simulate L1_rtps_writer_test1_trkdn
|
simulate L1_rtps_writer_test1_trkdn
|
||||||
simulate L1_rtps_writer_test2_vrkdn
|
simulate L1_rtps_writer_test2_vrkdn
|
||||||
simulate L0_rtps_writer_test2_vrkdp
|
|
||||||
simulate L0_dds_writer_test1_aik
|
simulate L0_dds_writer_test1_aik
|
||||||
simulate L0_dds_writer_test1_ain
|
simulate L0_dds_writer_test1_ain
|
||||||
simulate L0_dds_writer_test1_lik
|
simulate L0_dds_writer_test1_lik
|
||||||
|
|||||||
@ -155,7 +155,7 @@ architecture arch of dds_reader is
|
|||||||
-- Address pointing to the beginning of the first Instance Data Frame
|
-- Address pointing to the beginning of the first Instance Data Frame
|
||||||
constant FIRST_INSTANCE_ADDRESS : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) := (others => '0');
|
constant FIRST_INSTANCE_ADDRESS : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) := (others => '0');
|
||||||
|
|
||||||
-- *SAMPLE MEMORY FRAME FORMAT*
|
-- *SAMPLE MEMORY FRAME FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant SMF_STATUS_INFO_OFFSET : natural := 0;
|
constant SMF_STATUS_INFO_OFFSET : natural := 0;
|
||||||
constant SMF_TIMESTAMP_OFFSET : natural := 1;
|
constant SMF_TIMESTAMP_OFFSET : natural := 1;
|
||||||
@ -173,12 +173,12 @@ architecture arch of dds_reader is
|
|||||||
constant SMF_PREV_ADDR_OFFSET : natural := SMF_NO_WRITERS_GEN_CNT_OFFSET + 1;
|
constant SMF_PREV_ADDR_OFFSET : natural := SMF_NO_WRITERS_GEN_CNT_OFFSET + 1;
|
||||||
constant SMF_NEXT_ADDR_OFFSET : natural := SMF_PREV_ADDR_OFFSET + 1;
|
constant SMF_NEXT_ADDR_OFFSET : natural := SMF_PREV_ADDR_OFFSET + 1;
|
||||||
|
|
||||||
-- *PAYLOAD MEMORY FRAME FORMAT*
|
-- *PAYLOAD MEMORY FRAME FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant PMF_NEXT_ADDR_OFFSET : natural := 0;
|
constant PMF_NEXT_ADDR_OFFSET : natural := 0;
|
||||||
constant PMF_PAYLOAD_OFFSET : natural := 1;
|
constant PMF_PAYLOAD_OFFSET : natural := 1;
|
||||||
|
|
||||||
-- *INSTANCE MEMORY FRAME OFFSET*
|
-- *INSTANCE MEMORY FRAME FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant IMF_NEXT_ADDR_OFFSET : natural := 0;
|
constant IMF_NEXT_ADDR_OFFSET : natural := 0;
|
||||||
constant IMF_KEY_HASH_OFFSET : natural := 1;
|
constant IMF_KEY_HASH_OFFSET : natural := 1;
|
||||||
@ -195,7 +195,7 @@ architecture arch of dds_reader is
|
|||||||
end function;
|
end function;
|
||||||
constant IMF_WRITER_BITMAP_OFFSET : natural := gen_imf_writer_bitmap_offset(TIME_BASED_FILTER_QOS);
|
constant IMF_WRITER_BITMAP_OFFSET : natural := gen_imf_writer_bitmap_offset(TIME_BASED_FILTER_QOS);
|
||||||
|
|
||||||
-- *INSTANCE MEMORY FRAME FORMAT FLAGS*
|
-- *INSTANCE MEMORY FRAME FIELD FLAGS*
|
||||||
-- Flags mapping to the respective Endpoint Memory Frame Fields
|
-- Flags mapping to the respective Endpoint Memory Frame Fields
|
||||||
constant IMF_FLAG_WIDTH : natural := 7;
|
constant IMF_FLAG_WIDTH : natural := 7;
|
||||||
constant IMF_KEY_HASH_FLAG : std_logic_vector(0 to IMF_FLAG_WIDTH-1) := (0 => '1', others => '0');
|
constant IMF_KEY_HASH_FLAG : std_logic_vector(0 to IMF_FLAG_WIDTH-1) := (0 => '1', others => '0');
|
||||||
@ -218,15 +218,22 @@ architecture arch of dds_reader is
|
|||||||
REMOVE_INSTANCE, UNMARK_INSTANCES, RESET_MEMORY);
|
REMOVE_INSTANCE, UNMARK_INSTANCES, RESET_MEMORY);
|
||||||
-- *Instance Memory Opcodes*
|
-- *Instance Memory Opcodes*
|
||||||
-- OPCODE DESCRIPTION
|
-- OPCODE DESCRIPTION
|
||||||
-- SEARCH_INSTANCE_HASH Search Instance based on Key Hash pointed by key_hash.
|
-- SEARCH_INSTANCE_HASH Search Instance based on Key Hash pointed by "key_hash".
|
||||||
-- SEARCH_INSTANCE_ADDR Search Instance based on Instance Pointer pointed by inst_addr_update. [This is needed to mark the previous Instance for Instance Removal]
|
-- Set "inst_addr_base" to Base Address of found Instance, of INSTANCE_MEMORY_MAX_ADDRESS if nothing found.
|
||||||
|
-- "inst_data" contains Instance Data according to "inst_mem_fields".
|
||||||
|
-- SEARCH_INSTANCE_ADDR Search Instance based on Instance Pointer pointed by "inst_addr_update".
|
||||||
|
-- Set "inst_addr_base" to "inst_addr_update"
|
||||||
|
-- "inst_data" contains Instance Data according to "inst_mem_fields".
|
||||||
-- INSERT_INSTANCE Insert Instance to memory. The Instance is inserted in Key Hash Numerical Order.
|
-- INSERT_INSTANCE Insert Instance to memory. The Instance is inserted in Key Hash Numerical Order.
|
||||||
-- UPDATE_INSTANCE Update Instance Data pointed by inst_addr_base. (inst_mem_fields specifies which Fields to update)
|
-- UPDATE_INSTANCE Update Instance Data pointed by "inst_addr_base" according to "inst_mem_fields"
|
||||||
-- GET_FIRST_INSTANCE Get Instance Data of first Instance (Instance with smallest Key Hash Numerical Order). (inst_mem_fields specifies which Fields to get)
|
-- GET_FIRST_INSTANCE Get Instance Data of first Instance (Instance with smallest Key Hash Numerical Order) according to "inst_mem_fields".
|
||||||
-- GET_NEXT_INSTANCE Get Instance Data of next Instance (from the Instance pointed by inst_addr_base) (inst_mem_fields specifies which Fields to get)
|
-- Set "inst_addr_base" to Address of Instance or INSTANCE_MEMORY_MAX_ADDRESS if no Instance in Memory.
|
||||||
-- REMOVE_INSTANCE Remove Instance pointed by inst_addr_base
|
-- GET_NEXT_INSTANCE Get Instance Data of next Instance (from the Instance pointed by "inst_addr_base") according to "inst_mem_fields".
|
||||||
-- GET_INSTANCE Get Data of Instance pointed by inst_addr_update. (inst_mem_fields specifies which Fields to get)
|
-- Set "inst_addr_base" to Address of Instance or INSTANCE_MEMORY_MAX_ADDRESS if no other Instance in Memory.
|
||||||
-- UNMARK_INSTANCES Reset the MARK_FLAG of all stored Instances
|
-- REMOVE_INSTANCE Remove Instance pointed by "inst_addr_base".
|
||||||
|
-- GET_INSTANCE Get Data of Instance pointed by "inst_addr_update" according to "inst_mem_fields".
|
||||||
|
-- Already fetched Data of the Participant is not modified.
|
||||||
|
-- UNMARK_INSTANCES Reset the MARK_FLAG of all Instances in Memory.
|
||||||
type INSTANCE_OPCODE_TYPE is (NOP, SEARCH_INSTANCE_HASH, SEARCH_INSTANCE_ADDR, INSERT_INSTANCE, UPDATE_INSTANCE, GET_FIRST_INSTANCE, GET_NEXT_INSTANCE, REMOVE_INSTANCE,
|
type INSTANCE_OPCODE_TYPE is (NOP, SEARCH_INSTANCE_HASH, SEARCH_INSTANCE_ADDR, INSERT_INSTANCE, UPDATE_INSTANCE, GET_FIRST_INSTANCE, GET_NEXT_INSTANCE, REMOVE_INSTANCE,
|
||||||
GET_INSTANCE, UNMARK_INSTANCES);
|
GET_INSTANCE, UNMARK_INSTANCES);
|
||||||
type WRITER_BITMAP_ARRAY_TYPE is array (0 to round_div(MAX_REMOTE_ENDPOINTS, WORD_WIDTH)-1) of std_logic_vector(0 to WORD_WIDTH-1);
|
type WRITER_BITMAP_ARRAY_TYPE is array (0 to round_div(MAX_REMOTE_ENDPOINTS, WORD_WIDTH)-1) of std_logic_vector(0 to WORD_WIDTH-1);
|
||||||
@ -325,8 +332,8 @@ architecture arch of dds_reader is
|
|||||||
signal remove_oldest_sample, remove_oldest_sample_next : std_logic := '0';
|
signal remove_oldest_sample, remove_oldest_sample_next : std_logic := '0';
|
||||||
-- Denotes if the oldest sample of the Instance with 'key_hash' should be removed
|
-- Denotes if the oldest sample of the Instance with 'key_hash' should be removed
|
||||||
signal remove_oldest_inst_sample, remove_oldest_inst_sample_next : std_logic := '0';
|
signal remove_oldest_inst_sample, remove_oldest_inst_sample_next : std_logic := '0';
|
||||||
-- Remote Writer Endpoint Bitmap Position
|
-- Remote Writer ID
|
||||||
signal writer_pos, writer_pos_next : natural range 0 to MAX_REMOTE_ENDPOINTS-1 := 0;
|
signal writer_id, writer_id_next : natural range 0 to MAX_REMOTE_ENDPOINTS-1 := 0;
|
||||||
-- Key Hash Latch
|
-- Key Hash Latch
|
||||||
signal key_hash, key_hash_next : KEY_HASH_TYPE := HANDLE_NIL;
|
signal key_hash, key_hash_next : KEY_HASH_TYPE := HANDLE_NIL;
|
||||||
-- RTPS Return Code Latch
|
-- RTPS Return Code Latch
|
||||||
@ -509,7 +516,7 @@ architecture arch of dds_reader is
|
|||||||
alias next_inst_next : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) is inst_addr_latch_2_next;
|
alias next_inst_next : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) is inst_addr_latch_2_next;
|
||||||
alias first_payload : unsigned(PAYLOAD_MEMORY_ADDR_WIDTH-1 downto 0) is payload_addr_latch_2;
|
alias first_payload : unsigned(PAYLOAD_MEMORY_ADDR_WIDTH-1 downto 0) is payload_addr_latch_2;
|
||||||
alias first_payload_next : unsigned(PAYLOAD_MEMORY_ADDR_WIDTH-1 downto 0) is payload_addr_latch_2_next;
|
alias first_payload_next : unsigned(PAYLOAD_MEMORY_ADDR_WIDTH-1 downto 0) is payload_addr_latch_2_next;
|
||||||
alias has_data : std_logic is sample_status_info(SSI_PAYLOAD_FLAG);
|
alias has_data : std_logic is sample_status_info(SSI_DATA_FLAG);
|
||||||
alias has_key_hash : std_logic is sample_status_info(SSI_KEY_HASH_FLAG);
|
alias has_key_hash : std_logic is sample_status_info(SSI_KEY_HASH_FLAG);
|
||||||
|
|
||||||
-- *FUNCTION DECLARATION*
|
-- *FUNCTION DECLARATION*
|
||||||
@ -533,6 +540,19 @@ architecture arch of dds_reader is
|
|||||||
return ret;
|
return ret;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
-- This function caps the range of a natural.
|
||||||
|
-- This is needed, because during simulation some values may be outside the range due to delta time delays.
|
||||||
|
function cap_range(input : in integer; max : in natural) return natural is
|
||||||
|
begin
|
||||||
|
if (input > max and SIMULATION_FLAG) then
|
||||||
|
return max;
|
||||||
|
elsif (input < 0 and SIMULATION_FLAG) then
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return input;
|
||||||
|
end if;
|
||||||
|
end function;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
--*****COMPONENT INSTANTIATION*****
|
--*****COMPONENT INSTANTIATION*****
|
||||||
@ -675,7 +695,7 @@ begin
|
|||||||
sample_addr_latch_3_next <= sample_addr_latch_3;
|
sample_addr_latch_3_next <= sample_addr_latch_3;
|
||||||
sample_addr_latch_4_next <= sample_addr_latch_4;
|
sample_addr_latch_4_next <= sample_addr_latch_4;
|
||||||
sample_addr_latch_5_next <= sample_addr_latch_5;
|
sample_addr_latch_5_next <= sample_addr_latch_5;
|
||||||
writer_pos_next <= writer_pos;
|
writer_id_next <= writer_id;
|
||||||
key_hash_next <= key_hash;
|
key_hash_next <= key_hash;
|
||||||
sample_status_info_next <= sample_status_info;
|
sample_status_info_next <= sample_status_info;
|
||||||
remove_oldest_sample_next <= remove_oldest_sample;
|
remove_oldest_sample_next <= remove_oldest_sample;
|
||||||
@ -911,7 +931,7 @@ begin
|
|||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Latch Writer Pos
|
-- Latch Writer Pos
|
||||||
writer_pos_next <= to_integer(unsigned(data_in_rtps));
|
writer_id_next <= to_integer(unsigned(data_in_rtps));
|
||||||
stage_next <= REMOVE_WRITER;
|
stage_next <= REMOVE_WRITER;
|
||||||
cnt_next <= 2;
|
cnt_next <= 2;
|
||||||
else
|
else
|
||||||
@ -925,7 +945,7 @@ begin
|
|||||||
inst_data_next2.writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
inst_data_next2.writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
||||||
|
|
||||||
-- NOT_ALIVE_NO_WRITERS Transition
|
-- NOT_ALIVE_NO_WRITERS Transition
|
||||||
if (tmp_bitmap = (tmp_bitmap'range => '0') and inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '0') then
|
if (tmp_bitmap = (tmp_bitmap'reverse_range => '0') and inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '0') then
|
||||||
trigger_sample_gen_next <= '1';
|
trigger_sample_gen_next <= '1';
|
||||||
inst_data_next2.status_info(ISI_GENERATE_SAMPLE_FLAG) <= '1';
|
inst_data_next2.status_info(ISI_GENERATE_SAMPLE_FLAG) <= '1';
|
||||||
inst_data_next2.status_info(ISI_NOT_ALIVE_NO_WRITERS_FLAG) <= '1';
|
inst_data_next2.status_info(ISI_NOT_ALIVE_NO_WRITERS_FLAG) <= '1';
|
||||||
@ -1162,12 +1182,13 @@ begin
|
|||||||
sample_valid_in <= '1';
|
sample_valid_in <= '1';
|
||||||
sample_addr <= cur_sample + SMF_STATUS_INFO_OFFSET;
|
sample_addr <= cur_sample + SMF_STATUS_INFO_OFFSET;
|
||||||
sample_write_data <= data_in_rtps;
|
sample_write_data <= data_in_rtps;
|
||||||
|
sample_write_data(SSI_KEY_HASH_FLAG) <= '0'; -- Key Hash Flag is not stored
|
||||||
sample_write_data(SSI_READ_FLAG) <= '0';
|
sample_write_data(SSI_READ_FLAG) <= '0';
|
||||||
sample_write_data(SSI_ALIGNED_FLAG) <= data_in_rtps(SSI_PAYLOAD_FLAG);
|
sample_write_data(SSI_ALIGNED_FLAG) <= data_in_rtps(SSI_DATA_FLAG);
|
||||||
-- Latch Status Info
|
-- Latch Status Info
|
||||||
sample_status_info_next <= data_in_rtps;
|
sample_status_info_next <= data_in_rtps;
|
||||||
sample_status_info_next(SSI_READ_FLAG) <= '0';
|
sample_status_info_next(SSI_READ_FLAG) <= '0';
|
||||||
sample_status_info_next(SSI_ALIGNED_FLAG) <= data_in_rtps(SSI_PAYLOAD_FLAG);
|
sample_status_info_next(SSI_ALIGNED_FLAG) <= data_in_rtps(SSI_DATA_FLAG);
|
||||||
-- Memory Flow Control Guard
|
-- Memory Flow Control Guard
|
||||||
if (sample_ready_in = '1') then
|
if (sample_ready_in = '1') then
|
||||||
ready_in_rtps <= '1';
|
ready_in_rtps <= '1';
|
||||||
@ -1297,7 +1318,7 @@ begin
|
|||||||
if (valid_in_rtps = '1') then
|
if (valid_in_rtps = '1') then
|
||||||
ready_in_rtps <= '1';
|
ready_in_rtps <= '1';
|
||||||
-- Latch Input, but do not pass to Memory
|
-- Latch Input, but do not pass to Memory
|
||||||
writer_pos_next <= to_integer(unsigned(data_in_rtps));
|
writer_id_next <= cap_range(to_integer(unsigned(data_in_rtps)), MAX_REMOTE_ENDPOINTS-1);
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- SET Payload Address
|
-- SET Payload Address
|
||||||
@ -1597,6 +1618,7 @@ begin
|
|||||||
|
|
||||||
-- Wait for Instance Search to finish
|
-- Wait for Instance Search to finish
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_IGNORE_DEADLINE_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_DISPOSED_CNT_FLAG or IMF_NO_WRITERS_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (not WITH_KEY or inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (not WITH_KEY or inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
@ -1763,7 +1785,7 @@ begin
|
|||||||
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
||||||
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
||||||
tmp_bitmap := (others => '0');
|
tmp_bitmap := (others => '0');
|
||||||
tmp_bitmap(writer_pos) := '1';
|
tmp_bitmap(writer_id) := '1';
|
||||||
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
||||||
|
|
||||||
if (DESTINATION_ORDER_QOS = BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS and newest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) then
|
if (DESTINATION_ORDER_QOS = BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS and newest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) then
|
||||||
@ -1822,7 +1844,7 @@ begin
|
|||||||
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
||||||
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
||||||
tmp_bitmap := (others => '0');
|
tmp_bitmap := (others => '0');
|
||||||
tmp_bitmap(writer_pos) := '1';
|
tmp_bitmap(writer_id) := '1';
|
||||||
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
||||||
|
|
||||||
if (DESTINATION_ORDER_QOS = BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS and newest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) then
|
if (DESTINATION_ORDER_QOS = BY_SOURCE_TIMESTAMP_DESTINATION_ORDER_QOS and newest_sample /= SAMPLE_MEMORY_MAX_ADDRESS) then
|
||||||
@ -2039,6 +2061,8 @@ begin
|
|||||||
|
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_WRITER_BITMAP_FLAG or IMF_DISPOSED_CNT_FLAG or IMF_NO_WRITERS_CNT_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_IGNORE_DEADLINE_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- DEFAULT STATUS INFO (LIVELINESS)
|
-- DEFAULT STATUS INFO (LIVELINESS)
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
tmp_update := IMF_STATUS_FLAG;
|
tmp_update := IMF_STATUS_FLAG;
|
||||||
@ -2054,9 +2078,9 @@ begin
|
|||||||
-- ALIVE/FILTERED/DISPOSE Operation
|
-- ALIVE/FILTERED/DISPOSE Operation
|
||||||
if (sample_status_info(SSI_UNREGISTERED_FLAG) /= '1') then
|
if (sample_status_info(SSI_UNREGISTERED_FLAG) /= '1') then
|
||||||
-- Write if Writer New for Instance
|
-- Write if Writer New for Instance
|
||||||
if (tmp_bitmap(writer_pos) /= '1') then
|
if (tmp_bitmap(writer_id) /= '1') then
|
||||||
-- Insert Writer
|
-- Insert Writer
|
||||||
tmp_bitmap(writer_pos) := '1';
|
tmp_bitmap(writer_id) := '1';
|
||||||
-- Convert Back
|
-- Convert Back
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
@ -2068,9 +2092,9 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
else
|
else
|
||||||
-- Write if Writer New for Instance
|
-- Write if Writer New for Instance
|
||||||
if (tmp_bitmap(writer_pos) /= '0') then
|
if (tmp_bitmap(writer_id) /= '0') then
|
||||||
-- Insert Writer
|
-- Insert Writer
|
||||||
tmp_bitmap(writer_pos) := '0';
|
tmp_bitmap(writer_id) := '0';
|
||||||
-- Convert Back
|
-- Convert Back
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
@ -2128,7 +2152,7 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- * -> NOT_ALIVE_NO_WRITERS Transition
|
-- * -> NOT_ALIVE_NO_WRITERS Transition
|
||||||
elsif (sample_status_info(SSI_UNREGISTERED_FLAG) = '1' and tmp_bitmap = (tmp_bitmap'range => '0')) then
|
elsif (sample_status_info(SSI_UNREGISTERED_FLAG) = '1' and tmp_bitmap = (tmp_bitmap'reverse_range => '0')) then
|
||||||
-- NOT_ALIVE -> NOT_ALIVE_NO_WRITERS
|
-- NOT_ALIVE -> NOT_ALIVE_NO_WRITERS
|
||||||
if (inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '1' or inst_data.status_info(ISI_NOT_ALIVE_NO_WRITERS_FLAG) = '1') then
|
if (inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '1' or inst_data.status_info(ISI_NOT_ALIVE_NO_WRITERS_FLAG) = '1') then
|
||||||
tmp_bool := FALSE;
|
tmp_bool := FALSE;
|
||||||
@ -2206,7 +2230,7 @@ begin
|
|||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Stale Instance Transition
|
-- Stale Instance Transition
|
||||||
if (inst_data.sample_cnt = 0 and inst_data.writer_bitmap /= ZERO_WRITER_BITMAP_ARRAY and tmp_bitmap = (tmp_bitmap'range => '0')) then
|
if (inst_data.sample_cnt = 0 and inst_data.writer_bitmap /= ZERO_WRITER_BITMAP_ARRAY and tmp_bitmap = (tmp_bitmap'reverse_range => '0')) then
|
||||||
stale_inst_cnt_next <= stale_inst_cnt + 1;
|
stale_inst_cnt_next <= stale_inst_cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
@ -2276,6 +2300,7 @@ begin
|
|||||||
|
|
||||||
-- Wait for instance Update to Complete
|
-- Wait for instance Update to Complete
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_DISPOSED_CNT_FLAG or IMF_NO_WRITERS_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- SET Disposed Generation Counter
|
-- SET Disposed Generation Counter
|
||||||
@ -2481,6 +2506,11 @@ begin
|
|||||||
end case;
|
end case;
|
||||||
when GENERATE_SAMPLE =>
|
when GENERATE_SAMPLE =>
|
||||||
-- Precondition: cur_sample set, cur_inst set, inst_data set (IMF_DISPOSED_CNT_FLAG, IMF_NO_WRITERS_CNT_FLAG)
|
-- Precondition: cur_sample set, cur_inst set, inst_data set (IMF_DISPOSED_CNT_FLAG, IMF_NO_WRITERS_CNT_FLAG)
|
||||||
|
|
||||||
|
-- Wait for Instane Data
|
||||||
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_DISPOSED_CNT_FLAG or IMF_NO_WRITERS_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- GET Next Sample (Empty List)
|
-- GET Next Sample (Empty List)
|
||||||
when 0 =>
|
when 0 =>
|
||||||
@ -2656,6 +2686,7 @@ begin
|
|||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
end if;
|
||||||
when GET_OLDEST_SAMPLE_INSTANCE =>
|
when GET_OLDEST_SAMPLE_INSTANCE =>
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
@ -2755,7 +2786,7 @@ begin
|
|||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
inst_op_start <= '1';
|
inst_op_start <= '1';
|
||||||
inst_opcode <= GET_INSTANCE;
|
inst_opcode <= GET_INSTANCE;
|
||||||
inst_mem_fields <= IMF_SAMPLE_CNT_FLAG or IMF_WRITER_BITMAP_FLAG;
|
inst_mem_fields <= IMF_SAMPLE_CNT_FLAG or IMF_WRITER_BITMAP_FLAG or IMF_STATUS_FLAG;
|
||||||
inst_addr_update <= cur_inst;
|
inst_addr_update <= cur_inst;
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
@ -2960,6 +2991,8 @@ begin
|
|||||||
|
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_SAMPLE_CNT_FLAG or IMF_WRITER_BITMAP_FLAG or IMF_STATUS_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Stale Instance Update
|
-- Stale Instance Update
|
||||||
@ -3045,12 +3078,16 @@ begin
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
when REMOVE_WRITER =>
|
when REMOVE_WRITER =>
|
||||||
|
-- Precondition: inst_data set (IMF_WRITER_BITMAP_FLAG, IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG)
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
when 0 =>
|
when 0 =>
|
||||||
|
assert check_mask(current_imf, IMF_WRITER_BITMAP_FLAG or IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- No More Instances
|
-- No More Instances
|
||||||
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
@ -3062,7 +3099,7 @@ begin
|
|||||||
tmp_bitmap := from_writer_bitmap_array(inst_data.writer_bitmap);
|
tmp_bitmap := from_writer_bitmap_array(inst_data.writer_bitmap);
|
||||||
|
|
||||||
-- Remove Writer
|
-- Remove Writer
|
||||||
tmp_bitmap(writer_pos) := '0';
|
tmp_bitmap(writer_id) := '0';
|
||||||
|
|
||||||
-- NOTE: writer_bitmap is not latched, since the memory process is latching it at the
|
-- NOTE: writer_bitmap is not latched, since the memory process is latching it at the
|
||||||
-- same clock cycle.
|
-- same clock cycle.
|
||||||
@ -3070,7 +3107,7 @@ begin
|
|||||||
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
||||||
|
|
||||||
-- NOT_ALIVE_NO_WRITERS Transition
|
-- NOT_ALIVE_NO_WRITERS Transition
|
||||||
if (tmp_bitmap = (tmp_bitmap'range => '0') and inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '0') then
|
if (tmp_bitmap = (tmp_bitmap'reverse_range => '0') and inst_data.status_info(ISI_NOT_ALIVE_DISPOSED_FLAG) = '0') then
|
||||||
trigger_sample_gen_next <= '1';
|
trigger_sample_gen_next <= '1';
|
||||||
status_info_update <= inst_data.status_info;
|
status_info_update <= inst_data.status_info;
|
||||||
status_info_update(ISI_NOT_ALIVE_NO_WRITERS_FLAG) <= '1';
|
status_info_update(ISI_NOT_ALIVE_NO_WRITERS_FLAG) <= '1';
|
||||||
@ -3085,7 +3122,7 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- Update Stale Instance Count
|
-- Update Stale Instance Count
|
||||||
if (tmp_bitmap = (tmp_bitmap'range => '0') and inst_data.sample_cnt = 0) then
|
if (tmp_bitmap = (tmp_bitmap'reverse_range => '0') and inst_data.sample_cnt = 0) then
|
||||||
stale_inst_cnt_next <= stale_inst_cnt + 1;
|
stale_inst_cnt_next <= stale_inst_cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
@ -3119,6 +3156,8 @@ begin
|
|||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Find and Remove First Stale Instance
|
-- Find and Remove First Stale Instance
|
||||||
when 0 =>
|
when 0 =>
|
||||||
|
assert check_mask(current_imf, IMF_SAMPLE_CNT_FLAG or IMF_WRITER_BITMAP_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Iterated through all Instances
|
-- Iterated through all Instances
|
||||||
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- NOTE: We should enter this state only if there is at least one stale Instance to be removed, so we should never enter this branch.
|
-- NOTE: We should enter this state only if there is at least one stale Instance to be removed, so we should never enter this branch.
|
||||||
@ -3150,7 +3189,7 @@ begin
|
|||||||
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
sample_cnt <= to_unsigned(1, WORD_WIDTH);
|
||||||
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
deadline <= (time + TIME_BASED_FILTER_QOS) when (TIME_BASED_FILTER_QOS /= DURATION_ZERO) else TIME_INVALID;
|
||||||
tmp_bitmap := (others => '0');
|
tmp_bitmap := (others => '0');
|
||||||
tmp_bitmap(writer_pos) := '1';
|
tmp_bitmap(writer_id) := '1';
|
||||||
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
writer_bitmap <= to_writer_bitmap_array(tmp_bitmap);
|
||||||
|
|
||||||
-- Latch Instance Pointer
|
-- Latch Instance Pointer
|
||||||
@ -3356,6 +3395,7 @@ begin
|
|||||||
when 7 =>
|
when 7 =>
|
||||||
-- Wait for Instance Data
|
-- Wait for Instance Data
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
assert (next_inst = inst_addr_base) severity FAILURE;
|
assert (next_inst = inst_addr_base) severity FAILURE;
|
||||||
|
|
||||||
-- DEFAULT
|
-- DEFAULT
|
||||||
@ -3793,6 +3833,7 @@ begin
|
|||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Wait for Instance Data
|
-- Wait for Instance Data
|
||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
assert (next_inst = inst_addr_base) severity FAILURE;
|
assert (next_inst = inst_addr_base) severity FAILURE;
|
||||||
|
|
||||||
-- DEFAULT
|
-- DEFAULT
|
||||||
@ -3947,6 +3988,7 @@ begin
|
|||||||
when 2 =>
|
when 2 =>
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
-- NOTE: If we have a presentation of consecutive same instance samples of multiple instances, we have to
|
-- NOTE: If we have a presentation of consecutive same instance samples of multiple instances, we have to
|
||||||
-- mark the instances we have already handled, in order to prevent the GET_NEXT_SAMPLE state to
|
-- mark the instances we have already handled, in order to prevent the GET_NEXT_SAMPLE state to
|
||||||
-- re-process them.
|
-- re-process them.
|
||||||
@ -3954,6 +3996,7 @@ begin
|
|||||||
if (si_sample_rank_sig = 0) then
|
if (si_sample_rank_sig = 0) then
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
|
|
||||||
inst_op_start <= '1';
|
inst_op_start <= '1';
|
||||||
inst_opcode <= UPDATE_INSTANCE;
|
inst_opcode <= UPDATE_INSTANCE;
|
||||||
inst_mem_fields <= IMF_STATUS_FLAG;
|
inst_mem_fields <= IMF_STATUS_FLAG;
|
||||||
@ -4175,6 +4218,8 @@ begin
|
|||||||
inst_mem_fields <= IMF_STATUS_FLAG or IMF_KEY_HASH_FLAG;
|
inst_mem_fields <= IMF_STATUS_FLAG or IMF_KEY_HASH_FLAG;
|
||||||
cnt_next <= 2;
|
cnt_next <= 2;
|
||||||
when 2 =>
|
when 2 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- DEFAULT
|
-- DEFAULT
|
||||||
@ -4265,6 +4310,8 @@ begin
|
|||||||
inst_mem_fields <= IMF_STATUS_FLAG;
|
inst_mem_fields <= IMF_STATUS_FLAG;
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
when 1 =>
|
when 1 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- DEFAULT
|
-- DEFAULT
|
||||||
@ -4482,6 +4529,8 @@ begin
|
|||||||
inst_mem_fields <= IMF_STATUS_FLAG;
|
inst_mem_fields <= IMF_STATUS_FLAG;
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
when 2 =>
|
when 2 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- Sample needs to be Generated
|
-- Sample needs to be Generated
|
||||||
@ -4505,6 +4554,8 @@ begin
|
|||||||
stage_next <= IDLE;
|
stage_next <= IDLE;
|
||||||
end if;
|
end if;
|
||||||
when 3 =>
|
when 3 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- RESOURCE_LIMITS_QOS (MAX_SAMPLES_PER_INSTANCE)
|
-- RESOURCE_LIMITS_QOS (MAX_SAMPLES_PER_INSTANCE)
|
||||||
if (WITH_KEY and MAX_SAMPLES_PER_INSTANCE /= LENGTH_UNLIMITED and inst_data.sample_cnt = unsigned(MAX_SAMPLES_PER_INSTANCE)) then
|
if (WITH_KEY and MAX_SAMPLES_PER_INSTANCE /= LENGTH_UNLIMITED and inst_data.sample_cnt = unsigned(MAX_SAMPLES_PER_INSTANCE)) then
|
||||||
if (HISTORY_QOS = KEEP_ALL_HISTORY_QOS and RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
|
if (HISTORY_QOS = KEEP_ALL_HISTORY_QOS and RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
|
||||||
@ -4724,6 +4775,8 @@ begin
|
|||||||
cnt_next <= 2;
|
cnt_next <= 2;
|
||||||
-- Check Instance
|
-- Check Instance
|
||||||
when 2 =>
|
when 2 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_KEY_HASH_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Reached End of Instances
|
-- Reached End of Instances
|
||||||
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
@ -4785,6 +4838,8 @@ begin
|
|||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= RESET_PAYLOAD_MEMORY;
|
stage_next <= RESET_PAYLOAD_MEMORY;
|
||||||
cnt_next <= 0;
|
cnt_next <= 0;
|
||||||
|
empty_sample_list_head_next <= FIRST_SAMPLE_ADDRESS;
|
||||||
|
empty_sample_list_tail_next <= MAX_SAMPLE_ADDRESS;
|
||||||
else
|
else
|
||||||
-- Continue
|
-- Continue
|
||||||
cur_sample_next <= cur_sample + SAMPLE_FRAME_SIZE;
|
cur_sample_next <= cur_sample + SAMPLE_FRAME_SIZE;
|
||||||
@ -4816,6 +4871,7 @@ begin
|
|||||||
if (cur_payload = MAX_PAYLOAD_ADDRESS) then
|
if (cur_payload = MAX_PAYLOAD_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= IDLE;
|
stage_next <= IDLE;
|
||||||
|
empty_payload_list_head_next <= FIRST_PAYLOAD_ADDRESS;
|
||||||
else
|
else
|
||||||
cur_payload_next <= cur_payload + PAYLOAD_FRAME_SIZE;
|
cur_payload_next <= cur_payload + PAYLOAD_FRAME_SIZE;
|
||||||
end if;
|
end if;
|
||||||
@ -4940,6 +4996,7 @@ begin
|
|||||||
when UPDATE_INSTANCE =>
|
when UPDATE_INSTANCE =>
|
||||||
current_imf_next <= current_imf or inst_mem_fields;
|
current_imf_next <= current_imf or inst_mem_fields;
|
||||||
inst_stage_next <= UPDATE_INSTANCE;
|
inst_stage_next <= UPDATE_INSTANCE;
|
||||||
|
|
||||||
if check_mask(inst_mem_fields,IMF_STATUS_FLAG) then
|
if check_mask(inst_mem_fields,IMF_STATUS_FLAG) then
|
||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
elsif check_mask(inst_mem_fields,IMF_SAMPLE_CNT_FLAG) then
|
elsif check_mask(inst_mem_fields,IMF_SAMPLE_CNT_FLAG) then
|
||||||
@ -5001,6 +5058,7 @@ begin
|
|||||||
else
|
else
|
||||||
current_imf_next <= current_imf or inst_mem_fields;
|
current_imf_next <= current_imf or inst_mem_fields;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- Get Instance Data
|
-- Get Instance Data
|
||||||
inst_stage_next <= GET_INSTANCE_DATA;
|
inst_stage_next <= GET_INSTANCE_DATA;
|
||||||
if check_mask(inst_mem_fields,IMF_KEY_HASH_FLAG) then
|
if check_mask(inst_mem_fields,IMF_KEY_HASH_FLAG) then
|
||||||
@ -6463,6 +6521,7 @@ begin
|
|||||||
if (inst_addr_base = MAX_INSTANCE_ADDRESS) then
|
if (inst_addr_base = MAX_INSTANCE_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
inst_stage_next <= IDLE;
|
inst_stage_next <= IDLE;
|
||||||
|
inst_empty_head_next <= FIRST_INSTANCE_ADDRESS;
|
||||||
else
|
else
|
||||||
inst_addr_base_next <= inst_addr_base + INSTANCE_FRAME_SIZE;
|
inst_addr_base_next <= inst_addr_base + INSTANCE_FRAME_SIZE;
|
||||||
end if;
|
end if;
|
||||||
@ -6484,14 +6543,14 @@ begin
|
|||||||
inst_stage <= RESET_MEMORY;
|
inst_stage <= RESET_MEMORY;
|
||||||
newest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
newest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
oldest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
oldest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
empty_sample_list_head <= FIRST_SAMPLE_ADDRESS;
|
empty_sample_list_head <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
empty_sample_list_tail <= MAX_SAMPLE_ADDRESS;
|
empty_sample_list_tail <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
empty_payload_list_head <= FIRST_PAYLOAD_ADDRESS;
|
empty_payload_list_head <= PAYLOAD_MEMORY_MAX_ADDRESS;
|
||||||
inst_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_occupied_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_occupied_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_next_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_next_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_prev_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_prev_addr_base <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_empty_head <= FIRST_INSTANCE_ADDRESS;
|
inst_empty_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
key_hash <= HANDLE_NIL;
|
key_hash <= HANDLE_NIL;
|
||||||
si_instance_handle_sig <= HANDLE_NIL;
|
si_instance_handle_sig <= HANDLE_NIL;
|
||||||
si_publication_handle_sig <= (others => (others => '0'));
|
si_publication_handle_sig <= (others => (others => '0'));
|
||||||
@ -6514,7 +6573,7 @@ begin
|
|||||||
sample_rej_last_reason <= NOT_REJECTED;
|
sample_rej_last_reason <= NOT_REJECTED;
|
||||||
rtps_return_code_latch <= ERROR;
|
rtps_return_code_latch <= ERROR;
|
||||||
dds_return_code_latch <= RETCODE_ERROR;
|
dds_return_code_latch <= RETCODE_ERROR;
|
||||||
writer_pos <= 0;
|
writer_id <= 0;
|
||||||
cnt <= 0;
|
cnt <= 0;
|
||||||
cnt2 <= 0;
|
cnt2 <= 0;
|
||||||
cnt3 <= 0;
|
cnt3 <= 0;
|
||||||
@ -6601,7 +6660,7 @@ begin
|
|||||||
sample_rej_last_reason <= sample_rej_last_reason_next;
|
sample_rej_last_reason <= sample_rej_last_reason_next;
|
||||||
rtps_return_code_latch <= rtps_return_code_latch_next;
|
rtps_return_code_latch <= rtps_return_code_latch_next;
|
||||||
dds_return_code_latch <= dds_return_code_latch_next;
|
dds_return_code_latch <= dds_return_code_latch_next;
|
||||||
writer_pos <= writer_pos_next;
|
writer_id <= writer_id_next;
|
||||||
cnt <= cnt_next;
|
cnt <= cnt_next;
|
||||||
cnt2 <= cnt2_next;
|
cnt2 <= cnt2_next;
|
||||||
cnt3 <= cnt3_next;
|
cnt3 <= cnt3_next;
|
||||||
@ -6624,7 +6683,7 @@ begin
|
|||||||
wait_for_sample_removal <= wait_for_sample_removal_next;
|
wait_for_sample_removal <= wait_for_sample_removal_next;
|
||||||
dis_gen_cnt_latch <= dis_gen_cnt_latch_next;
|
dis_gen_cnt_latch <= dis_gen_cnt_latch_next;
|
||||||
no_w_gen_cnt_latch <= no_w_gen_cnt_latch_next;
|
no_w_gen_cnt_latch <= no_w_gen_cnt_latch_next;
|
||||||
current_imf <= current_imf_next;
|
current_imf <= current_imf_next when WITH_KEY else (others => '1');
|
||||||
sample_addr_latch_1 <= sample_addr_latch_1_next;
|
sample_addr_latch_1 <= sample_addr_latch_1_next;
|
||||||
sample_addr_latch_2 <= sample_addr_latch_2_next;
|
sample_addr_latch_2 <= sample_addr_latch_2_next;
|
||||||
sample_addr_latch_3 <= sample_addr_latch_3_next;
|
sample_addr_latch_3 <= sample_addr_latch_3_next;
|
||||||
|
|||||||
@ -136,7 +136,7 @@ architecture arch of dds_writer is
|
|||||||
-- Address pointing to the beginning of the first Instance Data Frame
|
-- Address pointing to the beginning of the first Instance Data Frame
|
||||||
constant FIRST_INSTANCE_ADDRESS : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) := (others => '0');
|
constant FIRST_INSTANCE_ADDRESS : unsigned(INSTANCE_MEMORY_ADDR_WIDTH-1 downto 0) := (others => '0');
|
||||||
|
|
||||||
-- *SAMPLE MEMORY FRAME FORMAT*
|
-- *SAMPLE MEMORY FRAME FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant SMF_STATUS_INFO_OFFSET : natural := 0;
|
constant SMF_STATUS_INFO_OFFSET : natural := 0;
|
||||||
constant SMF_SEQ_NR_OFFSET : natural := 1;
|
constant SMF_SEQ_NR_OFFSET : natural := 1;
|
||||||
@ -159,12 +159,12 @@ architecture arch of dds_writer is
|
|||||||
constant SMF_PREV_ADDR_OFFSET : natural := gen_smf_prev_addr_offset(WITH_KEY);
|
constant SMF_PREV_ADDR_OFFSET : natural := gen_smf_prev_addr_offset(WITH_KEY);
|
||||||
constant SMF_NEXT_ADDR_OFFSET : natural := SMF_PREV_ADDR_OFFSET + 1;
|
constant SMF_NEXT_ADDR_OFFSET : natural := SMF_PREV_ADDR_OFFSET + 1;
|
||||||
|
|
||||||
-- *PAYLOAD MEMORY FRAME FORMAT*
|
-- *PAYLOAD MEMORY FRAME FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant PMF_NEXT_ADDR_OFFSET : natural := 0;
|
constant PMF_NEXT_ADDR_OFFSET : natural := 0;
|
||||||
constant PMF_PAYLOAD_OFFSET : natural := 1;
|
constant PMF_PAYLOAD_OFFSET : natural := 1;
|
||||||
|
|
||||||
-- *INSTANCE MEMORY FRAME OFFSET*
|
-- *INSTANCE MEMORY FIELD OFFSETS*
|
||||||
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
|
||||||
constant IMF_NEXT_ADDR_OFFSET : natural := 0;
|
constant IMF_NEXT_ADDR_OFFSET : natural := 0;
|
||||||
constant IMF_KEY_HASH_OFFSET : natural := 1;
|
constant IMF_KEY_HASH_OFFSET : natural := 1;
|
||||||
@ -172,7 +172,7 @@ architecture arch of dds_writer is
|
|||||||
constant IMF_SAMPLE_CNT_OFFSET : natural := 6;
|
constant IMF_SAMPLE_CNT_OFFSET : natural := 6;
|
||||||
constant IMF_ACK_CNT_OFFSET : natural := 7;
|
constant IMF_ACK_CNT_OFFSET : natural := 7;
|
||||||
|
|
||||||
-- *INSTANCE MEMORY FRAME FORMAT FLAGS*
|
-- *INSTANCE MEMORY FRAME FIELD FLAGS*
|
||||||
-- Flags mapping to the respective Endpoint Memory Frame Fields
|
-- Flags mapping to the respective Endpoint Memory Frame Fields
|
||||||
constant IMF_FLAG_WIDTH : natural := 4;
|
constant IMF_FLAG_WIDTH : natural := 4;
|
||||||
constant IMF_KEY_HASH_FLAG : std_logic_vector(0 to IMF_FLAG_WIDTH-1) := (0 => '1', others => '0');
|
constant IMF_KEY_HASH_FLAG : std_logic_vector(0 to IMF_FLAG_WIDTH-1) := (0 => '1', others => '0');
|
||||||
@ -192,14 +192,21 @@ architecture arch of dds_writer is
|
|||||||
REMOVE_INSTANCE, RESET_MEMORY);
|
REMOVE_INSTANCE, RESET_MEMORY);
|
||||||
-- *Instance Memory Opcodes*
|
-- *Instance Memory Opcodes*
|
||||||
-- OPCODE DESCRIPTION
|
-- OPCODE DESCRIPTION
|
||||||
-- SEARCH_INSTANCE_HASH Search Instance based on Key Hash pointed by key_hash.
|
-- SEARCH_INSTANCE_HASH Search Instance based on Key Hash pointed by "key_hash".
|
||||||
-- SEARCH_INSTANCE_ADDR Search Instance based on Instance Pointer pointed by inst_addr_update. [This is needed to mark the previous Instance for Instance Removal]
|
-- Set "inst_addr_base" to Base Address of found Instance, of INSTANCE_MEMORY_MAX_ADDRESS if nothing found.
|
||||||
-- INSERT_INSTANCE Insert Instance to memory. The Instance is inserted in Key Hash Numerical Order.
|
-- "inst_data" contains Instance Data according to "inst_mem_fields".
|
||||||
-- UPDATE_INSTANCE Update Instance Data pointed by inst_addr_base. (inst_mem_fields specifies which Fields to update)
|
-- SEARCH_INSTANCE_ADDR Search Instance based on Instance Pointer pointed by "inst_addr_update".
|
||||||
-- GET_FIRST_INSTANCE Get Instance Data of first Instance (Instance with smallest Key Hash Numerical Order). (inst_mem_fields specifies which Fields to get)
|
-- Set "inst_addr_base" to "inst_addr_update"
|
||||||
-- GET_NEXT_INSTANCE Get Instance Data of next Instance (from the Instance pointed by inst_addr_base) (inst_mem_fields specifies which Fields to get)
|
-- "inst_data" contains Instance Data according to "inst_mem_fields".
|
||||||
-- REMOVE_INSTANCE Remove Instance pointed by inst_addr_base
|
-- INSERT_INSTANCE Insert Instance to memory.
|
||||||
-- GET_INSTANCE Get Data of Instance pointed by inst_addr_update. (inst_mem_fields specifies which Fields to get)
|
-- UPDATE_INSTANCE Update Instance Data pointed by "inst_addr_base" according to "inst_mem_fields"
|
||||||
|
-- GET_FIRST_INSTANCE Get Instance Data of first Instance according to "inst_mem_fields".
|
||||||
|
-- Set "inst_addr_base" to Address of Instance or INSTANCE_MEMORY_MAX_ADDRESS if no Instance in Memory.
|
||||||
|
-- GET_NEXT_INSTANCE Get Instance Data of next Instance (from the Instance pointed by "inst_addr_base") according to "inst_mem_fields".
|
||||||
|
-- Set "inst_addr_base" to Address of Instance or INSTANCE_MEMORY_MAX_ADDRESS if no other Instance in Memory.
|
||||||
|
-- REMOVE_INSTANCE Remove Instance pointed by "inst_addr_base".
|
||||||
|
-- GET_INSTANCE Get Data of Instance pointed by "inst_addr_update" according to "inst_mem_fields".
|
||||||
|
-- Already fetched Data of the Participant is not modified.
|
||||||
type INSTANCE_OPCODE_TYPE is (NOP, SEARCH_INSTANCE_HASH, SEARCH_INSTANCE_ADDR, INSERT_INSTANCE, UPDATE_INSTANCE, GET_FIRST_INSTANCE, GET_NEXT_INSTANCE, REMOVE_INSTANCE,
|
type INSTANCE_OPCODE_TYPE is (NOP, SEARCH_INSTANCE_HASH, SEARCH_INSTANCE_ADDR, INSERT_INSTANCE, UPDATE_INSTANCE, GET_FIRST_INSTANCE, GET_NEXT_INSTANCE, REMOVE_INSTANCE,
|
||||||
GET_INSTANCE);
|
GET_INSTANCE);
|
||||||
-- Record of Instance Data
|
-- Record of Instance Data
|
||||||
@ -418,6 +425,8 @@ architecture arch of dds_writer is
|
|||||||
signal inst_cnt, inst_cnt_next : natural range 0 to 13 := 0;
|
signal inst_cnt, inst_cnt_next : natural range 0 to 13 := 0;
|
||||||
-- General Purpose Long Latch
|
-- General Purpose Long Latch
|
||||||
signal inst_long_latch, inst_long_latch_next : std_logic_vector(CDR_LONG_WIDTH-1 downto 0) := (others => '0');
|
signal inst_long_latch, inst_long_latch_next : std_logic_vector(CDR_LONG_WIDTH-1 downto 0) := (others => '0');
|
||||||
|
-- Instance Memory Flag Array denoting which inst_data Fields are up-to-date with the respective fields of the Instance (Pointed by inst_addr_base)
|
||||||
|
signal current_imf, current_imf_next : std_logic_vector(0 to IMF_FLAG_WIDTH-1) := (others => '0');
|
||||||
|
|
||||||
--*****ALIAS DECLARATION*****
|
--*****ALIAS DECLARATION*****
|
||||||
alias prev_sample : unsigned(SAMPLE_MEMORY_ADDR_WIDTH-1 downto 0) is sample_addr_latch_1;
|
alias prev_sample : unsigned(SAMPLE_MEMORY_ADDR_WIDTH-1 downto 0) is sample_addr_latch_1;
|
||||||
@ -880,7 +889,7 @@ begin
|
|||||||
source_ts_next <= source_ts_dds;
|
source_ts_next <= source_ts_dds;
|
||||||
|
|
||||||
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
||||||
sample_status_info_next <= (SSI_PAYLOAD_FLAG => '1', SSI_ALIGNED_FLAG => '1', others => '0');
|
sample_status_info_next <= (SSI_DATA_FLAG => '1', SSI_ALIGNED_FLAG => '1', others => '0');
|
||||||
cur_sample_next <= empty_sample_list_head;
|
cur_sample_next <= empty_sample_list_head;
|
||||||
|
|
||||||
-- NOTE: We have to explicitly check the Payload Memory, as it may be "unaligned" with our Sample Memory
|
-- NOTE: We have to explicitly check the Payload Memory, as it may be "unaligned" with our Sample Memory
|
||||||
@ -937,7 +946,7 @@ begin
|
|||||||
source_ts_next <= source_ts_dds;
|
source_ts_next <= source_ts_dds;
|
||||||
|
|
||||||
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
||||||
sample_status_info_next <= (SSI_PAYLOAD_FLAG => '1', SSI_ALIGNED_FLAG => '1', SSI_DISPOSED_FLAG => '1', others => '0');
|
sample_status_info_next <= (SSI_DATA_FLAG => '1', SSI_ALIGNED_FLAG => '1', SSI_DISPOSED_FLAG => '1', others => '0');
|
||||||
cur_sample_next <= empty_sample_list_head;
|
cur_sample_next <= empty_sample_list_head;
|
||||||
|
|
||||||
-- NOTE: We always expect a Serialized Key as Input of this Opration, so we also check the Payload memory
|
-- NOTE: We always expect a Serialized Key as Input of this Opration, so we also check the Payload memory
|
||||||
@ -992,7 +1001,7 @@ begin
|
|||||||
source_ts_next <= source_ts_dds;
|
source_ts_next <= source_ts_dds;
|
||||||
|
|
||||||
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
-- NOTE: The ALIGNED_FLAG is set by default. if actual Payload is not aligned, need to reset.
|
||||||
sample_status_info_next <= (SSI_PAYLOAD_FLAG => '1', SSI_ALIGNED_FLAG => '1', SSI_UNREGISTERED_FLAG => '1', others => '0');
|
sample_status_info_next <= (SSI_DATA_FLAG => '1', SSI_ALIGNED_FLAG => '1', SSI_UNREGISTERED_FLAG => '1', others => '0');
|
||||||
cur_sample_next <= empty_sample_list_head;
|
cur_sample_next <= empty_sample_list_head;
|
||||||
|
|
||||||
-- NOTE: We always expect a Serialized Key as Input of this Opration, so we also check the Payload memory
|
-- NOTE: We always expect a Serialized Key as Input of this Opration, so we also check the Payload memory
|
||||||
@ -1278,7 +1287,7 @@ begin
|
|||||||
if (ready_out_kh = '1') then
|
if (ready_out_kh = '1') then
|
||||||
ready_in_dds <= '1';
|
ready_in_dds <= '1';
|
||||||
-- Operation does not have Payload to store
|
-- Operation does not have Payload to store
|
||||||
if (sample_status_info(SSI_PAYLOAD_FLAG) = '0') then
|
if (sample_status_info(SSI_DATA_FLAG) = '0') then
|
||||||
-- End of Payload
|
-- End of Payload
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1') then
|
||||||
last_word_out_kh <= '1';
|
last_word_out_kh <= '1';
|
||||||
@ -1450,10 +1459,14 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
when REGISTER_OPERATION =>
|
when REGISTER_OPERATION =>
|
||||||
|
-- Precondition: inst_data set (IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG, IMF_ACK_CNT_FLAG)
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Wait for Instance Search to finish
|
-- Wait for Instance Search to finish
|
||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance already in Memory
|
-- Instance already in Memory
|
||||||
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- Accept Registration
|
-- Accept Registration
|
||||||
@ -1567,10 +1580,11 @@ begin
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
when FILTER_STAGE =>
|
when FILTER_STAGE =>
|
||||||
-- Precondition: cur_sample set
|
-- Precondition: cur_sample set, inst_data set (IMF_SAMPLE_CNT_FLAG, IMF_ACK_CNT_FLAG)
|
||||||
|
|
||||||
-- Wait for Instance Search to finish
|
-- Wait for Instance Search to finish
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (not WITH_KEY or inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (not WITH_KEY or inst_addr_base /= INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
@ -1775,8 +1789,12 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
when UPDATE_INSTANCE =>
|
when UPDATE_INSTANCE =>
|
||||||
|
-- Precondition: inst_data set (IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG, IMF_ACK_CNT_FLAG)
|
||||||
|
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
inst_op_start <= '1';
|
inst_op_start <= '1';
|
||||||
@ -2473,10 +2491,12 @@ begin
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
when POST_SAMPLE_REMOVE =>
|
when POST_SAMPLE_REMOVE =>
|
||||||
-- Precondition: inst_data set (Status Info, Sample Count, ACK Count)
|
-- Precondition: inst_data set (IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG, IMF_ACK_CNT_FLAG)
|
||||||
|
|
||||||
-- Memory Operation Guard
|
-- Memory Operation Guard
|
||||||
if (not WITH_KEY or inst_op_done = '1') then
|
if (not WITH_KEY or inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
inst_op_start <= '1';
|
inst_op_start <= '1';
|
||||||
@ -2550,6 +2570,8 @@ begin
|
|||||||
cnt_next <= 0;
|
cnt_next <= 0;
|
||||||
end if;
|
end if;
|
||||||
when REMOVE_STALE_INSTANCE =>
|
when REMOVE_STALE_INSTANCE =>
|
||||||
|
-- Precondition: inst_data set (IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG, IMF_ACK_CNT_FLAG)
|
||||||
|
|
||||||
-- Synthesis Guard
|
-- Synthesis Guard
|
||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Wait for Instance Data
|
-- Wait for Instance Data
|
||||||
@ -2557,6 +2579,8 @@ begin
|
|||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Find and Remove First Stale Instance
|
-- Find and Remove First Stale Instance
|
||||||
when 0 =>
|
when 0 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Iterated through all Instances
|
-- Iterated through all Instances
|
||||||
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- NOTE: We should enter this state only if there is at least one stale Instance to be removed, so we should never enter this branch.
|
-- NOTE: We should enter this state only if there is at least one stale Instance to be removed, so we should never enter this branch.
|
||||||
@ -2822,6 +2846,8 @@ begin
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
when ACKNACK_SAMPLE =>
|
when ACKNACK_SAMPLE =>
|
||||||
|
-- Precondition: inst_data set (IMF_ACK_CNT_FLAG, IMF_STATUS_FLAG, IMF_SAMPLE_CNT_FLAG)
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- GET Status Info
|
-- GET Status Info
|
||||||
when 0 =>
|
when 0 =>
|
||||||
@ -2865,6 +2891,8 @@ begin
|
|||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Wait for Instance Data
|
-- Wait for Instance Data
|
||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_SAMPLE_CNT_FLAG or IMF_ACK_CNT_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Update
|
-- Update
|
||||||
inst_op_start <= '1';
|
inst_op_start <= '1';
|
||||||
inst_opcode <= UPDATE_INSTANCE;
|
inst_opcode <= UPDATE_INSTANCE;
|
||||||
@ -2897,6 +2925,8 @@ begin
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
when GET_SAMPLE =>
|
when GET_SAMPLE =>
|
||||||
|
-- Precondition: inst_data set (IMF_KEY_HASH_FLAG)
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- GET Status Info
|
-- GET Status Info
|
||||||
when 0 =>
|
when 0 =>
|
||||||
@ -2994,6 +3024,8 @@ begin
|
|||||||
if (WITH_KEY) then
|
if (WITH_KEY) then
|
||||||
-- Wait for Instance Data
|
-- Wait for Instance Data
|
||||||
if (inst_op_done = '1') then
|
if (inst_op_done = '1') then
|
||||||
|
assert check_mask(current_imf, IMF_KEY_HASH_FLAG) severity FAILURE;
|
||||||
|
|
||||||
cc_instance_handle_sig_next <= inst_data.key_hash;
|
cc_instance_handle_sig_next <= inst_data.key_hash;
|
||||||
|
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
@ -3362,6 +3394,7 @@ begin
|
|||||||
last_word_out_dds <= '1';
|
last_word_out_dds <= '1';
|
||||||
if (ready_out_dds = '1') then
|
if (ready_out_dds = '1') then
|
||||||
-- Reset
|
-- Reset
|
||||||
|
deadline_miss_last_inst_next <= HANDLE_NIL;
|
||||||
status_sig_next <= status_sig and (not OFFERED_DEADLINE_MISSED_STATUS);
|
status_sig_next <= status_sig and (not OFFERED_DEADLINE_MISSED_STATUS);
|
||||||
|
|
||||||
-- DONE
|
-- DONE
|
||||||
@ -3390,6 +3423,8 @@ begin
|
|||||||
cnt_next <= 2;
|
cnt_next <= 2;
|
||||||
-- Check Instance
|
-- Check Instance
|
||||||
when 2 =>
|
when 2 =>
|
||||||
|
assert check_mask(current_imf, IMF_STATUS_FLAG or IMF_KEY_HASH_FLAG) severity FAILURE;
|
||||||
|
|
||||||
-- Reached End of Instances
|
-- Reached End of Instances
|
||||||
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
@ -3451,6 +3486,8 @@ begin
|
|||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= RESET_PAYLOAD_MEMORY;
|
stage_next <= RESET_PAYLOAD_MEMORY;
|
||||||
cnt_next <= 0;
|
cnt_next <= 0;
|
||||||
|
empty_sample_list_head_next <= FIRST_SAMPLE_ADDRESS;
|
||||||
|
empty_sample_list_tail_next <= MAX_SAMPLE_ADDRESS;
|
||||||
else
|
else
|
||||||
-- Continue
|
-- Continue
|
||||||
cur_sample_next <= cur_sample + SAMPLE_FRAME_SIZE;
|
cur_sample_next <= cur_sample + SAMPLE_FRAME_SIZE;
|
||||||
@ -3482,6 +3519,7 @@ begin
|
|||||||
if (cur_payload = MAX_PAYLOAD_ADDRESS) then
|
if (cur_payload = MAX_PAYLOAD_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= IDLE;
|
stage_next <= IDLE;
|
||||||
|
empty_payload_list_head_next <= FIRST_PAYLOAD_ADDRESS;
|
||||||
else
|
else
|
||||||
cur_payload_next <= cur_payload + PAYLOAD_FRAME_SIZE;
|
cur_payload_next <= cur_payload + PAYLOAD_FRAME_SIZE;
|
||||||
end if;
|
end if;
|
||||||
@ -3520,6 +3558,7 @@ begin
|
|||||||
inst_cnt_next <= inst_cnt;
|
inst_cnt_next <= inst_cnt;
|
||||||
inst_data_next <= inst_data;
|
inst_data_next <= inst_data;
|
||||||
inst_long_latch_next <= inst_long_latch;
|
inst_long_latch_next <= inst_long_latch;
|
||||||
|
current_imf_next <= current_imf;
|
||||||
-- DEFAULT Unregistered
|
-- DEFAULT Unregistered
|
||||||
inst_ready_out <= '0';
|
inst_ready_out <= '0';
|
||||||
inst_valid_in <= '0';
|
inst_valid_in <= '0';
|
||||||
@ -3548,6 +3587,7 @@ begin
|
|||||||
case(inst_opcode) is
|
case(inst_opcode) is
|
||||||
when SEARCH_INSTANCE_HASH =>
|
when SEARCH_INSTANCE_HASH =>
|
||||||
-- Reset Data
|
-- Reset Data
|
||||||
|
current_imf_next <= inst_mem_fields;
|
||||||
inst_data_next <= ZERO_INSTANCE_DATA;
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
-- No Instances available
|
-- No Instances available
|
||||||
@ -3561,6 +3601,7 @@ begin
|
|||||||
end if;
|
end if;
|
||||||
when SEARCH_INSTANCE_ADDR =>
|
when SEARCH_INSTANCE_ADDR =>
|
||||||
-- Reset Data
|
-- Reset Data
|
||||||
|
current_imf_next <= inst_mem_fields;
|
||||||
inst_data_next <= ZERO_INSTANCE_DATA;
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
-- No Instances avialable
|
-- No Instances avialable
|
||||||
@ -3577,6 +3618,10 @@ begin
|
|||||||
-- by the main process that the operation can succeed (Memory is available)
|
-- by the main process that the operation can succeed (Memory is available)
|
||||||
assert (inst_empty_head /= INSTANCE_MEMORY_MAX_ADDRESS) report "Instance Insertion while memory Full" severity FAILURE;
|
assert (inst_empty_head /= INSTANCE_MEMORY_MAX_ADDRESS) report "Instance Insertion while memory Full" severity FAILURE;
|
||||||
|
|
||||||
|
-- Reset Data
|
||||||
|
current_imf_next <= (others => '1');
|
||||||
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
inst_addr_base_next <= inst_empty_head;
|
inst_addr_base_next <= inst_empty_head;
|
||||||
inst_stage_next <= INSERT_INSTANCE;
|
inst_stage_next <= INSERT_INSTANCE;
|
||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
@ -3587,7 +3632,9 @@ begin
|
|||||||
inst_data_next.sample_cnt <= sample_cnt;
|
inst_data_next.sample_cnt <= sample_cnt;
|
||||||
inst_data_next.ack_cnt <= ack_cnt;
|
inst_data_next.ack_cnt <= ack_cnt;
|
||||||
when UPDATE_INSTANCE =>
|
when UPDATE_INSTANCE =>
|
||||||
|
current_imf_next <= current_imf or inst_mem_fields;
|
||||||
inst_stage_next <= UPDATE_INSTANCE;
|
inst_stage_next <= UPDATE_INSTANCE;
|
||||||
|
|
||||||
if check_mask(inst_mem_fields,IMF_STATUS_FLAG) then
|
if check_mask(inst_mem_fields,IMF_STATUS_FLAG) then
|
||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
elsif check_mask(inst_mem_fields,IMF_SAMPLE_CNT_FLAG) then
|
elsif check_mask(inst_mem_fields,IMF_SAMPLE_CNT_FLAG) then
|
||||||
@ -3599,6 +3646,10 @@ begin
|
|||||||
inst_stage_next <= IDLE;
|
inst_stage_next <= IDLE;
|
||||||
end if;
|
end if;
|
||||||
when GET_FIRST_INSTANCE =>
|
when GET_FIRST_INSTANCE =>
|
||||||
|
-- Reset
|
||||||
|
current_imf_next <= inst_mem_fields;
|
||||||
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
-- No Instances avialable
|
-- No Instances avialable
|
||||||
if (inst_occupied_head = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_occupied_head = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
inst_addr_base_next <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_addr_base_next <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
@ -3609,6 +3660,10 @@ begin
|
|||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
end if;
|
end if;
|
||||||
when GET_NEXT_INSTANCE =>
|
when GET_NEXT_INSTANCE =>
|
||||||
|
-- Reset
|
||||||
|
current_imf_next <= inst_mem_fields;
|
||||||
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
-- No Instances avialable
|
-- No Instances avialable
|
||||||
if (inst_next_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
if (inst_next_addr_base = INSTANCE_MEMORY_MAX_ADDRESS) then
|
||||||
inst_addr_base_next <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_addr_base_next <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
@ -3619,12 +3674,23 @@ begin
|
|||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
end if;
|
end if;
|
||||||
when REMOVE_INSTANCE =>
|
when REMOVE_INSTANCE =>
|
||||||
|
-- Reset
|
||||||
|
current_imf_next <= (others => '0');
|
||||||
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
|
||||||
inst_stage_next <= REMOVE_INSTANCE;
|
inst_stage_next <= REMOVE_INSTANCE;
|
||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
when GET_INSTANCE =>
|
when GET_INSTANCE =>
|
||||||
inst_addr_base_next <= inst_addr_update;
|
inst_addr_base_next <= inst_addr_update;
|
||||||
-- Get Instance Data
|
if (inst_addr_base /= inst_addr_update) then
|
||||||
|
-- Reset
|
||||||
|
current_imf_next <= inst_mem_fields;
|
||||||
inst_data_next <= ZERO_INSTANCE_DATA;
|
inst_data_next <= ZERO_INSTANCE_DATA;
|
||||||
|
else
|
||||||
|
current_imf_next <= current_imf or inst_mem_fields;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
-- Get Instance Data
|
||||||
inst_stage_next <= GET_INSTANCE_DATA;
|
inst_stage_next <= GET_INSTANCE_DATA;
|
||||||
if check_mask(inst_mem_fields,IMF_KEY_HASH_FLAG) then
|
if check_mask(inst_mem_fields,IMF_KEY_HASH_FLAG) then
|
||||||
inst_cnt_next <= 0;
|
inst_cnt_next <= 0;
|
||||||
@ -4355,6 +4421,7 @@ begin
|
|||||||
if (inst_addr_base = MAX_INSTANCE_ADDRESS) then
|
if (inst_addr_base = MAX_INSTANCE_ADDRESS) then
|
||||||
-- DONE
|
-- DONE
|
||||||
inst_stage_next <= IDLE;
|
inst_stage_next <= IDLE;
|
||||||
|
inst_empty_head_next <= FIRST_INSTANCE_ADDRESS;
|
||||||
else
|
else
|
||||||
inst_addr_base_next <= inst_addr_base + INSTANCE_FRAME_SIZE;
|
inst_addr_base_next <= inst_addr_base + INSTANCE_FRAME_SIZE;
|
||||||
end if;
|
end if;
|
||||||
@ -4413,9 +4480,9 @@ begin
|
|||||||
orphan_samples <= '0';
|
orphan_samples <= '0';
|
||||||
newest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
newest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
oldest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
oldest_sample <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
empty_payload_list_head <= FIRST_PAYLOAD_ADDRESS;
|
empty_payload_list_head <= PAYLOAD_MEMORY_MAX_ADDRESS;
|
||||||
empty_sample_list_head <= FIRST_SAMPLE_ADDRESS;
|
empty_sample_list_head <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
empty_sample_list_tail <= MAX_SAMPLE_ADDRESS;
|
empty_sample_list_tail <= SAMPLE_MEMORY_MAX_ADDRESS;
|
||||||
payload_addr_latch_1 <= (others => '0');
|
payload_addr_latch_1 <= (others => '0');
|
||||||
payload_addr_latch_2 <= (others => '0');
|
payload_addr_latch_2 <= (others => '0');
|
||||||
long_latch <= (others => '0');
|
long_latch <= (others => '0');
|
||||||
@ -4434,8 +4501,9 @@ begin
|
|||||||
liveliness_lost_cnt <= (others => '0');
|
liveliness_lost_cnt <= (others => '0');
|
||||||
liveliness_lost_cnt_change <= (others => '0');
|
liveliness_lost_cnt_change <= (others => '0');
|
||||||
status_sig <= (others => '0');
|
status_sig <= (others => '0');
|
||||||
|
current_imf <= (others => '0');
|
||||||
inst_addr_base <= (others => '0');
|
inst_addr_base <= (others => '0');
|
||||||
inst_empty_head <= FIRST_INSTANCE_ADDRESS;
|
inst_empty_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_occupied_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
inst_occupied_head <= INSTANCE_MEMORY_MAX_ADDRESS;
|
||||||
inst_long_latch <= (others => '0');
|
inst_long_latch <= (others => '0');
|
||||||
inst_next_addr_base <= (others => '0');
|
inst_next_addr_base <= (others => '0');
|
||||||
@ -4504,6 +4572,7 @@ begin
|
|||||||
liveliness_lost_cnt <= liveliness_lost_cnt_next;
|
liveliness_lost_cnt <= liveliness_lost_cnt_next;
|
||||||
liveliness_lost_cnt_change <= liveliness_lost_cnt_change_next;
|
liveliness_lost_cnt_change <= liveliness_lost_cnt_change_next;
|
||||||
status_sig <= status_sig_next;
|
status_sig <= status_sig_next;
|
||||||
|
current_imf <= current_imf_next when WITH_KEY else (others => '1');
|
||||||
inst_addr_base <= inst_addr_base_next;
|
inst_addr_base <= inst_addr_base_next;
|
||||||
inst_empty_head <= inst_empty_head_next;
|
inst_empty_head <= inst_empty_head_next;
|
||||||
inst_occupied_head <= inst_occupied_head_next;
|
inst_occupied_head <= inst_occupied_head_next;
|
||||||
|
|||||||
@ -8,7 +8,7 @@ entity history_cache is
|
|||||||
MAX_INSTANCES : natural := DEFAULT_MAX_INSTANCES;
|
MAX_INSTANCES : natural := DEFAULT_MAX_INSTANCES;
|
||||||
MAX_SAMPLES_PER_INSTANCE : natural := DEFAULT_MAX_SAMPLES_PER_INSTANCE;
|
MAX_SAMPLES_PER_INSTANCE : natural := DEFAULT_MAX_SAMPLES_PER_INSTANCE;
|
||||||
HISTORY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := DEFAULT_HISTORY_QOS;
|
HISTORY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := DEFAULT_HISTORY_QOS;
|
||||||
RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := DEFAULT_RELIABILTY_QOS;
|
RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := DEFAULT_RELIABILITY_QOS;
|
||||||
GENERATION_COUNTERS : boolean := TRUE;
|
GENERATION_COUNTERS : boolean := TRUE;
|
||||||
);
|
);
|
||||||
port (
|
port (
|
||||||
@ -990,7 +990,7 @@ begin
|
|||||||
writer_bitmap <= from_endpoint_bitmap(tmp_bitmap);
|
writer_bitmap <= from_endpoint_bitmap(tmp_bitmap);
|
||||||
|
|
||||||
-- No More Writers for Instance
|
-- No More Writers for Instance
|
||||||
if (tmp_bitmap = (tmp_bitmap'range => '0')) then
|
if (tmp_bitmap = (tmp_bitmap'reverse_range => '0')) then
|
||||||
inst_op_start_a <= '1';
|
inst_op_start_a <= '1';
|
||||||
instance_state <= NOT_ALIVE_NO_WRITERS;
|
instance_state <= NOT_ALIVE_NO_WRITERS;
|
||||||
inst_opcode_a <= UPDATE_INSTANCE;
|
inst_opcode_a <= UPDATE_INSTANCE;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -54,7 +54,7 @@ package rtps_config_package is
|
|||||||
constant SSI_FILTERED_FLAG : natural := STATUS_INFO_FILTERED_FLAG;
|
constant SSI_FILTERED_FLAG : natural := STATUS_INFO_FILTERED_FLAG;
|
||||||
constant SSI_KEY_HASH_FLAG : natural := 28; -- Reader Only
|
constant SSI_KEY_HASH_FLAG : natural := 28; -- Reader Only
|
||||||
constant SSI_ALIGNED_FLAG : natural := 29;
|
constant SSI_ALIGNED_FLAG : natural := 29;
|
||||||
constant SSI_PAYLOAD_FLAG : natural := 30;
|
constant SSI_DATA_FLAG : natural := 30;
|
||||||
constant SSI_READ_FLAG : natural := 31; -- Reader Only
|
constant SSI_READ_FLAG : natural := 31; -- Reader Only
|
||||||
constant SSI_ACK_FLAG : natural := 31; -- Writer Only
|
constant SSI_ACK_FLAG : natural := 31; -- Writer Only
|
||||||
|
|
||||||
@ -319,7 +319,7 @@ package body rtps_config_package is
|
|||||||
-- Count Bytes
|
-- Count Bytes
|
||||||
ret := ret + 1;
|
ret := ret + 1;
|
||||||
-- Exit on first NULL byte (NULL Byte included in count)
|
-- Exit on first NULL byte (NULL Byte included in count)
|
||||||
if (str(i)(WORD_WIDTH-(j*BYTE_WIDTH)-1 downto WORD_WIDTH-(j*BYTE_WIDTH)-BYTE_WIDTH) = (BYTE_WIDTH-1 downto 0 => '0')) then
|
if (str(i)(WORD_WIDTH-(j*BYTE_WIDTH)-1 downto WORD_WIDTH-(j*BYTE_WIDTH)-BYTE_WIDTH) = (0 to BYTE_WIDTH-1 => '0')) then
|
||||||
done := TRUE;
|
done := TRUE;
|
||||||
exit;
|
exit;
|
||||||
end if;
|
end if;
|
||||||
@ -490,7 +490,7 @@ package body rtps_config_package is
|
|||||||
ret.data(ind+len) := std_logic_vector(ENDPOINT_TIME_BASED_FILTER_QOS(i)(1));
|
ret.data(ind+len) := std_logic_vector(ENDPOINT_TIME_BASED_FILTER_QOS(i)(1));
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILTY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then
|
if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then
|
||||||
len := len + 1;
|
len := len + 1;
|
||||||
ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
||||||
len := len + 1;
|
len := len + 1;
|
||||||
@ -675,7 +675,7 @@ package body rtps_config_package is
|
|||||||
ret.data(ind+len) := std_logic_vector(ENDPOINT_LEASE_DURATION(i)(1));
|
ret.data(ind+len) := std_logic_vector(ENDPOINT_LEASE_DURATION(i)(1));
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILTY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then
|
if (ENDPOINT_RELIABILITY_QOS(i) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(i) /= DEFAULT_MAX_BLOCKING_TIME) then
|
||||||
len := len + 1;
|
len := len + 1;
|
||||||
ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
ret.data(ind+len) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
||||||
len := len + 1;
|
len := len + 1;
|
||||||
@ -801,7 +801,7 @@ package body rtps_config_package is
|
|||||||
ret.data(ret.length) := std_logic_vector(ENDPOINT_LEASE_DURATION(id)(1));
|
ret.data(ret.length) := std_logic_vector(ENDPOINT_LEASE_DURATION(id)(1));
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (ENDPOINT_RELIABILITY_QOS(id) /= DEFAULT_RELIABILTY_QOS or ENDPOINT_MAX_BLOCKING_TIME(id) /= DEFAULT_MAX_BLOCKING_TIME) then
|
if (ENDPOINT_RELIABILITY_QOS(id) /= DEFAULT_RELIABILITY_QOS or ENDPOINT_MAX_BLOCKING_TIME(id) /= DEFAULT_MAX_BLOCKING_TIME) then
|
||||||
ret.length := ret.length + 1;
|
ret.length := ret.length + 1;
|
||||||
ret.data(ret.length) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
ret.data(ret.length) := PID_RELIABILITY & std_logic_vector(to_unsigned(12, 16));
|
||||||
ret.length := ret.length + 1;
|
ret.length := ret.length + 1;
|
||||||
@ -1123,7 +1123,7 @@ package body rtps_config_package is
|
|||||||
ret.LIVELINESS_QOS(i) := '0';
|
ret.LIVELINESS_QOS(i) := '0';
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_RELIABILTY_QOS), unsigned(ENDPOINT_RELIABILITY_QOS(i)))) then
|
if (not check_qos_compatibility(boolean_to_std_logic(is_reader), '1', unsigned(DEFAULT_RELIABILITY_QOS), unsigned(ENDPOINT_RELIABILITY_QOS(i)))) then
|
||||||
ret.RELIABILITY_QOS(i) := '0';
|
ret.RELIABILITY_QOS(i) := '0';
|
||||||
end if;
|
end if;
|
||||||
-- DESTINATION_ORDER
|
-- DESTINATION_ORDER
|
||||||
|
|||||||
@ -385,13 +385,14 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
when 0 =>
|
when 0 =>
|
||||||
src_guidprefix_next(0) <= data_in;
|
src_guidprefix_next(0) <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
when 1 =>
|
when 1 =>
|
||||||
src_guidprefix_next(1) <= data_in;
|
src_guidprefix_next(1) <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
when 2 =>
|
when 2 =>
|
||||||
src_guidprefix_next(2) <= data_in;
|
src_guidprefix_next(2) <= data_in;
|
||||||
|
|
||||||
@ -494,7 +495,6 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
-- If Destination GUID Prefix is not us, skip the rest of the packet
|
-- If Destination GUID Prefix is not us, skip the rest of the packet
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
@ -503,12 +503,16 @@ begin
|
|||||||
if (data_in /= GUIDPREFIX(0)) then
|
if (data_in /= GUIDPREFIX(0)) then
|
||||||
-- Ignore
|
-- Ignore
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- GUID Prefix 2/3
|
-- GUID Prefix 2/3
|
||||||
when 1 =>
|
when 1 =>
|
||||||
if (data_in /= GUIDPREFIX(1)) then
|
if (data_in /= GUIDPREFIX(1)) then
|
||||||
-- Ignore
|
-- Ignore
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- GUID Prefix 3/3
|
-- GUID Prefix 3/3
|
||||||
when 2 =>
|
when 2 =>
|
||||||
@ -526,25 +530,28 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- unused
|
-- unused
|
||||||
when 0 =>
|
when 0 =>
|
||||||
null;
|
cnt_next <= cnt + 1;
|
||||||
-- Protocol Version & Vendor ID
|
-- Protocol Version & Vendor ID
|
||||||
when 1 =>
|
when 1 =>
|
||||||
-- Check Major Protocol Version
|
-- Check Major Protocol Version
|
||||||
if (data_in(31 downto 24) /= PROTOCOLVERSION_2_4(15 downto 8)) then
|
if (data_in(31 downto 24) /= PROTOCOLVERSION_2_4(15 downto 8)) then
|
||||||
-- Protocol not supported, skip rest of Packet
|
-- Protocol not supported, skip rest of Packet
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- GUID Prefix 1/3
|
-- GUID Prefix 1/3
|
||||||
when 2 =>
|
when 2 =>
|
||||||
src_guidprefix_next(0) <= data_in;
|
src_guidprefix_next(0) <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GUID Prefix 2/3
|
-- GUID Prefix 2/3
|
||||||
when 3 =>
|
when 3 =>
|
||||||
src_guidprefix_next(1) <= data_in;
|
src_guidprefix_next(1) <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GUID Prefix 3/3
|
-- GUID Prefix 3/3
|
||||||
when 4 =>
|
when 4 =>
|
||||||
src_guidprefix_next(2) <= data_in;
|
src_guidprefix_next(2) <= data_in;
|
||||||
@ -557,12 +564,12 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Timesatmp 1/2
|
-- Timesatmp 1/2
|
||||||
when 0 =>
|
when 0 =>
|
||||||
src_ts_next(0) <= unsigned(data_in_swapped);
|
src_ts_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Timesatmp 2/2
|
-- Timesatmp 2/2
|
||||||
when 1 =>
|
when 1 =>
|
||||||
src_ts_next(1) <= unsigned(data_in_swapped);
|
src_ts_next(1) <= unsigned(data_in_swapped);
|
||||||
@ -601,7 +608,6 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Locator Kind
|
-- Locator Kind
|
||||||
@ -612,6 +618,7 @@ begin
|
|||||||
else
|
else
|
||||||
locator_match_next <= '0';
|
locator_match_next <= '0';
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Locator Port
|
-- Locator Port
|
||||||
when 1 =>
|
when 1 =>
|
||||||
-- We only store UDPv4 Locators
|
-- We only store UDPv4 Locators
|
||||||
@ -623,15 +630,16 @@ begin
|
|||||||
long_latch_next <= data_in_swapped;
|
long_latch_next <= data_in_swapped;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Locator Address 1/4
|
-- Locator Address 1/4
|
||||||
when 2 =>
|
when 2 =>
|
||||||
null;
|
cnt_next <= cnt + 1;
|
||||||
-- Locator Address 2/4
|
-- Locator Address 2/4
|
||||||
when 3 =>
|
when 3 =>
|
||||||
null;
|
cnt_next <= cnt + 1;
|
||||||
-- Locator Address 3/4
|
-- Locator Address 3/4
|
||||||
when 4 =>
|
when 4 =>
|
||||||
null;
|
cnt_next <= cnt + 1;
|
||||||
-- Locator Address 4/4 (IPv4 Address)
|
-- Locator Address 4/4 (IPv4 Address)
|
||||||
when 5 =>
|
when 5 =>
|
||||||
-- We only store valid UDPv4 Locators
|
-- We only store valid UDPv4 Locators
|
||||||
@ -651,7 +659,6 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- IPv4 Address
|
-- IPv4 Address
|
||||||
@ -663,6 +670,7 @@ begin
|
|||||||
locator_match_next <= '1';
|
locator_match_next <= '1';
|
||||||
long_latch_next <= data_in_swapped;
|
long_latch_next <= data_in_swapped;
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- UDPv4 Port
|
-- UDPv4 Port
|
||||||
when 1 =>
|
when 1 =>
|
||||||
-- Store only valid Locators
|
-- Store only valid Locators
|
||||||
@ -689,18 +697,20 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Reader Entity ID
|
-- Reader Entity ID
|
||||||
when 0 =>
|
when 0 =>
|
||||||
dest_entityid_next <= data_in;
|
dest_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Writer Entity ID
|
-- Writer Entity ID
|
||||||
when 1 =>
|
when 1 =>
|
||||||
src_entityid_next <= data_in;
|
src_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- First Sequence Number 1/2
|
-- First Sequence Number 1/2
|
||||||
when 2 =>
|
when 2 =>
|
||||||
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- First Sequence Number 2/2
|
-- First Sequence Number 2/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
||||||
@ -710,6 +720,8 @@ begin
|
|||||||
if (tmp_sn = 0 or tmp_sn(0)(WORD_WIDTH-1) = '1') then
|
if (tmp_sn = 0 or tmp_sn(0)(WORD_WIDTH-1) = '1') then
|
||||||
-- If firstSN.value is zero or negative, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.5.3 and 8.3.4.1)
|
-- If firstSN.value is zero or negative, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.5.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- Last Sequence Number 1/2
|
-- Last Sequence Number 1/2
|
||||||
when 4 =>
|
when 4 =>
|
||||||
@ -717,6 +729,7 @@ begin
|
|||||||
|
|
||||||
-- Pre-Calculation for Validity Check
|
-- Pre-Calculation for Validity Check
|
||||||
sn_latch_3_next <= sn_latch_1 - 1;
|
sn_latch_3_next <= sn_latch_1 - 1;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Last Sequence Number 2/2
|
-- Last Sequence Number 2/2
|
||||||
when 5 =>
|
when 5 =>
|
||||||
sn_latch_2_next(1) <= unsigned(data_in_swapped);
|
sn_latch_2_next(1) <= unsigned(data_in_swapped);
|
||||||
@ -726,6 +739,8 @@ begin
|
|||||||
if (tmp_sn(0)(WORD_WIDTH-1) = '1') then
|
if (tmp_sn(0)(WORD_WIDTH-1) = '1') then
|
||||||
-- If lastSN.value is negative, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.5.3 and 8.3.4.1)
|
-- If lastSN.value is negative, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.5.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- Count
|
-- Count
|
||||||
when 6 =>
|
when 6 =>
|
||||||
@ -746,19 +761,21 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Reader Entity ID
|
-- Reader Entity ID
|
||||||
when 0 =>
|
when 0 =>
|
||||||
src_is_reader_next <= '1';
|
src_is_reader_next <= '1';
|
||||||
src_entityid_next <= data_in;
|
src_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Writer Entity ID
|
-- Writer Entity ID
|
||||||
when 1 =>
|
when 1 =>
|
||||||
dest_entityid_next <= data_in;
|
dest_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- ReaderSNState.Base 1/2
|
-- ReaderSNState.Base 1/2
|
||||||
when 2 =>
|
when 2 =>
|
||||||
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- ReaderSNState.Base 2/2
|
-- ReaderSNState.Base 2/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
||||||
@ -769,6 +786,8 @@ begin
|
|||||||
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
||||||
-- If readerSNState is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.1.3 and 8.3.4.1)
|
-- If readerSNState is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.1.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- ReaderSNState.NumBits
|
-- ReaderSNState.NumBits
|
||||||
when 4 =>
|
when 4 =>
|
||||||
@ -781,6 +800,8 @@ begin
|
|||||||
-- If numBits is negative or larger than 256, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
-- If numBits is negative or larger than 256, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
||||||
-- If readerSNState is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.1.3 and 8.3.4.1)
|
-- If readerSNState is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.1.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- ReaderSNState.Bitmap
|
-- ReaderSNState.Bitmap
|
||||||
when 5 =>
|
when 5 =>
|
||||||
@ -789,13 +810,11 @@ begin
|
|||||||
cnt2_next <= cnt2 + 1;
|
cnt2_next <= cnt2 + 1;
|
||||||
|
|
||||||
bitmap_latch_next(cnt2) <= data_in_swapped;
|
bitmap_latch_next(cnt2) <= data_in_swapped;
|
||||||
|
|
||||||
-- Keep Sub-State
|
|
||||||
cnt_next <= cnt;
|
|
||||||
-- Exit Condition
|
-- Exit Condition
|
||||||
else
|
else
|
||||||
-- Prevent Input Latching
|
-- Prevent Input Latching
|
||||||
rd_guard := '0';
|
rd_guard := '0';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- Count
|
-- Count
|
||||||
when 6 =>
|
when 6 =>
|
||||||
@ -811,21 +830,24 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Reader Entity ID
|
-- Reader Entity ID
|
||||||
when 0 =>
|
when 0 =>
|
||||||
dest_entityid_next <= data_in;
|
dest_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Writer Entity ID
|
-- Writer Entity ID
|
||||||
when 1 =>
|
when 1 =>
|
||||||
src_entityid_next <= data_in;
|
src_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapStart Sequence Number 1/2
|
-- GapStart Sequence Number 1/2
|
||||||
when 2 =>
|
when 2 =>
|
||||||
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapStart Sequence Number 2/2
|
-- GapStart Sequence Number 2/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
|
|
||||||
-- VALIDITY CHECK
|
-- VALIDITY CHECK
|
||||||
tmp_sn := (0 => sn_latch_1(0), 1 => unsigned(data_in_swapped));
|
tmp_sn := (0 => sn_latch_1(0), 1 => unsigned(data_in_swapped));
|
||||||
@ -833,13 +855,17 @@ begin
|
|||||||
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
||||||
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- GapList.Base 1/2
|
-- GapList.Base 1/2
|
||||||
when 4 =>
|
when 4 =>
|
||||||
sn_latch_2_next(0) <= unsigned(data_in_swapped);
|
sn_latch_2_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapList.Base 2/2
|
-- GapList.Base 2/2
|
||||||
when 5 =>
|
when 5 =>
|
||||||
sn_latch_2_next(1) <= unsigned(data_in_swapped);
|
sn_latch_2_next(1) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
|
|
||||||
-- VALIDITY CHECK
|
-- VALIDITY CHECK
|
||||||
tmp_sn := (0 => sn_latch_2(0), 1 => unsigned(data_in_swapped));
|
tmp_sn := (0 => sn_latch_2(0), 1 => unsigned(data_in_swapped));
|
||||||
@ -847,6 +873,8 @@ begin
|
|||||||
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
-- If Bitmap Base is zero or negative, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
||||||
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- ReaderSNState.NumBits
|
-- ReaderSNState.NumBits
|
||||||
when 6 =>
|
when 6 =>
|
||||||
@ -860,6 +888,8 @@ begin
|
|||||||
-- If numBits is negative or larger than 256, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
-- If numBits is negative or larger than 256, Number Set is invalid (see DDSI-RTPS 2.3 Section 9.4.2.6)
|
||||||
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
-- If gapList is invalid, skip Packet (see DDSI-RTPS 2.3 Section 8.3.7.4.3 and 8.3.4.1)
|
||||||
stage_next <= SKIP_PACKET;
|
stage_next <= SKIP_PACKET;
|
||||||
|
else
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
end if;
|
end if;
|
||||||
-- ReaderSNState.Bitmap
|
-- ReaderSNState.Bitmap
|
||||||
when 7 =>
|
when 7 =>
|
||||||
@ -868,9 +898,6 @@ begin
|
|||||||
cnt2_next <= cnt2 + 1;
|
cnt2_next <= cnt2 + 1;
|
||||||
|
|
||||||
bitmap_latch_next(cnt2) <= data_in_swapped;
|
bitmap_latch_next(cnt2) <= data_in_swapped;
|
||||||
|
|
||||||
-- Keep Sub-State
|
|
||||||
cnt_next <= cnt;
|
|
||||||
end if;
|
end if;
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
@ -887,7 +914,6 @@ begin
|
|||||||
-- Input FIFO Guard
|
-- Input FIFO Guard
|
||||||
if (empty = '0') then
|
if (empty = '0') then
|
||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- Extra Flags & octetstoinlineQoS
|
-- Extra Flags & octetstoinlineQoS
|
||||||
@ -896,15 +922,19 @@ begin
|
|||||||
-- Latch Length to skip Uknown Data Header Part and latch offset to ensure 4-Byte alignement (see align_prc)
|
-- Latch Length to skip Uknown Data Header Part and latch offset to ensure 4-Byte alignement (see align_prc)
|
||||||
offset_latch_next <= std_logic_vector(rtps_sub_data_length(1 downto 0));
|
offset_latch_next <= std_logic_vector(rtps_sub_data_length(1 downto 0));
|
||||||
data_header_end_next <= (read_cnt_plus & "00") + rtps_sub_data_length;
|
data_header_end_next <= (read_cnt_plus & "00") + rtps_sub_data_length;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Reader Entity ID
|
-- Reader Entity ID
|
||||||
when 1 =>
|
when 1 =>
|
||||||
dest_entityid_next <= data_in;
|
dest_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Writer Entity ID
|
-- Writer Entity ID
|
||||||
when 2 =>
|
when 2 =>
|
||||||
src_entityid_next <= data_in;
|
src_entityid_next <= data_in;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Sequence Number 1/2
|
-- Sequence Number 1/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
sn_latch_1_next(0) <= unsigned(data_in_swapped);
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Sequence Number 2/2
|
-- Sequence Number 2/2
|
||||||
when 4 =>
|
when 4 =>
|
||||||
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
sn_latch_1_next(1) <= unsigned(data_in_swapped);
|
||||||
@ -993,57 +1023,66 @@ begin
|
|||||||
-- NOTE: This is a synchronised push on potentially multiple output FIFOs. If one FIFO gets full, the process stalls for all FIFOs.
|
-- 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
|
-- Output FIFO Guard
|
||||||
if (builtin_endpoint = '1' and builtin_full = '0') or (builtin_endpoint = '0' and ((user_endpoint and user_full) = (user_endpoint'range => '0'))) then
|
if (builtin_endpoint = '1' and builtin_full = '0') or (builtin_endpoint = '0' and ((user_endpoint and user_full) = (user_endpoint'range => '0'))) then
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (cnt) is
|
case (cnt) is
|
||||||
-- OPCODE (Submessage ID), Submessage Flags, UPDv4 Source Port
|
-- OPCODE (Submessage ID), Submessage Flags, UPDv4 Source Port
|
||||||
when 0 =>
|
when 0 =>
|
||||||
data_out <= opcode & flags & src_port;
|
data_out <= opcode & flags & src_port;
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- IPv4 Source Address
|
-- IPv4 Source Address
|
||||||
when 1 =>
|
when 1 =>
|
||||||
data_out <= src_addr;
|
data_out <= src_addr;
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GUID Prefix 1/3
|
-- GUID Prefix 1/3
|
||||||
when 2 =>
|
when 2 =>
|
||||||
data_out <= src_guidprefix(0);
|
data_out <= src_guidprefix(0);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GUID Prefix 2/3
|
-- GUID Prefix 2/3
|
||||||
when 3 =>
|
when 3 =>
|
||||||
data_out <= src_guidprefix(1);
|
data_out <= src_guidprefix(1);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GUID Prefix 3/3
|
-- GUID Prefix 3/3
|
||||||
when 4 =>
|
when 4 =>
|
||||||
data_out <= src_guidprefix(2);
|
data_out <= src_guidprefix(2);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Source Entity ID
|
-- Source Entity ID
|
||||||
when 5 =>
|
when 5 =>
|
||||||
data_out <= src_entityid;
|
data_out <= src_entityid;
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Destination ID [only for Built-in Endpoints]
|
-- Destination ID [only for Built-in Endpoints]
|
||||||
when 6 =>
|
when 6 =>
|
||||||
if (builtin_endpoint = '1') then
|
if (builtin_endpoint = '1') then
|
||||||
data_out <= dest_entityid;
|
data_out <= dest_entityid;
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Sequence Number 1/2 [only for DATA Submessages]
|
-- Sequence Number 1/2 [only for DATA Submessages]
|
||||||
when 7 =>
|
when 7 =>
|
||||||
if (opcode = SID_DATA) then
|
if (opcode = SID_DATA) then
|
||||||
data_out <= std_logic_vector(sn_latch_1(0));
|
data_out <= std_logic_vector(sn_latch_1(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Sequence Number 2/2 [only for DATA Submessages]
|
-- Sequence Number 2/2 [only for DATA Submessages]
|
||||||
when 8 =>
|
when 8 =>
|
||||||
if (opcode = SID_DATA) then
|
if (opcode = SID_DATA) then
|
||||||
data_out <= std_logic_vector(sn_latch_1(1));
|
data_out <= std_logic_vector(sn_latch_1(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Source Timestamp 1/2 [only for DATA Submessages and User Endpoints]
|
-- Source Timestamp 1/2 [only for DATA Submessages and User Endpoints]
|
||||||
when 9 =>
|
when 9 =>
|
||||||
if (opcode = SID_DATA and builtin_endpoint = '0') then
|
if (opcode = SID_DATA and builtin_endpoint = '0') then
|
||||||
data_out <= std_logic_vector(src_ts(0));
|
data_out <= std_logic_vector(src_ts(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Source Timestamp 1/2 [only for DATA Submessages and User Endpoints]
|
-- Source Timestamp 1/2 [only for DATA Submessages and User Endpoints]
|
||||||
when 10 =>
|
when 10 =>
|
||||||
if (opcode = SID_DATA and builtin_endpoint = '0') then
|
if (opcode = SID_DATA and builtin_endpoint = '0') then
|
||||||
@ -1061,7 +1100,6 @@ begin
|
|||||||
-- NOTE: This is a synchronised push on potentially multiple output FIFOs. If one FIFO gets full, the process stalls for all FIFOs.
|
-- 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
|
-- Output FIFO Guard
|
||||||
if (builtin_endpoint = '1' and builtin_full = '0') or (builtin_endpoint = '0' and ((user_endpoint and user_full) = (user_endpoint'range => '0'))) then
|
if (builtin_endpoint = '1' and builtin_full = '0') or (builtin_endpoint = '0' and ((user_endpoint and user_full) = (user_endpoint'range => '0'))) then
|
||||||
cnt_next <= cnt + 1;
|
|
||||||
|
|
||||||
case (opcode) is
|
case (opcode) is
|
||||||
when SID_HEARTBEAT =>
|
when SID_HEARTBEAT =>
|
||||||
@ -1070,18 +1108,22 @@ begin
|
|||||||
when 0 =>
|
when 0 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(0));
|
data_out <= std_logic_vector(sn_latch_1(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- FirstSN 2/2
|
-- FirstSN 2/2
|
||||||
when 1 =>
|
when 1 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(1));
|
data_out <= std_logic_vector(sn_latch_1(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- LastSN 1/2
|
-- LastSN 1/2
|
||||||
when 2 =>
|
when 2 =>
|
||||||
data_out <= std_logic_vector(sn_latch_2(0));
|
data_out <= std_logic_vector(sn_latch_2(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- LastSN 2/2
|
-- LastSN 2/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
data_out <= std_logic_vector(sn_latch_2(1));
|
data_out <= std_logic_vector(sn_latch_2(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- Count
|
-- Count
|
||||||
when 4 =>
|
when 4 =>
|
||||||
data_out <= long_latch;
|
data_out <= long_latch;
|
||||||
@ -1099,15 +1141,18 @@ begin
|
|||||||
when 0 =>
|
when 0 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(0));
|
data_out <= std_logic_vector(sn_latch_1(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- ReaderSNState.Base 2/2
|
-- ReaderSNState.Base 2/2
|
||||||
when 1 =>
|
when 1 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(1));
|
data_out <= std_logic_vector(sn_latch_1(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- ReaderSNState.NumBits
|
-- ReaderSNState.NumBits
|
||||||
when 2 =>
|
when 2 =>
|
||||||
data_out <= std_logic_vector(ulong_latch);
|
data_out <= std_logic_vector(ulong_latch);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
cnt2_next <= 0;
|
cnt2_next <= 0;
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- ReaderSNState.Bitmap
|
-- ReaderSNState.Bitmap
|
||||||
when 3 =>
|
when 3 =>
|
||||||
-- Write Bitmap
|
-- Write Bitmap
|
||||||
@ -1116,9 +1161,8 @@ begin
|
|||||||
|
|
||||||
data_out <= bitmap_latch_next(cnt2);
|
data_out <= bitmap_latch_next(cnt2);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
else
|
||||||
-- Keep Sub-State
|
cnt_next <= cnt + 1;
|
||||||
cnt_next <= cnt;
|
|
||||||
end if;
|
end if;
|
||||||
-- Count
|
-- Count
|
||||||
when 4 =>
|
when 4 =>
|
||||||
@ -1137,22 +1181,27 @@ begin
|
|||||||
when 0 =>
|
when 0 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(0));
|
data_out <= std_logic_vector(sn_latch_1(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapStart 2/2
|
-- GapStart 2/2
|
||||||
when 1 =>
|
when 1 =>
|
||||||
data_out <= std_logic_vector(sn_latch_1(1));
|
data_out <= std_logic_vector(sn_latch_1(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapList.Base 1/2
|
-- GapList.Base 1/2
|
||||||
when 2 =>
|
when 2 =>
|
||||||
data_out <= std_logic_vector(sn_latch_2(0));
|
data_out <= std_logic_vector(sn_latch_2(0));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapList.Base 2/2
|
-- GapList.Base 2/2
|
||||||
when 3 =>
|
when 3 =>
|
||||||
data_out <= std_logic_vector(sn_latch_2(1));
|
data_out <= std_logic_vector(sn_latch_2(1));
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
-- GapList.NumBits
|
-- GapList.NumBits
|
||||||
when 4 =>
|
when 4 =>
|
||||||
data_out <= std_logic_vector(ulong_latch);
|
data_out <= std_logic_vector(ulong_latch);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
cnt_next <= cnt + 1;
|
||||||
cnt2_next <= 0;
|
cnt2_next <= 0;
|
||||||
-- GapList.Bitmap
|
-- GapList.Bitmap
|
||||||
when 5 =>
|
when 5 =>
|
||||||
@ -1162,9 +1211,8 @@ begin
|
|||||||
|
|
||||||
data_out <= bitmap_latch_next(cnt2);
|
data_out <= bitmap_latch_next(cnt2);
|
||||||
wr_sig <= '1';
|
wr_sig <= '1';
|
||||||
|
else
|
||||||
-- Keep Sub-State
|
cnt_next <= cnt + 1;
|
||||||
cnt_next <= cnt;
|
|
||||||
end if;
|
end if;
|
||||||
-- NOTE: Because we need to pull "last_word_out" high on the last Byte, and doing so in the last Byte of Bitmap was deemed
|
-- NOTE: Because we need to pull "last_word_out" high on the last Byte, and doing so in the last Byte of Bitmap was deemed
|
||||||
-- to much overhead (We need a counter in addition to cnt2 to track the next-to-last Byte of the Bitmap), we just
|
-- to much overhead (We need a counter in addition to cnt2 to track the next-to-last Byte of the Bitmap), we just
|
||||||
|
|||||||
@ -384,7 +384,7 @@ package rtps_package is
|
|||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
constant BEST_EFFORT_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(1,CDR_ENUMERATION_WIDTH));
|
constant BEST_EFFORT_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(1,CDR_ENUMERATION_WIDTH));
|
||||||
constant RELIABLE_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(2,CDR_ENUMERATION_WIDTH));
|
constant RELIABLE_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(2,CDR_ENUMERATION_WIDTH));
|
||||||
constant DEFAULT_RELIABILTY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := RELIABLE_RELIABILITY_QOS;
|
constant DEFAULT_RELIABILITY_QOS : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := RELIABLE_RELIABILITY_QOS;
|
||||||
-- MAX BLOCKING TIME (RELIABILITY)
|
-- MAX BLOCKING TIME (RELIABILITY)
|
||||||
constant DEFAULT_MAX_BLOCKING_TIME : DURATION_TYPE; --Deferred to Package Body (100 ms)
|
constant DEFAULT_MAX_BLOCKING_TIME : DURATION_TYPE; --Deferred to Package Body (100 ms)
|
||||||
-- TRANSPORT_PRIORITY
|
-- TRANSPORT_PRIORITY
|
||||||
@ -463,8 +463,8 @@ package rtps_package is
|
|||||||
function to_key_hash (A : GUID_TYPE) return KEY_HASH_TYPE;
|
function to_key_hash (A : GUID_TYPE) return KEY_HASH_TYPE;
|
||||||
|
|
||||||
-- *OVERLOAD FUNCTIONS*
|
-- *OVERLOAD FUNCTIONS*
|
||||||
function convert_from_double_word (input: DOUBLE_WORD_ARRAY) return unsigned;
|
function to_unsigned (input: DOUBLE_WORD_ARRAY) return unsigned;
|
||||||
function convert_to_double_word (input: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY;
|
function to_double_word (input: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY;
|
||||||
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function ">" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean;
|
function ">" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean;
|
||||||
function ">" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean;
|
function ">" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
@ -524,7 +524,7 @@ package body rtps_package is
|
|||||||
constant DEFAULT_MAX_BLOCKING_TIME : DURATION_TYPE := gen_duration(0,100 * (10**6)); -- 100 ms
|
constant DEFAULT_MAX_BLOCKING_TIME : DURATION_TYPE := gen_duration(0,100 * (10**6)); -- 100 ms
|
||||||
constant DEFAULT_PARTICIPANT_LEASE_DURATION : DURATION_TYPE := gen_duration(100, 0); -- 100 s
|
constant DEFAULT_PARTICIPANT_LEASE_DURATION : DURATION_TYPE := gen_duration(100, 0); -- 100 s
|
||||||
|
|
||||||
function convert_from_double_word (input: DOUBLE_WORD_ARRAY) return unsigned is
|
function to_unsigned (input: DOUBLE_WORD_ARRAY) return unsigned is
|
||||||
variable ret : unsigned(63 downto 0) := (others => '0');
|
variable ret : unsigned(63 downto 0) := (others => '0');
|
||||||
begin
|
begin
|
||||||
ret(63 downto 32) := input(0);
|
ret(63 downto 32) := input(0);
|
||||||
@ -532,7 +532,7 @@ package body rtps_package is
|
|||||||
return ret;
|
return ret;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function convert_to_double_word (input: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY is
|
function to_double_word (input: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY is
|
||||||
variable ret : DOUBLE_WORD_ARRAY := (others => (others => '0'));
|
variable ret : DOUBLE_WORD_ARRAY := (others => (others => '0'));
|
||||||
begin
|
begin
|
||||||
ret(0) := input(63 downto 32);
|
ret(0) := input(63 downto 32);
|
||||||
@ -542,122 +542,122 @@ package body rtps_package is
|
|||||||
|
|
||||||
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) > convert_from_double_word(R);
|
return to_unsigned(L) > to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function ">" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function ">" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) > R;
|
return to_unsigned(L) > R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function ">" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function ">" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L > convert_from_double_word(R);
|
return L > to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) < convert_from_double_word(R);
|
return to_unsigned(L) < to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function "<" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) < R;
|
return to_unsigned(L) < R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L < convert_from_double_word(R);
|
return L < to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) >= convert_from_double_word(R);
|
return to_unsigned(L) >= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function ">=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function ">=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) >= R;
|
return to_unsigned(L) >= R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function ">=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function ">=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L >= convert_from_double_word(R);
|
return L >= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) <= convert_from_double_word(R);
|
return to_unsigned(L) <= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function "<=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) <= R;
|
return to_unsigned(L) <= R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "<=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L <= convert_from_double_word(R);
|
return L <= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) = convert_from_double_word(R);
|
return to_unsigned(L) = to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function "=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) = R;
|
return to_unsigned(L) = R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function "=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L = convert_from_double_word(R);
|
return L = to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) /= convert_from_double_word(R);
|
return to_unsigned(L) /= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "/=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
function "/=" (L: DOUBLE_WORD_ARRAY; R: natural) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) /= R;
|
return to_unsigned(L) /= R;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "/=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
function "/=" (L: natural; R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return L /= convert_from_double_word(R);
|
return L /= to_unsigned(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(convert_from_double_word(L) + convert_from_double_word(R));
|
return to_double_word(to_unsigned(L) + to_unsigned(R));
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "+" (L: DOUBLE_WORD_ARRAY; R: natural) return DOUBLE_WORD_ARRAY is
|
function "+" (L: DOUBLE_WORD_ARRAY; R: natural) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(convert_from_double_word(L) + R);
|
return to_double_word(to_unsigned(L) + R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "+" (L: natural; R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function "+" (L: natural; R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(L + convert_from_double_word(R));
|
return to_double_word(L + to_unsigned(R));
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "-" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function "-" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(convert_from_double_word(L) - convert_from_double_word(R));
|
return to_double_word(to_unsigned(L) - to_unsigned(R));
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "-" (L: DOUBLE_WORD_ARRAY; R: natural) return DOUBLE_WORD_ARRAY is
|
function "-" (L: DOUBLE_WORD_ARRAY; R: natural) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(convert_from_double_word(L) - R);
|
return to_double_word(to_unsigned(L) - R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function "-" (L: natural; R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function "-" (L: natural; R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(L - convert_from_double_word(R));
|
return to_double_word(L - to_unsigned(R));
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
function min(L, R : DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function min(L, R : DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -657,23 +657,23 @@ package body rtps_test_package is
|
|||||||
locator => (
|
locator => (
|
||||||
0 => (
|
0 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & META_IPv4_MULTICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & META_IPv4_MULTICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_META_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_META_ADDRESS
|
||||||
),
|
),
|
||||||
1 => (
|
1 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & META_IPv4_UNICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & META_IPv4_UNICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_META_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_META_ADDRESS
|
||||||
),
|
),
|
||||||
2 => (
|
2 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & META_IPv4_MULTICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & META_IPv4_MULTICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_ADDRESS
|
||||||
),
|
),
|
||||||
3 => (
|
3 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & META_IPv4_UNICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & META_IPv4_UNICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_ADDRESS
|
||||||
),
|
),
|
||||||
others => EMPTY_LOCATOR
|
others => EMPTY_LOCATOR
|
||||||
)
|
)
|
||||||
@ -683,13 +683,13 @@ package body rtps_test_package is
|
|||||||
locator => (
|
locator => (
|
||||||
0 => (
|
0 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & USER_IPv4_MULTICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & USER_IPv4_MULTICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_ADDRESS
|
||||||
),
|
),
|
||||||
1 => (
|
1 => (
|
||||||
kind => LOCATOR_KIND_UDPv4,
|
kind => LOCATOR_KIND_UDPv4,
|
||||||
portn => (LOCATOR_PORT_WIDTH-1 downto UDP_PORT_WIDTH => '0') & USER_IPv4_UNICAST_PORT,
|
portn => (UDP_PORT_WIDTH to LOCATOR_PORT_WIDTH-1 => '0') & USER_IPv4_UNICAST_PORT,
|
||||||
addr => (LOCATOR_ADDR_WIDTH-1 downto IPv4_ADDRESS_WIDTH => '0') & DEFAULT_IPv4_ADDRESS
|
addr => (IPv4_ADDRESS_WIDTH to LOCATOR_ADDR_WIDTH-1 => '0') & DEFAULT_IPv4_ADDRESS
|
||||||
),
|
),
|
||||||
others => EMPTY_LOCATOR
|
others => EMPTY_LOCATOR
|
||||||
)
|
)
|
||||||
@ -808,7 +808,7 @@ package body rtps_test_package is
|
|||||||
liveliness => DEFAULT_LIVELINESS_QOS,
|
liveliness => DEFAULT_LIVELINESS_QOS,
|
||||||
leaseDuration => DEFAULT_LEASE_DURATION,
|
leaseDuration => DEFAULT_LEASE_DURATION,
|
||||||
time_based_filter => DEFAULT_TIME_BASED_FILTER_QOS,
|
time_based_filter => DEFAULT_TIME_BASED_FILTER_QOS,
|
||||||
reliability => DEFAULT_RELIABILTY_QOS,
|
reliability => DEFAULT_RELIABILITY_QOS,
|
||||||
max_blocking_time => DEFAULT_MAX_BLOCKING_TIME,
|
max_blocking_time => DEFAULT_MAX_BLOCKING_TIME,
|
||||||
transport_priority => DEFAULT_TRANSPORT_PRIORITY_QOS,
|
transport_priority => DEFAULT_TRANSPORT_PRIORITY_QOS,
|
||||||
lifespan => DEFAULT_LIFESPAN_QOS,
|
lifespan => DEFAULT_LIFESPAN_QOS,
|
||||||
@ -1018,9 +1018,9 @@ package body rtps_test_package is
|
|||||||
begin
|
begin
|
||||||
if (ref.kind /= LOCATOR_KIND_UDPv4) then
|
if (ref.kind /= LOCATOR_KIND_UDPv4) then
|
||||||
return FALSE;
|
return FALSE;
|
||||||
elsif (ref.addr(IPv4_ADDRESS_WIDTH-1 downto 0) = (IPv4_ADDRESS_WIDTH-1 downto 0 => '0')) then
|
elsif (ref.addr(IPv4_ADDRESS_WIDTH-1 downto 0) = IPv4_ADDRESS_INVALID) then
|
||||||
return FALSE;
|
return FALSE;
|
||||||
elsif (ref.portn(UDP_PORT_WIDTH-1 downto 0) = (UDP_PORT_WIDTH-1 downto 0 => '0')) then
|
elsif (ref.portn(UDP_PORT_WIDTH-1 downto 0) = UDP_PORT_INVALID) then
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1263,10 +1263,10 @@ package body rtps_test_package is
|
|||||||
if (ref.submessageID = SID_ACKNACK or ref.submessageID = SID_NACK_FRAG or ref.submessageID = SID_HEARTBEAT or ref.submessageID = SID_HEARTBEAT_FRAG or ref.submessageID = SID_GAP or ref.submessageID = SID_DATA or ref.submessageID = SID_DATA_FRAG or ref.submessageID = SID_INFO_TS or ref.submessageID = SID_INFO_SRC or ref.submessageID = SID_INFO_DST or ref.submessageID = SID_INFO_REPLY or ref.submessageID =SID_INFO_REPLY_IP4) then
|
if (ref.submessageID = SID_ACKNACK or ref.submessageID = SID_NACK_FRAG or ref.submessageID = SID_HEARTBEAT or ref.submessageID = SID_HEARTBEAT_FRAG or ref.submessageID = SID_GAP or ref.submessageID = SID_DATA or ref.submessageID = SID_DATA_FRAG or ref.submessageID = SID_INFO_TS or ref.submessageID = SID_INFO_SRC or ref.submessageID = SID_INFO_DST or ref.submessageID = SID_INFO_REPLY or ref.submessageID =SID_INFO_REPLY_IP4) then
|
||||||
-- NOTE: A Submessage Length of 0 is left as is.
|
-- NOTE: A Submessage Length of 0 is left as is.
|
||||||
-- Fix Submessage Length
|
-- Fix Submessage Length
|
||||||
if (ref.submessageLength = (ref.submessageLength'range => '1')) then
|
if (ref.submessageLength = (ref.submessageLength'reverse_range => '1')) then
|
||||||
output.data(start)(SUBMESSAGE_LENGTH_WIDTH-1 downto 0) := endian_swap(ref.flags(SUBMESSAGE_ENDIAN_FLAG_POS), int((output.length-start-1)*4,SUBMESSAGE_LENGTH_WIDTH));
|
output.data(start)(SUBMESSAGE_LENGTH_WIDTH-1 downto 0) := endian_swap(ref.flags(SUBMESSAGE_ENDIAN_FLAG_POS), int((output.length-start-1)*4,SUBMESSAGE_LENGTH_WIDTH));
|
||||||
-- Fix(Truncate/Extend) Packet Length to specified Length
|
-- Fix(Truncate/Extend) Packet Length to specified Length
|
||||||
elsif (ref.submessageLength /= (ref.submessageLength'range => '0')) then
|
elsif (ref.submessageLength /= (ref.submessageLength'reverse_range => '0')) then
|
||||||
output.length := start + to_integer(unsigned(ref.submessageLength));
|
output.length := start + to_integer(unsigned(ref.submessageLength));
|
||||||
end if;
|
end if;
|
||||||
-- *PAD/UKNOWN*
|
-- *PAD/UKNOWN*
|
||||||
@ -1422,7 +1422,7 @@ package body rtps_test_package is
|
|||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
if (ref.payload.length > 0 and (not ref.serialized_key)) then
|
if (ref.payload.length > 0 and (not ref.serialized_key)) then
|
||||||
output.data(output.length)(SSI_PAYLOAD_FLAG) := '1';
|
output.data(output.length)(SSI_DATA_FLAG) := '1';
|
||||||
end if;
|
end if;
|
||||||
if (ref.instance /= HANDLE_NIL) then
|
if (ref.instance /= HANDLE_NIL) then
|
||||||
output.data(output.length)(SSI_KEY_HASH_FLAG) := '1';
|
output.data(output.length)(SSI_KEY_HASH_FLAG) := '1';
|
||||||
@ -1604,7 +1604,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- METATRAFFIC MULTICAST LOCATOR
|
-- METATRAFFIC MULTICAST LOCATOR
|
||||||
if (ref.metatrafficMulticastLocatorList.numLocators /= (ref.metatrafficMulticastLocatorList.numLocators'range => '0')) then
|
if (ref.metatrafficMulticastLocatorList.numLocators /= (ref.metatrafficMulticastLocatorList.numLocators'reverse_range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.metatrafficMulticastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.metatrafficMulticastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
if (pid = PID_METATRAFFIC_MULTICAST_LOCATOR) then
|
if (pid = PID_METATRAFFIC_MULTICAST_LOCATOR) then
|
||||||
@ -1632,7 +1632,7 @@ package body rtps_test_package is
|
|||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- METATRAFFIC UNICAST LOCATOR
|
-- METATRAFFIC UNICAST LOCATOR
|
||||||
if (ref.metatrafficUnicastLocatorList.numLocators /= (ref.metatrafficUnicastLocatorList.numLocators'range => '0')) then
|
if (ref.metatrafficUnicastLocatorList.numLocators /= (ref.metatrafficUnicastLocatorList.numLocators'reverse_range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.metatrafficUnicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.metatrafficUnicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
if (pid = PID_METATRAFFIC_UNICAST_LOCATOR) then
|
if (pid = PID_METATRAFFIC_UNICAST_LOCATOR) then
|
||||||
@ -1660,7 +1660,7 @@ package body rtps_test_package is
|
|||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- DEFAULT MULTICAST LOCATOR
|
-- DEFAULT MULTICAST LOCATOR
|
||||||
if (ref.defaultMulticastLocatorList.numLocators /= (ref.defaultMulticastLocatorList.numLocators'range => '0')) then
|
if (ref.defaultMulticastLocatorList.numLocators /= (ref.defaultMulticastLocatorList.numLocators'reverse_range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.defaultMulticastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.defaultMulticastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
if (pid = PID_DEFAULT_MULTICAST_LOCATOR) then
|
if (pid = PID_DEFAULT_MULTICAST_LOCATOR) then
|
||||||
@ -1689,7 +1689,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
-- DEFAULT UNICAST LOCATOR
|
-- DEFAULT UNICAST LOCATOR
|
||||||
assert (unsigned(ref.defaultUnicastLocatorList.numLocators) > 0) report "PARTICIPANT_DATA: Participant needs to have at least one Default Unicast Locator." severity error;
|
assert (unsigned(ref.defaultUnicastLocatorList.numLocators) > 0) report "PARTICIPANT_DATA: Participant needs to have at least one Default Unicast Locator." severity error;
|
||||||
if (ref.defaultUnicastLocatorList.numLocators /= (ref.defaultUnicastLocatorList.numLocators'range => '0')) then
|
if (ref.defaultUnicastLocatorList.numLocators /= (ref.defaultUnicastLocatorList.numLocators'reverse_range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.defaultUnicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.defaultUnicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
if (pid = PID_DEFAULT_UNICAST_LOCATOR) then
|
if (pid = PID_DEFAULT_UNICAST_LOCATOR) then
|
||||||
@ -1885,7 +1885,7 @@ package body rtps_test_package is
|
|||||||
-- UDP Port
|
-- UDP Port
|
||||||
when 5 =>
|
when 5 =>
|
||||||
if (ref.match = MATCH) then
|
if (ref.match = MATCH) then
|
||||||
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & (UDP_PORT_WIDTH-1 downto 0 => '0');
|
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & UDP_PORT_INVALID;
|
||||||
else
|
else
|
||||||
ret(i).data := (others => '-');
|
ret(i).data := (others => '-');
|
||||||
end if;
|
end if;
|
||||||
@ -2004,7 +2004,7 @@ package body rtps_test_package is
|
|||||||
-- UDP Port
|
-- UDP Port
|
||||||
when 5 =>
|
when 5 =>
|
||||||
if (ref.match = MATCH) then
|
if (ref.match = MATCH) then
|
||||||
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & (UDP_PORT_WIDTH-1 downto 0 => '0');
|
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & UDP_PORT_INVALID;
|
||||||
ret(i).data(READER_EXPECTS_INLINE_QOS_FLAG) := ref.expectsInlineQoS(0);
|
ret(i).data(READER_EXPECTS_INLINE_QOS_FLAG) := ref.expectsInlineQoS(0);
|
||||||
ret(i).data(READER_EXPECTS_HISTORICAL_DATA_FLAG) := '1' when (ref.durability /= VOLATILE_DURABILITY_QOS) else '0';
|
ret(i).data(READER_EXPECTS_HISTORICAL_DATA_FLAG) := '1' when (ref.durability /= VOLATILE_DURABILITY_QOS) else '0';
|
||||||
ret(i).data(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
ret(i).data(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
||||||
@ -2073,7 +2073,7 @@ package body rtps_test_package is
|
|||||||
-- UDP Port
|
-- UDP Port
|
||||||
when 5 =>
|
when 5 =>
|
||||||
if (ref.match = MATCH) then
|
if (ref.match = MATCH) then
|
||||||
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & (UDP_PORT_WIDTH-1 downto 0 => '0');
|
ret(i).data := user_loc.portn(UDP_PORT_WIDTH-1 downto 0) & UDP_PORT_INVALID;
|
||||||
ret(i).data(READER_EXPECTS_INLINE_QOS_FLAG) := ref.expectsInlineQoS(0);
|
ret(i).data(READER_EXPECTS_INLINE_QOS_FLAG) := ref.expectsInlineQoS(0);
|
||||||
ret(i).data(READER_EXPECTS_HISTORICAL_DATA_FLAG) := '1' when (ref.durability /= VOLATILE_DURABILITY_QOS) else '0';
|
ret(i).data(READER_EXPECTS_HISTORICAL_DATA_FLAG) := '1' when (ref.durability /= VOLATILE_DURABILITY_QOS) else '0';
|
||||||
ret(i).data(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
ret(i).data(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
||||||
@ -2373,7 +2373,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (ref.reliability /= DEFAULT_RELIABILTY_QOS or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then
|
if (ref.reliability /= DEFAULT_RELIABILITY_QOS or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then
|
||||||
if (pid = PID_RELIABILITY) then
|
if (pid = PID_RELIABILITY) then
|
||||||
assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
output.data(output.length) := PID_RELIABILITY & endian_swap(ref.littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
output.data(output.length) := PID_RELIABILITY & endian_swap(ref.littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
@ -2601,7 +2601,7 @@ package body rtps_test_package is
|
|||||||
|
|
||||||
procedure gen_sentinel(output : inout TEST_PACKET_TYPE) is
|
procedure gen_sentinel(output : inout TEST_PACKET_TYPE) is
|
||||||
begin
|
begin
|
||||||
output.data(output.length) := PID_SENTINEL & (PARAMETER_LENGTH_WIDTH-1 downto 0 => '0');
|
output.data(output.length) := PID_SENTINEL & (0 to PARAMETER_LENGTH_WIDTH-1 => '0');
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end procedure;
|
end procedure;
|
||||||
|
|
||||||
@ -2803,7 +2803,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (endpoint.reliability /= DEFAULT_RELIABILTY_QOS or endpoint.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then
|
if (endpoint.reliability /= DEFAULT_RELIABILITY_QOS or endpoint.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME or pid = PID_RELIABILITY) then
|
||||||
if (pid = PID_RELIABILITY) then
|
if (pid = PID_RELIABILITY) then
|
||||||
assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
assert (12+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
output.data(output.length) := PID_RELIABILITY & endian_swap(littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
output.data(output.length) := PID_RELIABILITY & endian_swap(littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
@ -3155,7 +3155,7 @@ package body rtps_test_package is
|
|||||||
for i in 0 to max(mem.ilen-1,0) loop
|
for i in 0 to max(mem.ilen-1,0) loop
|
||||||
-- Instance Found
|
-- Instance Found
|
||||||
if (inst = mem.inst(i).inst) then
|
if (inst = mem.inst(i).inst) then
|
||||||
if (((mem.inst(i).istate and istate) /= (istate'range => '0')) and ((mem.inst(i).vstate and vstate) /= (vstate'range => '0'))) then
|
if (((mem.inst(i).istate and istate) /= (istate'reverse_range => '0')) and ((mem.inst(i).vstate and vstate) /= (vstate'reverse_range => '0'))) then
|
||||||
return TRUE;
|
return TRUE;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
@ -3173,6 +3173,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
assert FALSE report "Instance not in Memory" severity FAILURE;
|
assert FALSE report "Instance not in Memory" severity FAILURE;
|
||||||
|
return mem.ilen;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
procedure gen_collection (mem : inout DDS_READER_MEM_TYPE; col : inout COLLECTION_TYPE; inst : INSTANCE_HANDLE_TYPE; sstate : in std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0); istate : in std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0); vstate : in std_logic_vector(VIEW_STATE_KIND_WIDTH-1 downto 0); max_samples : in natural; remove : in boolean; sort : in boolean) is
|
procedure gen_collection (mem : inout DDS_READER_MEM_TYPE; col : inout COLLECTION_TYPE; inst : INSTANCE_HANDLE_TYPE; sstate : in std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0); istate : in std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0); vstate : in std_logic_vector(VIEW_STATE_KIND_WIDTH-1 downto 0); max_samples : in natural; remove : in boolean; sort : in boolean) is
|
||||||
@ -3189,7 +3190,7 @@ package body rtps_test_package is
|
|||||||
loop
|
loop
|
||||||
if (no_inst) then
|
if (no_inst) then
|
||||||
-- Sample and Instance Compatible
|
-- Sample and Instance Compatible
|
||||||
if (((mem.s(i).sstate and sstate) /= (sstate'range => '0')) and check_instance(istate, vstate, mem, mem.s(i).inst) and ((inst /= HANDLE_NIL and inst = mem.s(i).inst) or inst = HANDLE_NIL) and (sel(i) /= '1')) then
|
if (((mem.s(i).sstate and sstate) /= (sstate'reverse_range => '0')) and check_instance(istate, vstate, mem, mem.s(i).inst) and ((inst /= HANDLE_NIL and inst = mem.s(i).inst) or inst = HANDLE_NIL) and (sel(i) /= '1')) then
|
||||||
col.s(col.len) := mem.s(i);
|
col.s(col.len) := mem.s(i);
|
||||||
col.s(col.len).istate := mem.inst(find_instance(mem,mem.s(i).inst)).istate;
|
col.s(col.len).istate := mem.inst(find_instance(mem,mem.s(i).inst)).istate;
|
||||||
col.s(col.len).vstate := mem.inst(find_instance(mem,mem.s(i).inst)).vstate;
|
col.s(col.len).vstate := mem.inst(find_instance(mem,mem.s(i).inst)).vstate;
|
||||||
@ -3206,7 +3207,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- Sample Compatible (and belonging to specified Instance)
|
-- Sample Compatible (and belonging to specified Instance)
|
||||||
elsif (((mem.s(i).sstate and sstate) /= (sstate'range => '0')) and (mem.s(i).inst = tmp_inst) and (sel(i) /= '1')) then
|
elsif (((mem.s(i).sstate and sstate) /= (sstate'reverse_range => '0')) and (mem.s(i).inst = tmp_inst) and (sel(i) /= '1')) then
|
||||||
col.s(col.len) := mem.s(i);
|
col.s(col.len) := mem.s(i);
|
||||||
col.s(col.len).istate := mem.inst(find_instance(mem,mem.s(i).inst)).istate;
|
col.s(col.len).istate := mem.inst(find_instance(mem,mem.s(i).inst)).istate;
|
||||||
col.s(col.len).vstate := mem.inst(find_instance(mem,mem.s(i).inst)).vstate;
|
col.s(col.len).vstate := mem.inst(find_instance(mem,mem.s(i).inst)).vstate;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -94,7 +94,7 @@ package user_config is
|
|||||||
constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS);
|
constant ENDPOINT_TIME_BASED_FILTER_QOS : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_TIME_BASED_FILTER_QOS);
|
||||||
-- XXX: PARTITION QoS Ignored
|
-- XXX: PARTITION QoS Ignored
|
||||||
-- Array mapping RELIABILITY QoS to Endpoints
|
-- Array mapping RELIABILITY QoS to Endpoints
|
||||||
constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILTY_QOS);
|
constant ENDPOINT_RELIABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_RELIABILITY_QOS);
|
||||||
-- (Only relevant to Writers)
|
-- (Only relevant to Writers)
|
||||||
constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME);
|
constant ENDPOINT_MAX_BLOCKING_TIME : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_MAX_BLOCKING_TIME);
|
||||||
-- Array mapping TRANSPORT_PRIORITY QoS to Endpoints (Only relevant to Writers)
|
-- Array mapping TRANSPORT_PRIORITY QoS to Endpoints (Only relevant to Writers)
|
||||||
@ -120,4 +120,7 @@ package user_config is
|
|||||||
-- NOTE: The buffer will not only store participants, but also endpoint data
|
-- NOTE: The buffer will not only store participants, but also endpoint data
|
||||||
-- Used to determine the size of the builtin endpoint buffer
|
-- Used to determine the size of the builtin endpoint buffer
|
||||||
constant MAX_REMOTE_PARTICIPANTS : natural := 50;
|
constant MAX_REMOTE_PARTICIPANTS : natural := 50;
|
||||||
|
|
||||||
|
-- Set to TRUE for Simulation Testing (Extra Code generated)
|
||||||
|
constant SIMULATION_FLAG : boolean := FALSE;
|
||||||
end package;
|
end package;
|
||||||
Loading…
Reference in New Issue
Block a user