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 9 * licensed here under. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 28 unchanged lines hidden (view full) --- 39 * Sascha Bischoff 40 * Neha Agarwal 41 */ 42 43#include "cpu/testers/traffic_gen/base_gen.hh" 44 45#include <algorithm> 46 |
47#include "base/logging.hh" |
48#include "base/random.hh" 49#include "base/trace.hh" |
50#include "cpu/testers/traffic_gen/base.hh" |
51#include "debug/TrafficGen.hh" |
52#include "sim/system.hh" |
53 |
54BaseGen::BaseGen(BaseTrafficGen &gen, Tick _duration) 55 : _name(gen.name()), masterID(gen.masterID), 56 cacheLineSize(gen.system->cacheLineSize()), 57 duration(_duration) |
58{ 59} 60 61PacketPtr 62BaseGen::getPacket(Addr addr, unsigned size, const MemCmd& cmd, 63 Request::FlagsType flags) 64{ 65 // Create new request --- 9 unchanged lines hidden (view full) --- 75 pkt->dataDynamic(pkt_data); 76 77 if (cmd.isWrite()) { 78 std::fill_n(pkt_data, req->getSize(), (uint8_t)masterID); 79 } 80 81 return pkt; 82} |
83 84StochasticGen::StochasticGen(BaseTrafficGen &gen, 85 Tick _duration, 86 Addr start_addr, Addr end_addr, Addr _blocksize, 87 Tick min_period, Tick max_period, 88 uint8_t read_percent, Addr data_limit) 89 : BaseGen(gen, _duration), 90 startAddr(start_addr), endAddr(end_addr), 91 blocksize(_blocksize), minPeriod(min_period), 92 maxPeriod(max_period), readPercent(read_percent), 93 dataLimit(data_limit) 94{ 95 if (blocksize > cacheLineSize) 96 fatal("TrafficGen %s block size (%d) is larger than " 97 "cache line size (%d)\n", name(), 98 blocksize, cacheLineSize); 99 100 if (read_percent > 100) 101 fatal("%s cannot have more than 100% reads", name()); 102 103 if (min_period > max_period) 104 fatal("%s cannot have min_period > max_period", name()); 105} |