예제 #1
0
void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){
  if (rotate){
    fetchNextMode();
    I(next_mode != EmuInit);

    //If in live mode and warmup is to be forced
    if(BootLoader::genwarm > 0 && next_mode == EmuTiming) {
      BootLoader::genwarm--;
      setMode(EmuWarmup, fid);
      //setMode(EmuDetail, fid);
    } else if(BootLoader::live_warmup > 0 && next_mode == EmuTiming) {
      BootLoader::live_warmup--;
      //BootLoader::sample_count++;
      setMode(EmuDetail, fid);
      //setMode(EmuRabbit, fid);
    } else {
      setMode(next_mode, fid);
    }

    I(mode == next_mode);
    if (next_mode == EmuRabbit){
      setModeNativeRabbit();
    }
    setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]);
  }else{
    I(0);
  }
}
예제 #2
0
void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){

  if (rotate){

    fetchNextMode();
    I(next_mode != EmuInit);

    setMode(next_mode, fid);
    I(mode == next_mode);
    if (next_mode == EmuRabbit){
      setModeNativeRabbit();
    }
    setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]);
  }else{
    I(0);
  }
}
예제 #3
0
void SamplerPeriodic::syncTimeAndSamples(FlowID fid) {
  if( mode == EmuDetail && lastMode == EmuTiming) {
    lastMode = mode;
    syncTimeAndFinishWaitingForOthers(fid);
    return;
  }

  lastMode = mode;
  syncTimeAndContinue(fid);
  if (next_mode == EmuRabbit){
    setModeNativeRabbit();
  }
  if( mode == next2EmuTiming ){
    clearInTiming(fid);
    updatenSamples(); 
  }

}
예제 #4
0
void SamplerPeriodic::syncTimeAndTimingModes(FlowID fid) {

  if(mode == EmuTiming /*&& next_mode != EmuTiming*/) {
    clearInTiming(fid);
    lastMode = mode;
    syncTimeAndWaitForOthers(fid);
    return;
  }

  I(mode != EmuTiming || next_mode == EmuTiming);

  if( mode == EmuDetail && lastMode == EmuTiming){
    syncTimeAndWaitForOthers(fid);
  }else{
    lastMode = mode;
    syncTimeAndContinue(fid);

    if (next_mode == EmuRabbit){
      setModeNativeRabbit();
    }

    I(!(doPower && fid == winnerFid && lastMode == EmuTiming));
  }
}