MLDesigner Kernel

The core of MLDesigner is a compact software infrastructure upon which specialized design environments, so-called domains, can be built. The software infrastructure, called the kernel, is made up of a family of C++ class definitions. For detailed information on all the kernel classes, please refer to the MLDesigner Kernel section. The MLDesigner kernel was taken from the original Ptolemy system with some slight modifications. Therefore, the items MLDesigner kernel and Ptolemy kernel are used synonymously.

Domains are specific implementations of a model of computation. They are defined by creating new C++ classes derived from the base classes in the kernel. Domains can operate in either of two modes.

A scheduler invokes code segments in an order appropriate to the model of computation.
Code generation
Code segments in an arbitrary language are stitched together to produce one or more programs that implement the specified function.

The use of an object-oriented software technology permits domains to interact with one another without knowledge of the features or semantics of the other domain. Thus, using a variety of domains, a team of designers can model each subsystem of a complex, heterogeneous system in a natural and efficient manner. These different subsystems can be nested to form a tree of subsystems. This hierarchical composition is the key in specifying, simulating, and synthesizing complex, heterogeneous systems.

In summary, the key idea in the Ptolemy kernel and thus also in the MLDesigner kernel was to mix models of computation, implementation languages, and design styles, rather than trying to develop one all-encompassing technique. The rationale is that specialized design techniques are

  1. more useful to the system-level designer, and
  2. more amenable to high-quality high-level synthesis of hardware and software.

The MLDesigner kernel demonstrates a way to mix tools that have fundamentally different semantics, and provides a laboratory for experimenting with such mixtures.

Models of computation

Simulation domains

Code generation domains