.\" @(#)introduction	1.2	11/23/92
.\" Be sure you have properly checked
.\" out this file with SCCS (the version number should not be a number below):
.H1 Introduction
.pp
\*(PT is a very flexible foundation upon which to build
simulation environments, where a key objective is the ability
to combine these environments into multi-paradigm simulations
as necessary.
To effectively use existing simulation and synthesis tools and methodologies,
different models of computation must be used for different
parts of the overall design.
Large systems often mix
hardware, software, and communication subsystems.
They may also combine hardware targets,
including custom logic, processors with varying degrees
of programmability, systolic arrays, and other multiprocessor subsystems.
Tools supporting each of these components are different,
using for instance dataflow principles, regular iterative algorithms,
communicating sequential processes, control/dataflow hybrids,
functional languages, and discrete-event system theory and simulation.
.pp
\*(PT is a third-generation software environment that supports
heterogeneous system specification, simulation, and design.
It is an object-oriented framework within which diverse models
of computation can co-exist and interact.
In addition to the usual use of hierarchy to manage complexity,
\*(PT uses hierarchy to mix heterogeneous models of computation.
The result is a unified software environment that extends the
philosophy of mixed-mode circuit simulation up to the design
and simulation of complex systems.
.pp
This work is an outgrowth of
two previous generations of design environments,
Blosim [Mes84a,b] and Gabriel [Bie90][Lee89b], that were
aimed at digital signal processing applications.
.IE Blosim
.IE Gabriel
Both environments used a block-diagram data-flow paradigm for the
description of the algorithms.
To broaden the applicability beyond DSP,
we see the need for other computational models,
such as discrete-event scheduling, mixed compile-time and run-time
scheduling, or computational models based
on shared data structures.
These are not supported very gracefully by Blosim or Gabriel.
Most importantly, we see the need for a flexible simulation
environment which is extensible to new computational models
without re-implementation of the system.
.pp
\*(PT uses an object-oriented programming methodology to support
heterogeneity, and is programmed in C++.
Data abstraction and polymorphism, two tenets
of object-oriented programming,
allow models of computation to be abstracted so that their differences
are not visible from other domains.
Our goal is to make the system non-dogmatic, in the sense that the
environment itself does not impose any particular computational
model, and it is extensible to new models by simply adding to the
system and not modifying what is already there.
The overall software architecture is described in [Buc92b].
Further goals are to incorporate features
that have been successful in Blosim or Gabriel,
such as achieving modularity and reusability of
user-programmed software modules, friendly graphical window
interfaces, and code generation for targeting
concurrent architectures rather than just simulation.
.pp
Each model of computation in \*(PT is called a
.c Domain.
.IE domain
The system currently has a synchronous
data-flow (SDF) domain [Bha92] [Buc91] [Lee87a] [Lee87b] [Lee91b]
(like Gabriel), a dynamic dataflow (DDF) domain [Ha91] [Ha92]
(like Blosim), a discrete-event (DE) domain, a Thor domain [Tho86] (for circuit
simulation) and various code generation domains using dataflow
semantics [Pin92].
We are working on several more domains that have not reached sufficient
maturity to be included in this release [Buc92a] [Lee91a] [Lee92a] [Lee93].
The system is, however, already capable of simulating
combinations of signal processing and communication networks
(such as in packet speech and packet video) and combinations
of behavioral and hardware simulation [Kal91] [Kal92],
and is capable of synthesizing
real-time implementations in assembly code for Motorola DSPs,
as well as accelerated simulation code in C [Pin92].
.pp
The graphical interface (pigi) is based on
VEM [Har86], a graphical editor for the
OCT design database [Har86], both developed in the CAD group at Berkeley.
.pp
A word about notation:
In this and other \*(PT documentation, keywords from C++,
or an abstract data type defined as a
.c class
in C++, or fragments of C++ code, are printed in the special font
just used for "class".  However, since the documentation is written
by many people, we cannot promise perfect consistency.
