anchor.diff:  
   // portz libraries
   import MemServer::*;
  +import SGList::*;
   import Directory::*;
   import CtrlMux::*;
   import Portal::*;
  
positive.code:    Memread#(NumMasters) memread <- mkMemread(memreadIndicationProxy.ifc);
     MemreadRequestWrapper memreadRequestWrapper <- mkMemreadRequestWrapper(MemreadRequest,memread.request);
  
     DmaIndicationProxy dmaIndicationProxy <- mkDmaIndicationProxy(DmaIndication);
     MemServer#(PhysAddrWidth,64,NumMasters) dma <- mkMemServerR(dmaIndicationProxy.ifc, memread.dmaClients);
     DmaConfigWrapper dmaRequestWrapper <- mkDmaConfigWrapper(DmaConfig,dma.request);
  
     Vector#(4,StdPortal) portals;
     portals[0] = memreadRequestWrapper.portalIfc;
     portals[1] = memreadIndicationProxy.portalIfc; 
     portals[2] = dmaRequestWrapper.portalIfc;
     portals[3] = dmaIndicationProxy.portalIfc; 
     
     StdDirectory dir <- mkStdDirectory(portals);
     let ctrl_mux <- mkSlaveMux(dir,portals);
  
negative.code: 
  // generated by tool
  import MemreadRequestWrapper::*;
  import DmaDebugRequestWrapper::*;
  import SGListConfigRequestWrapper::*;
  import MemreadIndicationProxy::*;
  import DmaDebugIndicationProxy::*;
  import SGListConfigIndicationProxy::*;
  
  // defined by user
  import Memread::*;
  
  typedef enum {MemreadIndication, MemreadRequest, HostmemDmaDebugIndication, HostmemDmaDebugRequest, HostmemSGListConfigRequest, HostmemSGListConfigIndication} IfcNames deriving (Eq,Bits);
  
  typedef 4 NumMasters;
  module mkPortalTop(PortalTop#(PhysAddrWidth,64,Empty,NumMasters));
  