1/* 2 * Copyright (c) 2012-2013, 2016-2018 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 155 unchanged lines hidden (view full) --- 164 transition(); 165 } else { 166 assert(curTick() >= nextPacketTick); 167 // get the next packet and try to send it 168 PacketPtr pkt = activeGenerator->getNextPacket(); 169 170 // suppress packets that are not destined for a memory, such as 171 // device accesses that could be part of a trace |
172 if (pkt && system->isMemAddr(pkt->getAddr())) { |
173 numPackets++; 174 if (!port.sendTimingReq(pkt)) { 175 retryPkt = pkt; 176 retryPktTick = curTick(); 177 } |
178 } else if (pkt) { |
179 DPRINTF(TrafficGen, "Suppressed packet %s 0x%x\n", 180 pkt->cmdString(), pkt->getAddr()); 181 182 ++numSuppressed; 183 if (numSuppressed % 10000) 184 warn("%s suppressed %d packets with non-memory addresses\n", 185 name(), numSuppressed); 186 --- 37 unchanged lines hidden (view full) --- 224 nextTransitionTick = MaxTick; 225 assert(!updateEvent.scheduled()); 226 } 227} 228 229void 230BaseTrafficGen::scheduleUpdate() 231{ |
232 // Has the generator run out of work? In that case, force a 233 // transition if a transition period hasn't been configured. 234 while (activeGenerator && 235 nextPacketTick == MaxTick && nextTransitionTick == MaxTick) { 236 transition(); 237 } 238 239 if (!activeGenerator) 240 return; 241 |
242 // schedule next update event based on either the next execute 243 // tick or the next transition, which ever comes first 244 const Tick nextEventTick = std::min(nextPacketTick, nextTransitionTick); |
245 246 DPRINTF(TrafficGen, "Next event scheduled at %lld\n", nextEventTick); 247 248 // The next transition tick may be in the past if there was a 249 // retry, so ensure that we don't schedule anything in the past. 250 schedule(updateEvent, std::max(curTick(), nextEventTick)); 251} 252 --- 173 unchanged lines hidden --- |