anchor.diff:     endrule
   
      rule rl_eop_full_frame if (w_send_last2);
  +      let data = data_buff[1] << n_bits_buffered | data_buffered; 
         let n_bytes_used = fromInteger(valueOf(MaskWidth)) - n_bytes_buffered;
         UInt#(NumBits) n_bits_used = cExtend(n_bytes_used) << 3;
         n_bytes_buffered <= n_bytes[1] - n_bytes_used;
         n_bits_buffered <= n_bits[1] - n_bits_used;
  +      let eth = EtherData {sop: False, eop: True, mask: 'hffff, data: data};
  +      data_out_ff.enq(eth);
         dbprint(3, $format("rl_end_of_packet_full_frame n_bytes_buffered=%d", n_bytes[1] - n_bytes_used));
      endrule
   
  
positive.code:       n_bits_buffered <= n_bits[1] - n_bits_used;
        data_buffered <= data_buff[1] >> n_bits_used;
        mask_buffered <= mask_buff[1] >> n_bytes_used;
  
        Bool sop = False;
        if (sop_buff[1]) begin
           sop = True;
        end
  
        let eth = EtherData {sop: sop, eop: False, mask: 'hffff, data: data};
        dbprint(3, $format("rl_send_full_frame n_bytes_buffered=%d", n_bytes[1] - n_bytes_used, fshow(eth)));
     endrule
  
  
negative.code:       n_bits[0] <= n_bits_used;
        data_buff[0] <= data_in_ff.first.data;
        mask_buff[0] <= data_in_ff.first.mask;
        eop_buff[0] <= data_in_ff.first.eop;
  
        if (data_in_ff.first.sop) begin
           sop_buff[0] <= True;
        end
  
        if (!eop) begin
           if (n_bytes_used + n_bytes_buffered >= fromInteger(valueOf(MaskWidth))) begin
  