# This format supports comments using the '#' symbol as the leading
# character of the line
#
# The file format contains [STATE]+ [INIT] [TRANSITION]+ in any order,
# where the states are the nodes in the graph, init describes what
# state to start in, and transition describes the edges of the graph.
#
# STATE <id> <duration (ticks)> <type>
#
# State IDLE idles
#
# States LINEAR and RANDOM have additional <percent reads> <start addr>
# <end addr> <access size (bytes)> <min period (ticks)> <max period (ticks)>
# <data limit (bytes)>
#
# State TRACE plays back a pre-recorded trace once
#
# Addresses are expressed as decimal numbers. The period in the linear
# and random state is from a uniform random distribution over the
# interval. If a specific value is desired, then the min and max can
# be set to the same value.
STATE 0 1000000 TRACE tgen-simple-mem.trc 100
STATE 1 100000000 RANDOM 0 0 134217728 64 30000 30000 0
STATE 2 1000000000 IDLE
STATE 3 100000000 LINEAR 0 0 134217728 64 30000 30000 0
STATE 4 1000000 IDLE
INIT 0
TRANSITION 0 1 1
TRANSITION 1 2 1
TRANSITION 2 3 0.5
TRANSITION 2 4 0.5
TRANSITION 3 2 1
TRANSITION 4 4 1
