run method

  1. @override
Future<void> run(
  1. Phase phase
)
override

Executes this Component's activities related to running the test.

Overrides of run must call super.run in an unawaited fashion. For example:

@override
Future<void> run(Phase phase) async {
  unawaited(super.run(phase));
  // New code goes here!
}

Implementation

@override
Future<void> run(Phase phase) async {
  unawaited(super.run(phase));

  Simulator.injectAction(() {
    ar.valid.put(0);
    ar.addr.put(0);
    ar.len?.put(0);
    ar.size?.put(0);
    ar.burst?.put(0);
    ar.qos?.put(0);
    ar.id?.put(0);
    ar.idUnq?.put(0);
    ar.prot?.put(0);
    ar.nse?.put(0);
    ar.priv?.put(0);
    ar.inst?.put(0);
    ar.pas?.put(0);
    ar.cache?.put(0);
    ar.region?.put(0);
    ar.mecId?.put(0);
    ar.trace?.put(0);
    ar.loop?.put(0);
    ar.mmuValid?.put(0);
    ar.mmuSecSid?.put(0);
    ar.mmuSid?.put(0);
    ar.mmuSsidV?.put(0);
    ar.mmuSsid?.put(0);
    ar.mmuAtSt?.put(0);
    ar.mmuFlow?.put(0);
    ar.mmuPasUnknown?.put(0);
    ar.mmuPm?.put(0);
    ar.nsaId?.put(0);
    ar.pbha?.put(0);
    ar.subSysId?.put(0);
    ar.actV?.put(0);
    ar.act?.put(0);
    ar.lock?.put(0);
    ar.atOp?.put(0);
    ar.mpam?.put(0);
    ar.tagOp?.put(0);
    ar.chunkEn?.put(0);
    ar.chunkV?.put(0);
    ar.chunkNum?.put(0);
    ar.chunkStrb?.put(0);
    ar.snoop?.put(0);
    ar.user?.put(0);
  });

  // wait for reset to complete before driving anything
  await sys.resetN.nextPosedge;

  while (!Simulator.simulationHasEnded) {
    if (pendingSeqItems.isNotEmpty) {
      await _drivePacket(pendingSeqItems.removeFirst());
    } else {
      await sys.clk.nextPosedge;
    }
  }
}