anchor.diff:     FIFO#(Bool) freeDoneFifo <- mkFIFO;
      FIFO#(MemMgmtError) memMgmtErrorFifo <- mkFIFO;
      FIFO#(Bit#(PageIdx)) pagePointerFifo <- mkFIFO;
  +
  +   FIFOF#(Stage2Params#(numAllocClients)) stage2Params <- mkFIFOF;
   
      MMUIndicationProxy proxy <- mkMMUIndicationProxy(
   `ifdef DEBUG
  
positive.code:    interface Get idResponse = toGet(idresponse_fifo);
  endmodule
  
  interface MemMgmt#(numeric type addrWidth, numeric type numAllocClients, numeric type numReadClients);
     method Action init_mem();
     interface MMU#(addrWidth) mmu;
  
negative.code:       $display("MemMgmt:: %d handle_malloc allocate nPage=%d", cycle, nPages);
        let hasSpace <- freePageCount.maybeDecrement(unpack(nPages));
        if (hasSpace) begin
           stage2Params.enq(Stage2Params{
              nPages : nPages,
              request : v,
              mask : mask,
              id : id });
        end
     endrule
  
     rule handle_alloc_req2;
        let params <- toGet(stage2Params).get;
        reqBurstLen <= params.nPages;
        reqSglIndex <= 0;
        lastSegment <= tagged Invalid;
        barr0 <= extend(((params.request.req + params.mask) & (~params.mask)) >> valueOf(PageAddrLen));
        packetId <= truncate(params.id); // MaxNumPkts defined in SharedBuffMMU;
        currRequestFIfo.enq(params.request);
     endrule
  
     rule generate_sglist if (reqBurstLen > 0);
  