@@ -33,16 +33,9 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
3333 ready_deassertion_counter = 0 ;
3434 endfunction
3535
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-
4236 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-- ;
4639 bytes.push_back (data[8 * (i+ 1 )- 1 - : 8 ]);
4740 end
4841 endfunction
@@ -80,11 +73,11 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
8073
8174 if (! inside_frame) begin
8275 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 ] );
8477 end
8578 else if (t.sop[i] === 1'b1 ) begin
8679 inside_frame = 1 ;
87- save_segment_by_index (t, i, 1 );
80+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], 0 );
8881 end
8982 else begin
9083 assert (t.eop[i] !== 1'b1 )
@@ -96,11 +89,11 @@ class monitor_logic_vector_array extends uvm_logic_vector_array::monitor #(8);
9689 else begin
9790 if (t.eop[i] === 1'b1 ) begin
9891 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 ] );
10093 send_packet ();
10194 end
10295 else begin
103- save_segment_by_index (t, i, 1 );
96+ save_segment (t.data[ 128 * (i + 1 ) - 1 - : 128 ], 0 );
10497 end
10598
10699 assert (t.sop[i] !== 1'b1 )
0 commit comments