# 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:
# STATE = [LINEAR, RANDOM]
# <id>
# <duration (ticks)>
# <type>
# <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, both in the
# configuration and the trace file. 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 100 IDLE
STATE 1 10000000 LINEAR 100 2147483648 2181038080 64 30000 30000 0
INIT 0
TRANSITION 0 1 1
TRANSITION 1 0 1
