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(() {
    aw.valid.put(0);
    aw.addr.put(0);
    aw.len?.put(0);
    aw.size?.put(0);
    aw.burst?.put(0);
    aw.qos?.put(0);
    aw.id?.put(0);
    aw.idUnq?.put(0);
    aw.prot?.put(0);
    aw.nse?.put(0);
    aw.priv?.put(0);
    aw.inst?.put(0);
    aw.pas?.put(0);
    aw.cache?.put(0);
    aw.region?.put(0);
    aw.mecId?.put(0);
    aw.trace?.put(0);
    aw.loop?.put(0);
    aw.mmuValid?.put(0);
    aw.mmuSecSid?.put(0);
    aw.mmuSid?.put(0);
    aw.mmuSsidV?.put(0);
    aw.mmuSsid?.put(0);
    aw.mmuAtSt?.put(0);
    aw.mmuFlow?.put(0);
    aw.mmuPasUnknown?.put(0);
    aw.mmuPm?.put(0);
    aw.nsaId?.put(0);
    aw.pbha?.put(0);
    aw.subSysId?.put(0);
    aw.actV?.put(0);
    aw.act?.put(0);
    aw.lock?.put(0);
    aw.atOp?.put(0);
    aw.mpam?.put(0);
    aw.tagOp?.put(0);
    aw.snoop?.put(0);
    aw.user?.put(0);
    aw.domain?.put(0);
    aw.stashNid?.put(0);
    aw.stashNidEn?.put(0);
    aw.stashLPid?.put(0);
    aw.stashLPidEn?.put(0);
    aw.cmo?.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;
    }
  }
}