Maisie is a C-based discrete-event simulation language. It adopts the process interaction approach to discrete-event simulation. An object (also referred to as a PP for physical process) or set of objects in the physical system is represented by a logical process or LP. Interactions among PPs (events) are modeled by timestamped message exchanges among the corresponding LPs.
One of the important distinguishing features of Maisie is its ability to execute a discrete-event simulation model using several different asynchronous parallel simulation protocols on a variety of parallel architectures. Maisie is designed to cleanly separate the description of a simulation model from the underlying simulation protocol, sequential or parallel, used to execute it. Thus, with few modifications, a Maisie program may be executed using the traditional sequential (Global Event List) simulation protocol or one of many parallel optimistic or conservative protocols.
In addition, Maisie provides powerful message receiving constructs that result in shorter and more natural simulation programs. Useful debugging and message tracing facilities are available. A front-end for visual specification of simulation models, and a runtime output display and visualization environment is currently being designed.
The next two sections define the two main enhancements that Maisie
makes to C -- constructs for defining and creating (simulation)
entities, and constructs for message communication. Section 4 describes the remaining enhancements.
Section 5 describes the debugging and
message tracing support for Maisie. Section 6 presents a set of complete Maisie examples.
Appendix A describes the Maisie compiler
and the procedure of compiling and executing a Maisie program. A list
of language restrictions and known bugs are described in Appendix B. Appendix C
describes how to contact the system support group. Sections marked
with an asterisk (*) may be skipped during the first reading.
The reader is assumed to be familiar with the C programming language as defined in [KR78]. The manual uses boolean constants false and true to mean 0 and a non-zero integer value respectively. The syntax of Maisie statements is given in BNF using the following symbols and conventions:
Terminals : terminal symbols are given in boldface styleNonterminals : nonterminal symbols are in italic style
ident : a C identifier (see Appendix B for identifiers reserved by Maisie)
[ ] : symbols occurring within brackets are optional
[ ]... : symbols may be repeated 0 or more times
| : alternative