DML is structured around an object model, where each DML program describes a single device class (being a subclass of the built-in generic device class), which can contain a number of member objects. Each member object can in its turn have a number of members of its own, and so on in a nested fashion.
Every object (including the device itself) can also have methods, which implement the functionality of the object, and parameters, which are constant-valued members that exist only during compilation.
Each object is an instance of a class, often simply called the "object type"; the built-in object types are described in Section 3.2. There is no way of adding user-defined classes in DML 1.0. However, each object is in general locally modified by adding (or overriding) members, methods and parameters - this can be viewed as creating a local one-shot subclass for each instance.
Many parts of the DML object model are automatically mapped onto the Simics "configuration object" model; most importantly, the device class itself, its attributes and interface methods. (See the Simics User Guide and the Simics Programming Guide for details.)
3.1 Device Structure
3.2 Object Types
3.6 Register Banks