anchor.diff:      Bit#(4)                   qos;
       Bit#(3)                   size;
   } AxiREQ#(numeric type id_width);
  -    Bit#(1)                   valid;
   typedef struct {
       Bit#(id_width)            id;
       Bit#(2)                   resp;
   } AxiRESP#(numeric type id_width);
  -    Bit#(1)                   valid;
  -
  -typedef AxiREQ#(id_width) AxiMOSI_ar#(numeric type id_width);
  -    Bit#(1)                   rready;
  -typedef AxiREQ#(id_width) AxiMOSI_aw#(numeric type id_width);
  +typedef struct {
  +    Bit#(data_width)          data;
  +    Bit#(1)                   last;
  +} AxiDATA#(numeric type data_width);
   typedef struct {
       Bit#(id_width)            wid;
  -    Bit#(data_width)          wdata;
  -    Bit#(1)                   wlast;
  +    AxiDATA#(data_width)      wd;
       Bit#(TDiv#(data_width, 8))wstrb;
  -} AxiMOSI_write_data#(numeric type data_width);
  -    Bit#(1)                   wvalid;
  -    Bit#(1)                   bready;
  +} AxiWrite#(numeric type data_width, numeric type id_width);
   typedef struct {
       AxiRESP#(id_width)        r;
  -    Bit#(data_width)          rdata;
  -    Bit#(1)                   rlast;
  -} AxiMISO_read#(numeric type data_width, numeric type id_width);
  -    Bit#(1)                   arready;
  -    Bit#(1)                   awready;
  -    Bit#(1)                   wready;
  -typedef AxiRESP#(id_width) AxiMISO_b#(numeric type id_width);
  +    AxiDATA#(data_width)      rd;
  +} AxiRead#(numeric type data_width, numeric type id_width);
   
   interface AxiMasterCommon#(numeric type data_width, numeric type id_width);
       method Action             aclk(Bit#(1) v); // common
       method Bit#(1)            aresetn();      // common
  -    interface Put#(AxiMISO#(data_width, id_width)) req;
  -    interface Get#(AxiMOSI#(data_width, id_width)) resp;
  +
  +    method Bit#(1)            arvalid();
  +    interface Get#(AxiREQ#(id_width)) req_ar;
  +    method Action             arready(Bit#(1) v);
  +
  +    method Bit#(1)            awvalid();
  +    interface Get#(AxiREQ#(id_width)) req_aw;
  +    method Action             awready(Bit#(1) v);
  +
  +    method Action             rvalid(Bit#(1) v);
  +    interface Put#(AxiRead#(data_width, id_width)) resp_read;
  +    method Bit#(1)            rready();
  +
  +    method Bit#(1)            wvalid();
  +    interface Get#(AxiWrite#(data_width, id_width)) resp_write;
  +    method Action             wready(Bit#(1) v);
  +
  +    method Action             bvalid(Bit#(1) v);
  +    interface Put#(AxiRESP#(id_width)) resp_b;
  +    method Bit#(1)            bready();
   endinterface
   
   interface AxiSlaveCommon#(numeric type data_width, numeric type id_width);
       method Action             aclk(Bit#(1) v); // common
       method Bit#(1)            aresetn();      // common
  -    interface Put#(AxiMOSI#(data_width, id_width)) req;
  -    interface Get#(AxiMISO#(data_width, id_width)) resp;
  -    method Action             araddr(Bit#(32) v);
  +
  +    method Action             arvalid(Bit#(1) v);
  +    interface Put#(AxiREQ#(id_width)) req_ar;
       method Bit#(1)            arready();
  +
  +    method Action             awvalid(Bit#(1) v);
  +    interface Put#(AxiREQ#(id_width)) req_aw;
  +    method Bit#(1)            awready();
  +
  +    method Action             wvalid(Bit#(1) v);
  +    interface Put#(AxiWrite#(data_width, id_width)) resp_write;
  +    method Bit#(1)            wready();
  +
  +    method Bit#(1)            rvalid();
  +    interface Get#(AxiRead#(data_width, id_width)) resp_read;
  +    method Action             rready(Bit#(1) v);
  +
  +    method Bit#(1)            bvalid();
  +    interface Get#(AxiRESP#(id_width)) resp_b;
  +    method Action             bready(Bit#(1) v);
   endinterface
   
   interface AxiSlaveHighSpeed#(numeric type data_width, numeric type id_width);
  
positive.code:     //interface AxiSlaveHighSpeed s_axi_hp0;
      //interface AxiSlaveCommon axi;
      //endinterface
      //method S_AXI_HP0_RACOUNT racount();
      //method S_AXI_HP0_RCOUNT rcount();
      //method rdissuecap1_en(S_AXI_HP0_RDISSUECAP1_EN) enable((*inhigh*) en192);
      //method S_AXI_HP0_WACOUNT wacount();
      //method S_AXI_HP0_WCOUNT wcount();
      //method wrissuecap1_en(S_AXI_HP0_WRISSUECAP1_EN) enable((*inhigh*) en193);
      //endinterface
      //interface AxiSlaveHighSpeed s_axi_hp1;
      //endinterface
  
negative.code:     //interface AxiSlaveHighSpeed s_axi_hp3;
      //endinterface
      interface AxiMasterCommon   m_axi_gp0;
      endinterface
      //interface AxiMasterCommon   m_axi_gp1;
      //endinterface
  endmodule
  