LtiLaChannelInterface constructor

LtiLaChannelInterface({
  1. required LtiLaChannelConfig config,
  2. int vcCount = 1,
  3. bool debugMixInEnable = false,
  4. bool idMixInEnable = false,
  5. bool userMixInEnable = false,
  6. bool mmuMixInEnable = false,
})

Constructor.

Implementation

LtiLaChannelInterface({
  required LtiLaChannelConfig config,
  super.vcCount = 1,
  this.debugMixInEnable = false,
  this.idMixInEnable = false,
  this.userMixInEnable = false,
  this.mmuMixInEnable = false,
})  : userWidth = config.userWidth,
      idWidth = config.idWidth,
      useIdUnq = false,
      addrWidth = config.addrWidth,
      protWidth = 0,
      rmeSupport = config.rmeSupport,
      instPrivPresent = config.instPrivPresent,
      pasWidth = config.pasWidth,
      loopWidth = config.loopWidth,
      tracePresent = false,
      secSidWidth = config.secSidWidth,
      sidWidth = config.sidWidth,
      ssidWidth = config.ssidWidth,
      useFlow = config.useFlow,
      supportGdi = config.supportGdi,
      supportRmeAndPasMmu = config.supportRmeAndPasMmu,
      ogWidth = config.ogWidth,
      tlBlockWidth = config.tlBlockWidth,
      useIdent = config.useIdent,
      untranslatedTransVersion =
          4, // must have ability to support PM/PASUNKNOWN
      super(
        prefix: 'LA',
        main: true,
      ) {
  setPorts([
    Logic.port('${prefix}ADDR', addrWidth),
    Logic.port('${prefix}TRANS', 4),
    Logic.port('${prefix}ATTR', 4),
    if (tlBlockWidth > 0) Logic.port('${prefix}TLBLOCK', tlBlockWidth),
    Logic.port('${prefix}OGV'),
    if (ogWidth > 0) Logic.port('${prefix}OG', ogWidth),
    if (useIdent) Logic.port('${prefix}IDENT'),
  ], [
    PairDirection.fromProvider,
  ]);
  makeProtPorts();
  if (userMixInEnable) {
    makeUserPorts();
  }
  if (idMixInEnable) {
    makeIdPorts();
  }
  if (debugMixInEnable) {
    makeDebugPorts();
  }
  if (mmuMixInEnable) {
    makeMmuPorts();
  }
}