5.12.1 Debuggable state flags

Instances that support debuggable state maintain the following flags:

Debuggable-state-request flag
The client sets or clears this flag in a specific instance by calling debuggableState_setRequest(). Only debuggableState_setRequest() can change this flag. The flag is per-instance and not per-client. Setting the flag changes how the instance behaves as simulation time passes in the following ways:
  • If the request was not yet acknowledged, the instance progresses towards a debuggable state, for example by flushing pipelines and moving register values to their final location.
  • When the request has been acknowledged, the instance is halted. It stops progressing while simulation time passes and while the request flag is set. This is necessary to be able to bring more than one instance into a debuggable state.
Debuggable-state-acknowledge flag

The instance automatically sets or clears this flag when it reaches or leaves a debuggable state. Typically, the instance reaches a debuggable state after setting the debuggable-state-request flag and executing some simulation time, usually by calling simulationTime_runUntilDebuggableState().

Typically, the instance leaves a debuggable state when simulation time progresses after the debuggable-state-request flag has been cleared.

The debuggableState_getAcknowledge() function queries this flag. This function has no side effects on the instance.

These flags have similar semantics to a debug request pin and a debug acknowledge pin found on some CPUs.

Non-ConfidentialPDF file icon PDF version101196_0100_03_en
Copyright © 2018, 2019 Arm Limited or its affiliates. All rights reserved.