diff options
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") |