MLDesigner supports a number of simulation domains. Tier 1 domains are those, which are well developed, tested and classified as stable.

The DE domain is a mature domain using an event-driven model of computation. In this domain, particles carry time stamps, and represent events that occur at arbitrary points in simulated time. Events are processed in chronological order. MLDesigner provides a variety of simulation schedulers (Calendar Queue, Mutable Calendar Queue, Priority Free, Resource Contention, Simple Discrete Event)

DE schedulers maintain an event queue, which is a list of events sorted chronologically by time stamp. The scheduler selects the next event on the list, and determines which primitive should be fired to process the event. The difference between the efficient calendar queue scheduler and the naive simple scheduler is in the efficiency with which this queue is updated and accessed. Considerable effort was put into consistent and predictable handling of simultaneous events.

The SDF domain is the most mature and widely used domain in MLDesigner. SDF is a special case of the data flow model of computation. The specialization of the model of computation is to those data flow graphs where the flow of control is completely predictable at compile time. It is a good match for synchronous signal processing systems, those with sample rates that are rational multiples of one another.

This domain is suitable for fixed and adaptive digital filtering, in the time or frequency domains. It naturally supports multirate applications, and its rich primitives library includes polyphase real and complex FIR filters.

The predictable control flow of SDF allows efficient scheduling, but limits the range of applications. In particular, data-dependent flow of control is only allowed within the scope of a primitive. To support broader applications, the DDF domain uses dynamic (run-time) scheduling. For long runs, involving many iterations, this is more extensive than the static scheduling that is possible with SDF. But in exchange for this additional cost, the result is a model of computation that is as versatile as that of conventional programming languages. It supports conditionals, data dependent iteration, and true recursion.

Although the DDF domain is, in principle, a fully general programming environment, it is nonetheless better suited to some applications than others. We have found that signal processing applications with a limited amount of run-time control are a good match.

The SDF domain is in fact a sub-domain of DDF, which means that SDF primitives can be used in DDF systems. For greater efficiency on long runs, the two domains can also be mixed using the MLDesigner hierarchy. A module within a DDF system can be SDF, meaning that it will use an SDF scheduler. Conversely, a module within an SDF system can be DDF.

A function is higher-order if it takes a function as an argument and/or returns a function. A classic example is mapcar in Lisp, which takes two arguments, a function and a list. Its behavior is to apply the function to each element of the list and to return a list of the results.

The HOF domain implements a similar function, in the form of a primitive called Map, that can apply any other primitive (or module) to the sequence(s) at its inputs. Many other useful higherorder functions are also provided by this domain.

The domain provides a collection of primitives designed to be usable in all other MLDesigner domains. It is intended to be included as a sub-domain by all other domains.

The FSM supports multiple levels of hierarchy. Most MLDesigner elements can be linked to states, transitions and actions.

The purpose of CTDE is to design and simulate continuous-time and mixed signal systems (mixed-signal simulation). There are many instances where pure discrete event or continuous time models of computation are not sufficient and are in fact problematic. By combining the two models of computation into a new domain it is now possible to design heterogenous systems with completely different signal types. Connections between ports of different types are made possible by inserting a primitive to convert the signal. These primitives can be found in the **Discrete To Continuous** and **Continuous To Discrete** libraries. This greatly enhances the designers ability to create models which were till now problematic.

The continuous-time part of this mixed domain is suited for modeling physical systems with linear or nonlinear algebraic equation descriptions and has been extended to handle discrete events. This is achieved by the scheduler switching between continuous time and discrete event mode. At a given time in the simulation interval the Discrete-Event scheduler processes all events that have a current timestamp. The simulator then switches to the Continuous-Time scheduler. The continuous trajectory of the signal is calculated by a numerical ordinary differential equations (ODE) solver until the next scheduled discrete event is reached where the scheduler switches back to discrete event mode.

Continuous signals are vectors of real numbers. Many primitives can operate on vectorial inputs such as the add primitive, as long as all inputs have the same width. The vector widths must be consistent and are checked before the simulation starts.

Discrete Event |
shared resource management, communication network protocols, packet-switched networks, wireless networks, multimedia systems, queuing systems, hardware systems, transportation networks |
---|---|

Synchronous Data Flow |
fixed and adaptive digital filtering (time/frequency), multirate applications, speech coding, sample-rate conversion, analysis-synthesis filter banks, modems, phase-locked |

Dynamic Data Flow |
signal processing applications, signal coding algorithms, asynchronous signal processing applications |