anchor.diff:  endmodule
   
   typedef enum {
  -   StateStart,
  +   StateParseStart,
      StateParseEthernet,
      StateParseIpv4
   } ParserState deriving (Bits, Eq);
  -instance FShow#(ParserState);
  -    function Fmt fshow (ParserState state);
  -        return $format(" State %x", state);
  -    endfunction
  -endinstance
  -
  -module mkStateStart#(Reg#(ParserState) state, FIFOF#(EtherData) datain, Wire#(Bool) start_fsm)(Empty);
  -    rule load_packet if (state==StateStart);
  -        let v = datain.first;
  -        if (v.sop) begin
  -            state <= StateParseEthernet;
  -            start_fsm <= True;
  -        end
  -        else begin
  -            datain.deq;
  -            start_fsm <= False;
  -        end
  -    endrule
  +module mkStateParseStart#(Reg#(ParserState) state, FIFOF#(EtherData) datain, Wire#(Bool) start_fsm)(Empty);
  +  rule load_packet if (state == StateParseStart);
  +    let v = datain.first;
  +    if (v.sop) begin
  +      state <= StateParseEthernet;
  +      start_fsm <= True;
  +    end
  +    else begin
  +      datain.deq;
  +      start_fsm <= False;
  +    end
  +  endrule
   endmodule
   
   interface ParseEthernet;
  
positive.code:   method Action clear;
  endinterface
  module mkStateDeparseIpv4#(Reg#(DeparserState) state, FIFOF#(EtherData) datain, FIFOF#(EtherData) dataout, FIFOF#(Ipv4T) meta_fifo, FIFOF#(Ipv4T) mask_fifo)(DeparseIpv4);
     let verbose = False;
     Wire#(EtherData) packet_in_wire <- mkDWire(defaultValue);
     FIFOF#(EtherData) deparse_ethernet_fifo <- mkBypassFIFOF;
     PulseWire start_wire <- mkPulseWire;
     PulseWire clear_wire <- mkPulseWire;
  
     function DeparserState compute_next_state(Bit#(8) protocol);
         DeparserState nextState = StateDeparseIdle;
  
negative.code:     end
    endrule
  
    rule clear if (!start_fsm && curr_state == StateParseStart);
      if (started) begin
        parse_ipv4.stop;
        parse_ethernet.stop;
  