Axi4ReadInterface constructor

Axi4ReadInterface({
  1. int idWidth = 4,
  2. int addrWidth = 32,
  3. int lenWidth = 8,
  4. int dataWidth = 64,
  5. int aruserWidth = 32,
  6. int ruserWidth = 32,
  7. bool useLock = true,
  8. bool useLast = true,
})

Construct a new instance of an AXI4 interface.

Default values in constructor are from official spec.

Implementation

Axi4ReadInterface({
  this.idWidth = 4,
  this.addrWidth = 32,
  this.lenWidth = 8,
  this.dataWidth = 64,
  this.aruserWidth = 32,
  this.ruserWidth = 32,
  this.useLock = true,
  this.useLast = true,
}) {
  _validateParameters();

  setPorts([
    if (idWidth > 0) Logic.port('ARID', idWidth),
    Logic.port('ARADDR', addrWidth),
    if (lenWidth > 0) Logic.port('ARLEN', lenWidth),
    if (sizeWidth > 0) Logic.port('ARSIZE', sizeWidth),
    if (burstWidth > 0) Logic.port('ARBURST', burstWidth),
    if (useLock) Logic.port('ARLOCK'),
    if (cacheWidth > 0) Logic.port('ARCACHE', cacheWidth),
    Logic.port('ARPROT', protWidth),
    if (qosWidth > 0) Logic.port('ARQOS', qosWidth),
    if (regionWidth > 0) Logic.port('ARREGION', regionWidth),
    if (aruserWidth > 0) Logic.port('ARUSER', aruserWidth),
    Logic.port('ARVALID'),
    Logic.port('RREADY'),
  ], [
    Axi4Direction.fromMain,
  ]);

  setPorts([
    if (idWidth > 0) Logic.port('RID', idWidth),
    Logic.port('RDATA', dataWidth),
    if (rrespWidth > 0) Logic.port('RRESP', rrespWidth),
    if (useLast) Logic.port('RLAST'),
    if (ruserWidth > 0) Logic.port('RUSER', ruserWidth),
    Logic.port('RVALID'),
    Logic.port('ARREADY'),
  ], [
    Axi4Direction.fromSubordinate,
  ]);
}