anchor.diff:        let data_this_cycle <- toGet(deparse_ethernet_fifo).get;
         Vector#(112, Bit#(1)) last_data = takeAt(0, unpack(data_this_cycle.data));
         Vector#(16, Bit#(1)) data = takeAt(112, unpack(data_this_cycle.data));
  -      Vector#(16, Bit#(1)) curr_meta = takeAt(0, unpack(byteSwap(pack(ipv4_meta.first))));
  -      Vector#(16, Bit#(1)) curr_mask = takeAt(0, unpack(byteSwap(pack(ipv4_mask.first))));
  +      Vector#(16, Bit#(1)) curr_meta = takeAt(0, unpack(byteSwap(pack(meta_fifo.first))));
  +      Vector#(16, Bit#(1)) curr_mask = takeAt(0, unpack(byteSwap(pack(mask_fifo.first))));
         let masked_data = pack(data) & pack(curr_mask);
         let out_data = masked_data | pack(curr_meta);
         $display("(%0d) IPv4: [1] ", $time, fshow(data_this_cycle), " meta=%h, mask=%h", curr_mask, curr_meta);
  
positive.code:   Empty init_state <- mkStateDeparseIdle(curr_state, data_in_fifo, data_out_fifo, start_fsm);
    DeparseEthernet deparse_ethernet <- mkStateDeparseEthernet(curr_state, data_in_fifo, data_out_fifo, ethernet_meta_fifo, ethernet_mask_fifo);
    DeparseIpv4 deparse_ipv4 <- mkStateDeparseIpv4(curr_state, data_in_fifo, data_out_fifo, ipv4_meta_fifo, ipv4_mask_fifo);
  
    mkConnection(deparse_ipv4.deparse_ethernet, deparse_ethernet.deparse_ipv4);
  
    rule start if (start_fsm);
      if (!started) begin
  
negative.code:   defaultValue = unpack(0);
  endinstance
  instance DefaultMask#(EthernetT);
    defaultMask = unpack(maxBound);
  endinstance
  
  instance FShow#(EthernetT);
  