anchor.diff:        endseq
      endseq;
      
  -   
  -
  +   rule finishCmdReads;
  +      let v <- completionBuffer.drain.get();
  +      cmdRing.popAck();
  +      $display("pop ack");
  +   endrule
  +   
      Stmt responseArbiter =
      seq
         while(True) seq
  
positive.code:    ServerF#(Bit#(64), Bit#(64)) copyEngine <- mkCopyEngine(dma_read_chan, dma_write_chan);   
     ServerF#(Bit#(64), Bit#(64)) nopEngine <- mkNopEngine();
     ServerF#(Bit#(64), Bit#(64)) echoEngine <- mkEchoEngine();
     
     RingBuffer cmdRing <- mkRingBuffer;
     RingBuffer statusRing <- mkRingBuffer;
  
negative.code: import PortalMemory::*;
  import Dma::*;
  import GetPutF::*;
  import CompletionBuffer::*;
  
  import RingTypes::*;
  import RingBuffer::*;
  