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
INTRODUCTIONPtolemy 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, routi...