----
Introduction

Please see ``TGFF: Task Graphs for Free'' by Robert Dick
and David Rhodes in the 1998 Proceedings of the International
Workshop Hardware/Software Codesign for more information.

There is a link to the TGFF web page at
http://ziyang.eecs.northwestern.edu/~dickrp/tools.html

----
Building and installing

TGFF builds with GNU make and a recent version of GCC's C++
compiler.  We use version 4.2.1.  Other makes and C++
compilers may also work.  If you want to install TGFF in a
shared directory, just copy the tgff file there and set the
file permissions appropriately.

----
Getting Started

Please see the enclosed example parameter files (.tgffopt suffix).
When the tgff command is run without any arguments, it prints
out information about the format of its parameters.  When
run with an argument, X, it reads X.tgffopt and produces
X.tgff and X.eps.


----
Release Notes

TGFF has evolved since its beta release.  When possible, we have kept
compatability with previous versions when adding new features.
However, this hasn't always been possible.  Bugfixes have sometimes
resulted in a change in TGFF output, given the same input as a
previous version.  In order to make it easy for other researchers to
produce your example sets, it is best to include the version of TGFF
which you used, in addition to the TGFF parameters, when publishing an
academic paper.  A brief description of changes to TGFF follows.

----
Release 3.5

Minor updates to make building with gcc 4.3 easier.
Pavel Ghosh has donated a tgff2dot.pl perl script to convert from .tgff format
to .dot graph format for plotting with graphviz.

----
Release 3.4

This is an update to permit building with a recent gcc, e.g., version 4.2.1.

----
Release 3.0

New features:

Perhaps the biggest change in v3.0 is that the documentation and examples have
been significantly improved. The examples have numerous comments explaining
what several commands do. There is also documentation of all the features
supported by v3.0.

A new graph generation algorithm that is highly configurable. It can generate
series-parallel graphs (groups of strings of nodes) as well as randomly
connected graphs.

VCG output is supported. 

Multiple start nodes are supported. 

Graphs can be labeled as periodic, aperiod, or a mix of the two. 

Relative periods of graphs generated can be specified as decimals instead of
integers.

Changes to default behavior:

The old algorithm should generate graphs that are slightly less connected. A
bug in the previous version often resulted in maximal connectivity between a
set of nodes.

----
Release 2.0

--
New features: 

When TGFF combines multiple uniform random variables (URV) in order to
produce table entries, the result is filtered to ensure that it is a
URV, as well.  See flat_merge() in DBase.cc.

Now supports hard and soft task deadlines.

--
Changes to default behavior:

Defaults to filtering merged URVs in order to make the merged variable
a URV as well.  You can get the pre-1.3 behavior, a simple weighted
summation which results in a decreased variance, by putting
'urv_merge false' in the options file.

The default task graph period was awfully high.  It has been reduced.
You can get the pre-1.3 behavior by putting '***' in the options file.

--
Critical loss of backward comparability:

There was a bug which caused the periods of individual task graphs to
increase as the number of task graphs increased.  This bug has been
fixed.  Unfortunately, TGFF outputs will be different than they were
in pre-1.3 TGFF versions.