summaryrefslogtreecommitdiff
path: root/src/cpu/testers/traffic_gen/base.hh
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2018-04-27 12:07:53 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2018-07-13 09:26:23 +0000
commit102027ee2ed50dcadf93b31ef2e7e485b61cc504 (patch)
treea729fc29c3e642df1cc0849b24ecf5dc2d5bd4b3 /src/cpu/testers/traffic_gen/base.hh
parent0793a1bbdc190a7bd41b7ed81ef8291ceaeb722e (diff)
downloadgem5-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.hh43
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();