Ptolemy II

Ptolemy II Planet

Ptolemy II is a software framework developed as part of the Ptolemy Project. It is a Java-based component assembly framework with a graphical user interface called Vergil. Vergil itself is a component assembly defined in Ptolemy II.

The Ptolemy project studies modeling, simulation, and design of concurrent, real-time, embedded systems. The focus is on assembly of concurrent components. The key underlying principle in the project is the use of well-defined models of computation that govern the interactions between components. A major problem area being addressed is the use of heterogeneous mixtures of models of computation.

The Ptolemy Project web page contains much more information about the project. The work is conducted in the Department of Electrical Engineering and Computer Sciences of the University of California at Berkeley. The project is directed by Prof. Edward Lee. The project is named after Claudius Ptolemaeus, the second century Greek astronomer, mathematician, and geographer.

Ptolemy II includes a growing suite of domains, each of which realizes a model of computation. It also includes a component library, in which most components are domain polymorphic, in that they can operate in several of the domains. Most are also data polymorphic, in that they operate on several data types. The domains that have been implemented are listed below. Domains that are reasonably mature:

  • CT: continuous-time modeling
  • DDF: dynamic dataflow
  • DE: discrete-event modeling
  • FSM: finite state machines and modal model
  • PN: process networks with asynchronous message passing
  • Rendezvous: process networks with synchronous message passing
  • SDF: synchronous dataflow
  • SR: synchronous reactive
  • Wireless: wireless
Domains that are still experimental:
  • CI: component interaction (push/pull)
  • Continuous: continuous-time modeling
  • DDE: distributed discrete events
  • DT: discrete time
  • Giotto: periodic time-driven
  • GR: 3-D graphics
  • HDF: heterochronous dataflow
  • PSDF: parameterized synchronous dataflow
  • TM: timed multitasking

Ptolemy II includes a number of support packages, such as raph, providing graph-theoretic manipulations, math, providing matrix and vector math and signal processing functions, plot, providing visual display of data, data, providing a type system, data encapsulation and an expression parser, etc.

The Ptolemy project has a long history of folding in software contributions from off site developers, see the Ptolemy II FAQ for details.

Recent Releases and News

