@@ -33,16 +33,9 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
33
33
ready_deassertion_counter = 0 ;
34
34
endfunction
35
35
36
- protected virtual function void save_segment_by_index (uvm_lbus :: sequence_item item, int unsigned segment_index, bit full_segment = 0 );
37
- logic [128 - 1 : 0 ] data = item.data[128 * (segment_index+ 1 )- 1 - : 128 ];
38
- logic [4 - 1 : 0 ] mty = (full_segment ? 0 : item.mty[4 * (segment_index+ 1 )- 1 - : 4 ]);
39
- save_segment (data, mty);
40
- endfunction
41
-
42
36
protected virtual function void save_segment (logic [128 - 1 : 0 ] data, logic [4 - 1 : 0 ] mty = 0 );
43
- int unsigned valid_byte_count = (128 / 8 )- mty;
44
-
45
- for (int unsigned i = 0 ; i < valid_byte_count; i++ ) begin
37
+ for (int unsigned i = (128 / 8 ); i > mty; ) begin
38
+ i-- ;
46
39
bytes.push_back (data[8 * (i+ 1 )- 1 - : 8 ]);
47
40
end
48
41
endfunction
@@ -80,11 +73,11 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
80
73
81
74
if (! inside_frame) begin
82
75
if (t.sop[i] === 1'b1 && t.eop[i] === 1'b1 ) begin
83
- save_segment_by_index (t, i );
76
+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], t.mty[ 4 * (i + 1 ) - 1 - : 4 ] );
84
77
end
85
78
else if (t.sop[i] === 1'b1 ) begin
86
79
inside_frame = 1 ;
87
- save_segment_by_index (t, i, 1 );
80
+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], 0 );
88
81
end
89
82
else begin
90
83
assert (t.eop[i] !== 1'b1 )
@@ -96,11 +89,11 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
96
89
else begin
97
90
if (t.eop[i] === 1'b1 ) begin
98
91
inside_frame = 0 ;
99
- save_segment_by_index (t, i );
92
+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], t.mty[ 4 * (i + 1 ) - 1 - : 4 ] );
100
93
send_packet ();
101
94
end
102
95
else begin
103
- save_segment_by_index (t, i, 1 );
96
+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], 0 );
104
97
end
105
98
106
99
assert (t.sop[i] !== 1'b1 )
0 commit comments