Ptolemy is an environment for simulation and prototyping of heterogeneous systems. It uses modern object-oriented software technology (C++) to model each subsystem in a natural and efficient manner, and to integrate these subsystems into a whole. Ptolemy encompasses practically all aspects of designing signal processing and communications systems, ranging from algorithms and communication strategies, simulation, hardware and software design, parallel computing, and generating real-time prototypes. To accommodate this breadth, Ptolemy must support a plethora of widely-differing design styles. The core of Ptolemy is a set of object-oriented class definitions that makes few assumptions about the system to be modeled; rather, standard interfaces are provided for generic objects and more specialized, application-specific objects are derived from these. A basic abstraction in Ptolemy is the Domain, which realizes a computational model appropriate for a particular type of subsystem. Current examples of domains include synchronous and dynamic dataflow, discrete-event, and others appropriate for control software and embedded microcontrollers. Domains can be mixed as appropriate to realize an overall system simulation. Some current applications of Ptolemy include networking and transport, call-processing and signaling software, embedded microcontrollers, signal processing (including implementation in realtime real-time), scheduling of parallel digital signal processors, board-level hardware timing simulation, and combinations of these. Key words: Heterogeneity, mixed-mode, simulation, prototyping, object-oriented programming  Ptolemy is a simulation and rapid prototyping framework for heterogeneous systems. It is ideal for applications in which heterogeneity is a key characteristic. such as: • Design of multimedia networks; • Real-time embedded software; • Hardware/Software codesign; • Control and call-processing in telecommunications networks; • Rapid prototyping of new telecommunications services; • Mixed-mode hardware simulation; • Mapping applications onto heterogeneous multiprocessor systems; and • Mixed signal processing and real-time control. For example, in the design of multimedia networks, we are interested in studying the interaction between transport, compression or compositing signal processing, and control software in voice or video services over cell-relay networks. In telecommunication systems we are interested in studying the interaction between call-processing software and hardware switch elements. To develop new telecommunication services, we must jointly design control software, signal processing, transport, and hardware elements. In hardware design we are interested in modeling components with varying detail, such as behavioral, logic, timing, and circuit. In system-level design, we may wish to jointly design the communications infrastructure and the processing elements. We may also wish to synthesize (in combination) microcode for specialized processors, C code for generic processors, routing tables for field-programmable gate arrays, and custom VLSI. We may wish to automate mappings onto parallel processors by mixing specialized schedulers, such as those that target systolic arrays Analysis of systems using such general descriptions is difficult, and efficient compilers are difficult to implement. In the case of VHDL, for example, all effective VLSI synthesis tools restrict their domain to a subset of the language. Unfortunately, each tool chooses a different subset, nullifying the benefits of a standardized language. Similarly, effective parallel schedulers restrict their domain to special cases of Petri nets. Furthermore, the complexity and diversity in systemlevel design is only going to increase. Although any Turing-equivalent model can, in principle, handle any computational design, clearly there are benefits from specializing the specification language. We believe we cannot anticipate all the languages and models of computation that will prove effective. Our approach, therefore, is to embrace heterogeneity by allowing the user to mix different subsystem modeling descriptions, without restricting those descriptions. The key innovation in Ptolemy is a non-dogmatic kernel that does not presuppose a dataflow or functional model, finite-state machines, statecharts, communicating sequential processes, or Petri nets. Rather, Ptolemy can accommodate all of these. Most importantly, the objective is to combine descriptions so that complex systems can be designed heterogeneously. Ptolemy can be viewed as a coordination language, but since it is not a language in any conventional sense, we prefer to describe it as a coordination framework. Of course, our limited resources have made it impossible to explore combinations of all the models of computation described above. Hence, we cannot yet claim to have fully proven our concept. Furthermore, our experience indicates that combining highly dissimilar models of computation is not trivial. Our hope is that by providing an open architecture with well-defined interfaces, a community of users with very different design approaches can test our ideas. A typical large system is structured as shown in Figure 1 . It consists of heterogenous subsystems (some implemented in hardware, some in software) together with a software control subsystem and a communications infrastructure. Ptolemy models such systems well. Consider for example a portion of a multimedia connection through a broadband packet network as shown in Figure 2 . In this heterogenous system, the video compression (signal processing), transport (networking) and control (software) subsystems are most conveniently modeled in much different ways, and yet there is a desire to study the interaction of these subsystems. Another example that requires similar heterogeneity is shown in Figure 3 . A computing resource (perhaps a futuristic workstation) consists of a familiar UNIX 1 processor, a separate processor running a specialized real-time operating system, a third processor for hard-real-time signal processing (running no operating system), and programmable hardware for truly intensive tasks (such as protocol implementations and I/O interfaces to custom devices). A unified environment for programming such a 1. UNIX is a trademark of AT&T. heterogeneous combination of computing resources must support the different design styles that would be used for each resource. Ptolemy uses object-oriented software principles to achieve the following goals: • Agility: Support distinct computational models, so that each subsystem can be simulated and prototyped in a manner that is appropriate and natural to that subsystem. • Heterogeneity: Allow distinct computational models to coexist seamlessly for the purpose of studying interactions among subsystems.
Ptolemy REF is a rich platform with simulation and analysis tools for the design of embedded streaming systems: it provides the synchronous data-flow (SDF) model of computation.
Ptolemy : A Framework for Simulating and Prototyping Heterogeneous Systems
ICPP (2)
Computer Science