Ptolemy II 7.0.1 was made available on April 4, 2008.
Ptolemy II 7.0.1 includes

  • Ptolemy II C Code Generation
    The Ptolemy C Code generator can generate code for SDF, FSM and HDF models. Arbitrary C code may be embedded in a Java actor. The entire model can then be converted to C code and the C code with the Java actor is used.
    Primary Codegen Developers: Gang Zhou, Man-kit Leung.
    Codegen Contributors: Christopher Brooks, Teale Fristoe, Edward A. Lee, Ye Zhou
  • Ptalon
    Primary Ptalon Developer: Adam Cataldo
    Contributor: Elaine Cheong
    Actor-oriented design is a common design strategy in embedded system design, where actors are concurrent components which communicate through ports by sending signals to one another. Such systems are frequently modeled with block diagrams, where the blocks represent systems and lines or arrows between blocks represent signals. Examples include Simulink, LabView, and VHDL/Verilog. A common problem in such environments is managing complexity, particularly when the designs become large. Most actor-oriented design environments allow hierarchy, or systems (blocks) which are composed of other systems (blocks). To take this a step further, we are developing the Ptalon programming language, which allows users to parameterize components with other components.
  • Backtracking
    Primary Backtracking Developer: Thomas Huining Feng
    A backtracking facility enables the system to restore its old state. It has many applications in practice, and is especially important to high-performance distributed computation.
  • Continuous domain:
    Primary Continuous Domain Developers: Haiyang Zheng, Edward A. Lee
    The Continuous Domain is a redesign of the Continuous Time (CT) domain with a rigorous semantics.
  • Ptolemy II 7.0.beta was made available on February 7, 2008

    Ptolemy II 6.0.2 was made available on February 4, 2007
    Ptolemy II 6.0 includes

  • Ptolemy II C Code Generation

    Primary Developers: Jackie Leung, Gang Zhou, Ye Zhou, Edward A. Lee, Christopher Brooks
    Ptolemy II can now generate C code for SDF, FSM and HDF models. This new code generator consists of actor templates (called helpers) that contain C code stubs that are stitched together. Only a subset of actors have helpers, so only a subset of models can be converted to C. Creating new helpers is fairly easy though. The code generator has been written to be easily extensible to languages other than C.

  • The Rendezvous domain:
    Primary Authors: Thomas Huining Feng, Edward A. Lee
    In the Rendezvous domain in Ptolemy II, each actor executes in its own thread of control, and communication between actors is by rendezvous. If an actor is ready to send a message, it blocks until the receiving actor is ready to receive it. Similarly if an actor is ready to receive a message, it blocks until the sending actor is ready to send it.

    This domain supports both conditional and multi-way rendezvous. In conditional rendezvous, an actor is willing to rendezvous with any one of several other actors. In multiway rendezvous, an actor requires rendezvous with multiple other actors at the same time. When using conditional rendezvous, the choice of which rendezvous occurs is nondeterministic, in general.

    The model of computation is based on the Communicating Sequential Processesmodel first proposed by Hoare in 1978. Rendezvous-based communication is also known as synchronous message passing, but we avoid this term to avoid confusion with the SR (synchronous/reactive) domain.

  • Viptos Visual editor, code generator, and simulator for TinyOS programs.
    Primary Author: Elaine Cheong
    Viptos is an interface between TinyOS and Ptolemy II that provides a graphical user interface for TinyOS developers. Users can create TinyOS programs as block diagrams and use Viptos to generate code for any TinyOS-supported target hardware. Users can also simulate heterogenous networks of TinyOS-based nodes within Viptos. Viptos includes a tool to make existing libraries of TinyOS/nesC components available as graphical blocks (nc2moml), and another tool to transform existing TinyOS/nesC applications into Viptos models (ncapp2moml).
    Note: Viptos is not available in the Windows installer, Viptos must be built from source. (Viptos Installation Notes)

  • Distributed SDF Domain using Jini
    Authors: Daniel Lazaro Cuadrado (Aalborg University).
    The Distributed-SDF domain is an extended version of the existing SDF Domain that performs the simulation in a distributed manner using Jini. The Ptolemy II 6.0.2 Release Notes include a list of new features and actors.
  • Ptolemy II 6.0.1 was made available on January 15, 2006.

    Ptolemy II 6.0.beta was made available on October 31, 2006.

    Viptos 1.0.beta was released on October 30, 2006. Viptos is an interface between TinyOS and Ptolemy II.
    TinyOS is an event-driven operating system designed for sensor network nodes that have very limited resources (e.g., 8K bytes of program memory, 512 bytes of RAM). TinyOS, is used, for example, on the Berkeley MICA motes, which are small wireless sensor nodes.
    The Viptos1.0.beta release is a source only release that works under Linux and Windows.

    Ptolemy II 6.0.alpha was made available on October 2, 2006.

    Viptos 5.1-alpha was released on November 1, 2005. Viptos is an interface between TinyOS and Ptolemy II.
    TinyOS is an event-driven operating system designed for sensor network nodes that have very limited resources (e.g., 8K bytes of program memory, 512 bytes of RAM). TinyOS, is used, for example, on the Berkeley MICA motes, which are small wireless sensor nodes.
    The Viptos5.1-alpha release is a source only release that works under Linux only. Under Windows, Viptos will not run TinyOS models, though the models are viewable.

    HyVisual 5.0.1 was released on October 7, 2005.
    This release fixes a few bugs in the 5.0 release and includes a standalone HyVisual-5.0.1 installer.

    Ptolemy II 5.0.1 was made available on October 5, 2005.
    This is a bug fix release only, no new features were added.
    See the Ptolemy II 5.0.1 page for details.

    Ptolemy II 5.0 was made available on July 21, 2005
    Ptolemy II 5.0 includes

  • A Dynamic Dataflow (DDF) domain, in which actors are fired in response to available input data.
  • Modeling of Hybrid systems. Hybrid systems are a special case of modal models where finite-state machines (FSMs) are combined with the continuous-time (CT) models to get mixed continuous-time and discrete-event models.
  • Stochastic hybrid systems, which add random behavior to continuous-time models mixed with discrete events.
  • Heterochronous Dataflow (HDF), which is an extension of synchronous dataflow (SDF) that permits dynamically changing production and consumption patterns without sacrificing static scheduling.
  • HyVisual 5.0-alpha was made available on March 4, 2005
    HyVisual is a Hybrid Systems Visual Modeler based on Ptolemy II.
    The semantics of the Discrete Event and Continuous Time domains have changed slightly between HyVisual-4.0.2 and HyVisual 5.0-alpha.
    The semantics of HyVisual are described in the following paper:

    Edward A. Lee and Haiyang Zheng, " Operational Semantics of Hybrid Systems," Invited paper in Proceedings of Hybrid Systems: Computation and Control (HSCC) LNCS 3414, Zurich, Switzerland, March 9-11, 2005.

    Ptolemy II 4.0.1 was made available on August 4, 2004
    Ptolemy II 4.0.1 includes

  • Modeling for wireless sensor networks
  • Hierarchical classes, subclasses and inner classes
  • Lifecycle management actors, which are actors that control the execution of associated models. This example uses one model to control repeated runs of another.
  • VisualSense 4.0.1 was made available on August 4, 2004
    VisualSense is a visual editor and simulator for wireless sensor network systems.

    Older Releases

    HyVisual 4.0.2 was made available on October 28, 2004.
    HyVisual is a Hybrid Systems Visual Modeler based on Ptolemy II.

    Ptolemy II 3.0.2 was made available on August 21, 2003.

    Ptolemy II 3.0 includes a HSIF to Ptolemy converter, the expression language has been reworked and the code generator updated. It also includes a set of mature and experimental domains, and a more comprehensive actor library than previous releases.

    HyVisual 2.2 was made available on January 28, 2003. HyVisual is a Hybrid Systems Visual Modeler based on Ptolemy II.

    Ptolemy II 2.0.1 was made available on August 7, 2002

    Other recent news about Ptolemy II can be found on the Projects page.

    Ptolemy II 2.0.1 was the first release that includes a limited prototype of our code generation facility that will generate class files for non-hierarchical SDF models. This release also includes support for modal models, a Timed Multitasking domain and a Synchronous reactive domain.

    The release is available in several formats, see the Ptolemy II 2.0.1 page.

    Ptolemy II 1.0.1 was made available on March 19, 2001.

    Ptolemy II 1.0.1 was the first major release to include Vergil, a graphical user interface supporting block diagram editing of Ptolemy II models. It also includes a set of mature and experimental domains, and a more comprehensive actor library than previous releases. Ptolemy II 1.0.1 supports an XML schema called MoML for specifying component-based models.

    The release consists of on-line demonstrations and downloads.

    Ptolemy II 0.4beta was made available on February 7, 2000. Ptolemy II 0.4beta was the second Ptolemy II release to include domains, actors, and applets of sufficient quality and architectural stability to use as models for development. The domain-polymorphic actor libraries, in the ptolemy.actor.lib and ptolemy.actor.gui packages are still small, but reasonably solid.

    Ptolemy II 0.4beta supports an XML language called MoML for specifying component-based models. Chapter 2 of the Ptolemy II Design Document describes how to use MoML to create models.

    The release consists of on-line demonstrations and downloads.

    Ptolemy II 0.3 was made available on August 2, 1999. This release consists of domains, actors and applets to use as models for development and extensive documentation.

    The demonstrations that we ran during the 1999 Ptolemy Miniconference, are available online.

    The Ptolemy II 0.2devel snapshot release we used for the demonstrations is also available for downloading.