The following additional "good to know" information about components is provided to help the programmer gain a better understanding of components rather than as coding guidelines.
Most of the state in a component is usually checkpointed via the attributes used to configure it. There are also separate attributes that are only used for checkpointing, discussed in sections 12.3.1 and 12.4.3.
Things to checkpoint include state calculated or received during the connection phase, since it may be needed to support later reconfiguration for hotplugging components.
All information about connectors and connections is checkpointed automatically by the component base class.
All configuration objects in Simics that handle time in some way need a queue attribute set. The queue is an object implementing an event queue, also called time queue, needed for the time to advance. All objects that have the same queue are said to be part of the same time domain. The only objects that can be currently used as queues are processors and objects of the class clock.
The component system automatically sets the queue attribute for all objects at instantiation time, based on the component hierarchy. To override the automatic queue assignment, for example on multi-processor boards where each processor should be its own queue, simply assign the queue attribute when adding the pre-configuration objects.
Devices that handle input such as serial and network devices, keyboards and mice, usually implement a connection to a recorder object. All their input passes through the recorder so that it may record the input to the file and later replay the same input from the file.
The component system automatically creates a recorder and connects it to all input devices that have a recorder attribute. A component can override this automatic assignment by setting the recorder attribute itself for its objects.