anchor.diff:     FIFOF#(Bit#(128)) packet_in_fifo <- mkBypassFIFOF;
      FIFOF#(Bit#(16)) unparsed_in_fifo <- mkBypassFIFOF;
      FIFOF#(Bit#(16)) unparsed_in_fifo_vlan0 <- mkBypassFIFOF;
  -   FIFOF#(Bit#(16)) unparsed_in_fifo_vlan1 <- mkBypassFIFOF;
  +//   FIFOF#(Bit#(16)) unparsed_in_fifo_vlan1 <- mkBypassFIFOF;
      FIFOF#(Vlan_tag_t) parsed_out_fifo <- mkSizedFIFOF(1);
      FIFOF#(Bit#(112)) unparsed_out_parse_vlan0_fifo <- mkSizedFIFOF(1);
      FIFOF#(Bit#(80)) unparsed_out_parse_vlan1_fifo <- mkSizedFIFOF(1);
  
positive.code:    endaction
     endseq;
  
     FSM fsm_parse_ethernet <- mkFSMWithPred(parse_ethernet, True);
     //Once once_parse_ethernet <- mkOnce(fsm_parse_ethernet.start);
  
     //method Action start = once_parse_ethernet.start;
     method Action start = fsm_parse_ethernet.start;
     method Action clear();
        //once_parse_ethernet.clear;
        fsm_parse_ethernet.abort;
        //packet_in_fifo.clear;
     endmethod
     interface packetIn = toPipeIn(packet_in_fifo);
     interface unparsedOutIpv4 = toPipeOut(unparsed_out_parse_ipv4_fifo);
  
negative.code:    Reg#(Bool) started <- mkReg(False);
  
     rule start_fsm (curr_state == S0 && data_in_fifo.notEmpty);
        if (!started) begin
           parse_ethernet.start;
           parse_vlan.start;
  