This directory contains a systemc implementation of the OCP-IP behavioral
models for the TL2 channel.

They are implemented under MasterTL2.{h,cpp} and SlaveTL2.{h,cpp} and their
characteristics are documented in the OCP2.0 Behavioral Models Specification
document available on ocpip.org in the members section under Specifications.

In this SystemC implementation, the parameters are fixed by end of
elaboration. The MasterTL2 and SlaveTL2 classes each contain a struct for
theis parameters under the m_config data member.

In addition to the MasterTL2's ability to parse and play STL streams, the
implementation provides a direct interface. At construction time, an optional
number can be given to the MasterTL2 to specify the number of test streams
that will be used. Each test stream will produce a sc_fifo_in port templated
with the TL2 request data type in use. These ports can be accessed and bound
with the MasterTL2::getTestStreamPort() method. This method must be called
exactly N times, where N is the number of test streams requested at
contruction time, and yields a pointer to a fifo that must be bound to a fifo
channel or export. The MasterTL2's role is then to arbitrate all the data
streams it operates (test streams via a fifo port, and stl streams) and
legalize traffic according to the configuration parameters.

The implementation uses headers from the boost libraries. When you compile
the models make sure the include path contains a path to the boost headers.

Because the models are templated based on an OCP data and address type, the
present directory does not offer a make facility to build these models into
a library. Instead the source and header files get installed under:
examples/supplementary/ocp_tl2_beh. An example of use is shown under tl2_perf
directory and installed into examples/ocp_tl2_stl. In this example the 
MasterTL2.cpp and SlaveTL2.cpp are simply included into the source code that
instantiates them with particular data types.

Usage examples with the MasterTL2 and SlaveTL2 classes were built and tested
successfully with the following library and tool versions:

-Boost: 1.30.2 and 1.33.1
-SystemC 2.1v1
-gcc: 3.2.3, 3.3.5, 3.4.4
-Summit Vista 1.2

NOTE: The behavioral models make use of the before_end_of_elaboration callback
      which is only present in SystemC 2.1 and above. So there is no non-intrusive
      way of making this example work with SystemC 2.0.1.