Next: , Up: Welcome to The Machine Emulator   [Contents][Index]


1.1 What is TME?

TME is a generic machine emulation system for emulating one or more machines. Each of the machines is specified in a special, extensible machine description language (MDL) called tmesh. It includes an interpreter for this language that is used to translate the description into a working, dynamical system that emulates the machine. The elements of the language are keywords that name individual components of the machine. Each component is implemented using dynamically loaded modules that are compiled directly into native machine code. In this way, it is very similar to a virtual machine and is what makes it so efficient compared to many other systems which may interpret the individual component descriptions.

The machine description itself is interpreted, but it creates a statically connected system comprised of multiple dynamic modules that are themselves compiled. As each component keyword is translated, the components they describe get instantiated. This means that the component module is dynamically loaded into the main running program. In addition, components are connected via the "at" keyword. When they are connected, a communications path is established between the components. The path is dependent upon the interfaces presented by the components. This means that the components must have compatible interfaces in order to be connected using "at". The communications protocols are determined by the components as well, and must obviously be compatible. In this way, the machine description language is very close to how an actual technical specification might be accomplished. This makes it a prime candidate for use in prototyping systems as well as for distributing dynamic specifications of production systems. It could also be a potential candidate for a future board-level (or network-level) ESL system (like SystemC) that actually compiles the MDL into an HDL such as Verilog or VHDL and from there into actual hardware systems with associated software toolchains. The possibilities are limitless!

A good way to think of TME is that it is to machines what SPICE is to circuits. In SPICE, the components can be standard, primitive devices like resistors, diodes, and transistors, described using physical constraints. They can be connected to form complex electronic circuits which may then be simulated. Models of new components can be created in the SPICE language to provide novel circuit elements. In the same way, the elements in TME can be standard "primitive" components like ICs, memories, busses, or external devices like NICs and disk drives. New types of components can be modelled by coding their behaviour directly in C source code which, when compiled, exports the required interfaces as dynamically loaded modules using the extremely portable GNU libltdl. They are combined to form more complex systems such as computers that may then be emulated.


Next: , Up: Welcome to The Machine Emulator   [Contents][Index]