Ptolemy is a software package that is used to design signal processing
and communications systems, ranging from designing and simulating
algorithms to synthesizing hardware and software, parallelizing
algorithms, and prototyping real-time systems. Ptolemy was started in
1990, with version 0.7 scheduled for release in June 1997. Ptolemy has
hundreds of active users in industry, academia, and government, and an
active newsgroup (
Ptolemy's current graphical editor is based on the VEM package developed at Berkeley in the mid-80's. Figure 2 shows the block-diagram editor: users construct simulations by placing and connecting icons representing signal processing components on the screen. Because of its age, this interface is clumsy, hard-to-use, and out of step with modern user expectations. One of Tycho's original design goals is to replace this out-dated interface, and Tcl/Tk was a clear choice for us.
Figure 2: Ptolemy's current block diagram editor
Tcl/Tk was added to Ptolemy in 1992 to provide interactive and animated simulation runs. Since late 1996, Ptolemy has been running the [incr Tcl] interpreter instead of Tcl, and all new user interface work in Ptolemy is now done in the Tycho framework. (Note, however, that Tycho can also be run independently of Ptolemy.) Currently, Tycho and the older graphical editor are used together: while the older editor is still used for the block diagrams, Tycho's text editors and HTML viewer are used to browse and edit block definitions and documentation. Tycho's Tcl Shell can be opened from within Ptolemy, which provides a command-based Tcl interface to the Ptolemy kernel. We hope to complete the transition to the Tycho user interface over the summer.
One of the key factors in the success of the Ptolemy project has been its non-dogmatic support of multiple semantic models. That is, it encourages designers to produce a domain that encapsulates a specific model of computation, and to interface it with other domains. Thus, Ptolemy supports various dataflow models, discrete-event simulation, finite-state machine models, and others. Tycho aims to provide a similar level of support for the syntactic component of system design: a designer should be able to rapidly construct a user interface to represent a particular semantic model or to visualize application-specific design information. For researchers in our own group, we aim to provide the support needed to rapidly construct customized user interfaces to signal processing and communications simulations. More broadly, Tycho has become an expression of our ideas about Tcl/Tk development environments: we want to provide an extensible framework in which mundane tasks such as documentation generation and indexing, font management, color management, and dialogs with the user are built using a shared, common infrastructure.