Ptolemy II

Ptolemy II Coin

Ptolemy II is named after the Ptolemy II, the Egyptian King.

Ptolemy II Overview

Ptolemy II is a set of Java packages supporting heterogeneous, concurrent modeling and design. Its kernel package supports clustered hierarchical graphs, which are collections of entities and relations between those entities. Its actor package extends the kernel so that entities have functionality and can communicate via the relations. Its domains extend the actor package by imposing models of computation on the interaction between entities. Examples of models of computation include discrete-event systems, dataflow, process networks, synchronous/reactive systems, and communicating sequential processes. 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.

Ptolemy II Features

Ptolemy II is implemented in Java, which allows Ptolemy II to be:
  • Platform independent - Today, Ptolemy II runs under Solaris and Windows NT.
  • Threaded - Ptolemy II builds on the threading primitives in Java.
  • Network aware
  • Modularity
    Ptolemy II consists of software packages that can be used independently. Ptplot is the first Ptolemy II package that has been released.
    Separation of Abstract Syntax and Semantics
    In Ptolemy 0.x, we found that it was sometimes difficult to support non-dataflow semantics such as the Synchronous/Reactive domain.
    Ptolemy II defines a software kernel that consists of classes that build up a hierarchical graph. Other packages define semantics such as Process Networks and Continuous Time.
    Improved heterogeneity
    Ptolemy II improves on the Ptolemy 0.x wormhole mechanism so that combining dataflow and non-dataflow domains is easier.
    Mutatable Systems
    Ptolemy II allows the a design to be modified as it is running. Consistency is maintains through the use of monitors build upon the lower level synchronization primitives in Java.
    Software Architecture
    Ptolemy II was designed with object modeling and design patterns in mind.
    Ptolemy II includes a test suite implemented in Tcl Blend the Tcl/Java interface.
    Polymorphic Type System
    Ptolemy II uses a new algorithm to determine the types of ports in a system. The algorithm uses a partial order of types and monotonic type refinement.
    User Interface
    Eventually, Ptolemy II may include a moder interface using Diva
    Improved Design Refinement
    In Ptolemy 0.x, migrating a design from simulation to code generation is sometimes difficult because of trivial differences in the blocks in each domain.
    Ptolemy II will separate the interface definition of a block from the implementation, so that each different implementation will have a common interface.

    A draft of the Ptolemy II Design Document is available.

    Ptolemy 0.x and Ptolemy II compatibility

    Ptolemy II and Ptolemy 0.x are two very different software systems.

    Ptolemy 0.x is fairly mature software in that the design is stable and mostly unchanging. The Ptolemy II software system is still in the early stages of its life cycle, so the design is changing.

  • They are written in different languages (Java vs. C++)
  • They have different file formats. Ptolemy 0.x uses Octtools, Ptolemy II uses the Tycho Interchange Manager (TIM).
  • They have different user interfaces.
  • However, all is not lost for Ptolemy 0.x users. We are considering various compatibility issues:
  • Once the Ptolemy II User Interface is mostly complete, it may be possible to modify it so that it can be used with Ptolemy 0.x.
  • We may develop file translators to help convert icon images and design layouts.
  • It may be possible to develop wrappers that run Ptolemy 0.x stars. This would be fairly tricky to do.