base_gen.cc (12804:f47e75dce5c6) base_gen.cc (12811:269967d5b4e4)
1/*
1/*
2 * Copyright (c) 2012-2013, 2016-2017 ARM Limited
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
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"
47#include "base/random.hh"
48#include "base/trace.hh"
48#include "base/random.hh"
49#include "base/trace.hh"
50#include "cpu/testers/traffic_gen/base.hh"
49#include "debug/TrafficGen.hh"
51#include "debug/TrafficGen.hh"
52#include "sim/system.hh"
50
53
51BaseGen::BaseGen(const std::string& _name, MasterID master_id, Tick _duration)
52 : _name(_name), masterID(master_id), duration(_duration)
54BaseGen::BaseGen(BaseTrafficGen &gen, Tick _duration)
55 : _name(gen.name()), masterID(gen.masterID),
56 cacheLineSize(gen.system->cacheLineSize()),
57 duration(_duration)
53{
54}
55
56PacketPtr
57BaseGen::getPacket(Addr addr, unsigned size, const MemCmd& cmd,
58 Request::FlagsType flags)
59{
60 // Create new request

--- 9 unchanged lines hidden (view full) ---

70 pkt->dataDynamic(pkt_data);
71
72 if (cmd.isWrite()) {
73 std::fill_n(pkt_data, req->getSize(), (uint8_t)masterID);
74 }
75
76 return pkt;
77}
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}