diff options
author | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2018-07-18 14:28:21 +0100 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2018-07-25 16:47:15 +0000 |
commit | a327a6763a356dc386c0f273fe091784a20b495a (patch) | |
tree | ac7f4ef68fee25df16f5019f84f43d843f4105a6 /src/cpu/testers/traffic_gen/base.cc | |
parent | 2fe3d660260e7b546b5860ac4459014ed9bee907 (diff) | |
download | gem5-a327a6763a356dc386c0f273fe091784a20b495a.tar.xz |
cpu: Allow creation of traffic gen from generic SimObjects
This patch allows to instantiate a Traffic generator starting from a
generic SimObject, so that linking to a BaseTrafficGen only is no longer
mandatory. This permits SimObjects different than a BaseTrafficGen to
instantiate generators and to manually specify the MasterID they
will be using when generating memory requests.
Change-Id: Ic286cfa49fd9c9707e6f12a4ea19993dd3006b2b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11789
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/cpu/testers/traffic_gen/base.cc')
-rw-r--r-- | src/cpu/testers/traffic_gen/base.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/cpu/testers/traffic_gen/base.cc b/src/cpu/testers/traffic_gen/base.cc index fe2577835..9ca084d17 100644 --- a/src/cpu/testers/traffic_gen/base.cc +++ b/src/cpu/testers/traffic_gen/base.cc @@ -320,13 +320,13 @@ BaseTrafficGen::regStats() std::shared_ptr<BaseGen> BaseTrafficGen::createIdle(Tick duration) { - return std::shared_ptr<BaseGen>(new IdleGen(*this, duration)); + return std::shared_ptr<BaseGen>(new IdleGen(*this, masterID, duration)); } std::shared_ptr<BaseGen> BaseTrafficGen::createExit(Tick duration) { - return std::shared_ptr<BaseGen>(new ExitGen(*this, duration)); + return std::shared_ptr<BaseGen>(new ExitGen(*this, masterID, duration)); } std::shared_ptr<BaseGen> @@ -335,9 +335,10 @@ BaseTrafficGen::createLinear(Tick duration, Tick min_period, Tick max_period, uint8_t read_percent, Addr data_limit) { - return std::shared_ptr<BaseGen>(new LinearGen(*this, + return std::shared_ptr<BaseGen>(new LinearGen(*this, masterID, duration, start_addr, end_addr, blocksize, + system->cacheLineSize(), min_period, max_period, read_percent, data_limit)); } @@ -348,9 +349,10 @@ BaseTrafficGen::createRandom(Tick duration, Tick min_period, Tick max_period, uint8_t read_percent, Addr data_limit) { - return std::shared_ptr<BaseGen>(new RandomGen(*this, + return std::shared_ptr<BaseGen>(new RandomGen(*this, masterID, duration, start_addr, end_addr, blocksize, + system->cacheLineSize(), min_period, max_period, read_percent, data_limit)); } @@ -366,9 +368,10 @@ BaseTrafficGen::createDram(Tick duration, unsigned int addr_mapping, unsigned int nbr_of_ranks) { - return std::shared_ptr<BaseGen>(new DramGen(*this, + return std::shared_ptr<BaseGen>(new DramGen(*this, masterID, duration, start_addr, end_addr, blocksize, + system->cacheLineSize(), min_period, max_period, read_percent, data_limit, num_seq_pkts, page_size, @@ -391,9 +394,10 @@ BaseTrafficGen::createDramRot(Tick duration, unsigned int nbr_of_ranks, unsigned int max_seq_count_per_rank) { - return std::shared_ptr<BaseGen>(new DramRotGen(*this, + return std::shared_ptr<BaseGen>(new DramRotGen(*this, masterID, duration, start_addr, end_addr, blocksize, + system->cacheLineSize(), min_period, max_period, read_percent, data_limit, num_seq_pkts, page_size, @@ -410,7 +414,7 @@ BaseTrafficGen::createTrace(Tick duration, { #if HAVE_PROTOBUF return std::shared_ptr<BaseGen>( - new TraceGen(*this, duration, trace_file, addr_offset)); + new TraceGen(*this, masterID, duration, trace_file, addr_offset)); #else panic("Can't instantiate trace generation without Protobuf support!\n"); #endif |