The state-assertion extension provides the possibility to record the state of various devices at regular interval, to be able to compare it to a later run.
When creating trace assertion information, the general scheme is the following:
- use state-assertion-create-file to open the file where the data will be saved. This will also create a state-assertion object.
- use <state-assertion>.add to specify the objects to assert as well as the amount of steps between each assertion.
- use <state-assertion>.start to begin the assertion. From now on, continuing the simulation will record information into the file.
- use <state-assertion>.stop to empty the buffers and close the file.
When using state-assertion information to compare against the current run, you should:
- use state-assertion-open-file to open the file containing the state information you want to use.
- use <state-assertion>.start when you want to begin the comparison. The comparison is stopped automatically when no data is available. If states differ, the simulation is stopped and the differences are displayed.
It is also possible to connect directly two Simics instead of using a file, with the functions state-assertion-receive and state-assertion-connect. The recording/comparison is then executed directly.
conf_object, log_object, snoop_memory, timing_model
- cell-change
- Notifier that is triggered after the object's cell was changed.
- object-delete
- Notifier that is triggered just before Simics object is deleted.
- queue-change
- Notifier that is triggered after the object's clock was changed. New clock can be obtained with the SIM_object_clock function.
-
add
– add an object to be asserted
-
add-mem-lis
– add a memory listener on the specified memory space
-
fforward
– fast-forward a state assertion file when comparing
-
info
– provide information about the state assertion
-
start
– start trace asserting/comparing
-
status
– provide the status of the current state assertion
-
stop
– stop trace asserting/comparing and close the file
-
create
-
Pseudo attribute;
write-only access; type:
[sisiii]
This is a pseudo-attribute that should not be used directly. It creates a state assertion file for recording.
-
open
-
Pseudo attribute;
write-only access; type:
[siii]
This is a pseudo-attribute that should not be used directly. It creates a state assertion file for recording.
-
add
-
Pseudo attribute;
write-only access; type:
[oiiso|n]
This is a pseudo-attribute that should not be used directly. It adds an object to the state assertion queue.
-
addmemlis
-
Pseudo attribute;
write-only access; type:
[s]
This is a pseudo-attribute that should not be used directly. It adds a memory listener in the state-assertion queue.
-
start
-
Pseudo attribute;
write-only access; type:
i
This is a pseudo-attribute that should not be used directly. It starts the state assertion.
-
fforward
-
Pseudo attribute;
write-only access; type:
[si]
This is a pseudo-attribute that should not be used directly. It fast-forwards the assertion process.
-
stop
-
Pseudo attribute;
write-only access; type:
i
This is a pseudo-attribute that should not be used directly. It stops the assertion process.
-
flush
-
Pseudo attribute;
write-only access; type:
i
Set attribute to flush buffered output (value should be 1).
-
info
-
Pseudo attribute;
write-only access; type:
i
This is a pseudo-attribute that should not be used directly. It provides information on the objects asserted.
-
status
-
Pseudo attribute;
write-only access; type:
i
This is a pseudo-attribute that should not be used directly. It provides runtime information on the assertion process.
-
lsize
-
Pseudo attribute;
read-only access; type:
i
This is a fake line size for the memory hierarchy system.
-
manual_handler
-
Pseudo attribute;
write-only access; type:
o
When this attribute is set, state-assertion reacts as if an event had occur for a specific object.
-
object_remap
-
Pseudo attribute;
read/write access; type:
[[so]*]
This attribute controls remapping of objects. Each sublist contains one string with the name of an object in the trace we are asserting against and the other element is the corresponding object in the current configuration.
state-assertion