diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-04-26 18:16:53 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-07-13 09:26:23 +0000 |
commit | 0793a1bbdc190a7bd41b7ed81ef8291ceaeb722e (patch) | |
tree | d86192c9d5d2dfecdee71bd731a92d09494f04b5 /src/cpu/testers/traffic_gen/TrafficGen.py | |
parent | c9dd86a5cd6f26a2ba776d0adb60d4e18c553b8b (diff) | |
download | gem5-0793a1bbdc190a7bd41b7ed81ef8291ceaeb722e.tar.xz |
cpu: Split the traffic generator into two classes
The traffic generator currently assumes that it is always driven from
a configuration file. Split it into a base class (BaseTrafficGen) that
handles basic packet generation and a derived class that implements
the config handling (TrafficGen).
Change-Id: I9407f04c40ad7e40a263c8d1ef29d37ff8e6f1b4
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11515
Diffstat (limited to 'src/cpu/testers/traffic_gen/TrafficGen.py')
-rw-r--r-- | src/cpu/testers/traffic_gen/TrafficGen.py | 51 |
1 files changed, 11 insertions, 40 deletions
diff --git a/src/cpu/testers/traffic_gen/TrafficGen.py b/src/cpu/testers/traffic_gen/TrafficGen.py index 1a6a6359c..f1e094821 100644 --- a/src/cpu/testers/traffic_gen/TrafficGen.py +++ b/src/cpu/testers/traffic_gen/TrafficGen.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012, 2016 ARM Limited +# Copyright (c) 2012, 2016, 2018 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -38,48 +38,19 @@ # Sascha Bischoff from m5.params import * -from m5.proxy import * -from MemObject import MemObject +from BaseTrafficGen import * -# The traffic generator is a master module that generates stimuli for -# the memory system, based on a collection of simple behaviours that -# are either probabilistic or based on traces. It can be used stand -# alone for creating test cases for interconnect and memory -# controllers, or function as a black-box replacement for system -# components that are not yet modelled in detail, e.g. a video engine -# or baseband subsystem in an SoC. -# -# The traffic generator has a single master port that is used to send -# requests, independent of the specific behaviour. The behaviour of -# the traffic generator is specified in a configuration file, and this -# file describes a state transition graph where each state is a -# specific generator behaviour. Examples include idling, generating -# linear address sequences, random sequences and replay of captured -# traces. By describing these behaviours as states, it is straight -# forward to create very complex behaviours, simply by arranging them -# in graphs. The graph transitions can also be annotated with -# probabilities, effectively making it a Markov Chain. -class TrafficGen(MemObject): +# The behaviour of this traffic generator is specified in a +# configuration file, and this file describes a state transition graph +# where each state is a specific generator behaviour. Examples include +# idling, generating linear address sequences, random sequences and +# replay of captured traces. By describing these behaviours as states, +# it is straight forward to create very complex behaviours, simply by +# arranging them in graphs. The graph transitions can also be +# annotated with probabilities, effectively making it a Markov Chain. +class TrafficGen(BaseTrafficGen): type = 'TrafficGen' cxx_header = "cpu/testers/traffic_gen/traffic_gen.hh" - # Port used for sending requests and receiving responses - port = MasterPort("Master port") - # Config file to parse for the state descriptions config_file = Param.String("Configuration file describing the behaviour") - - # System used to determine the mode of the memory system - system = Param.System(Parent.any, "System this generator is part of") - - # Should requests respond to back-pressure or not, if true, the - # rate of the traffic generator will be slowed down if requests - # are not immediately accepted - elastic_req = Param.Bool(False, - "Slow down requests in case of backpressure") - - # Let the user know if we have waited for a retry and not made any - # progress for a long period of time. The default value is - # somewhat arbitrary and may well have to be tuned. - progress_check = Param.Latency('1ms', "Time before exiting " \ - "due to lack of progress") |