diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-04-27 12:07:53 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-07-13 09:26:23 +0000 |
commit | 102027ee2ed50dcadf93b31ef2e7e485b61cc504 (patch) | |
tree | a729fc29c3e642df1cc0849b24ecf5dc2d5bd4b3 /src/cpu/testers/traffic_gen/base.hh | |
parent | 0793a1bbdc190a7bd41b7ed81ef8291ceaeb722e (diff) | |
download | gem5-102027ee2ed50dcadf93b31ef2e7e485b61cc504.tar.xz |
cpu: Unify error handling for address generators
Unify error handling and create factory methods for address
generators.
Change-Id: Ic3ab705e1bb58affd498a7db176536ebc721b904
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11516
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/cpu/testers/traffic_gen/base.hh')
-rw-r--r-- | src/cpu/testers/traffic_gen/base.hh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/cpu/testers/traffic_gen/base.hh b/src/cpu/testers/traffic_gen/base.hh index a2cad8707..080bd7847 100644 --- a/src/cpu/testers/traffic_gen/base.hh +++ b/src/cpu/testers/traffic_gen/base.hh @@ -64,6 +64,8 @@ struct BaseTrafficGenParams; */ class BaseTrafficGen : public MemObject { + friend class BaseGen; + protected: // Params /** * The system used to determine which mode we are currently operating @@ -191,6 +193,47 @@ class BaseTrafficGen : public MemObject /** Register statistics */ void regStats() override; + public: // Generator factory methods + std::shared_ptr<BaseGen> createIdle(Tick duration); + std::shared_ptr<BaseGen> createExit(Tick duration); + + std::shared_ptr<BaseGen> createLinear( + Tick duration, + Addr start_addr, Addr end_addr, Addr blocksize, + Tick min_period, Tick max_period, + uint8_t read_percent, Addr data_limit); + + std::shared_ptr<BaseGen> createRandom( + Tick duration, + Addr start_addr, Addr end_addr, Addr blocksize, + Tick min_period, Tick max_period, + uint8_t read_percent, Addr data_limit); + + std::shared_ptr<BaseGen> createDram( + Tick duration, + Addr start_addr, Addr end_addr, Addr blocksize, + Tick min_period, Tick max_period, + uint8_t read_percent, Addr data_limit, + unsigned int num_seq_pkts, unsigned int page_size, + unsigned int nbr_of_banks_DRAM, unsigned int nbr_of_banks_util, + unsigned int addr_mapping, + unsigned int nbr_of_ranks); + + std::shared_ptr<BaseGen> createDramRot( + Tick duration, + Addr start_addr, Addr end_addr, Addr blocksize, + Tick min_period, Tick max_period, + uint8_t read_percent, Addr data_limit, + unsigned int num_seq_pkts, unsigned int page_size, + unsigned int nbr_of_banks_DRAM, unsigned int nbr_of_banks_util, + unsigned int addr_mapping, + unsigned int nbr_of_ranks, + unsigned int max_seq_count_per_rank); + + std::shared_ptr<BaseGen> createTrace( + Tick duration, + const std::string& trace_file, Addr addr_offset); + protected: void start(); |