1.5 Fast Models CADI implementation

Fast Models implement a subset of CADI functionality.

The following CADI methods are not supported by Fast Models:

CADI class:

Register API
Memory API
Virtual Memory API
Cache API
Execution API
CADIExecLoadApplication() - Implemented by CPU components only.
CADIExecGetLoadedApplications() - Implemented by CPU components only. It only returns the most recently loaded application if more than one have been loaded.

CADICallbackObj class:

  • appliOpen()
  • appliClose()
  • cycleTick()
  • killInterface()

CADIDisassembler class:

  • GetSourceReferenceForAddress()
  • GetAddressForSourceReference()
  • GetInstructionType()

CADIDisassemblerCB class:

  • ReceiveSourceReference()

The following tables describe the implementation of other CADI functionality by processor models:

Table 1-1 CADI broker implementation

Feature Implemented Remarks
Factories Yes Model DLL provides a single factory.
Instances Yes Factory can only instantiate one model at a time.

Table 1-2 CADI target implementation

Feature Implemented Remarks
# breakpoints Yes No intrinsic limit.
Breakpoint disabling Yes You can disable global breakpoints, but not user breakpoints set through CADIBptSet(). Debuggers usually disable breakpoints with CADIBptClear() and re-enable them with CADIBptSet(), so this does not affect debugger GUIs, but it does affect the CADI C++ interface. Global breakpoints are built-in and permanent, so CADIBptSet()/Clear() cannot set or delete them. With CADIBptConfigure(), you can only enable/disable these global breakpoints to stop on certain processor events.
Breakpoint ignore count No -
Breakpoint formal conditions No -
Breakpoint free-form conditions No -
Breakpoint setting Yesa -
Breakpoint types Yes: CADI_BPT_MEMORY, CADI_BPT_PROGRAM, CADI_BPT_PROGRAM_RANGE All registers in the Vector register group have disabled register breakpoints. You cannot create new register breakpoints.
Breakpoint triggers Yes: CADI_BPT_TRIGGER_ON_MODIFY, CADI_BPT_TRIGGER_ON_READ, CADI_BPT_TRIGGER_ON_WRITE CADI_BPT_TRIGGER_ON_WRITE approximates CADI_BPT_TRIGGER_ON_MODIFY. If either is set, the simulation stops when a value is written, even when it does not change.
CADIExecSingleStep() Yes Fast Models ignores the stepCycle and stepOver arguments.
Intrusive debug Yes Stop/start can affect processor scheduling: single stepping and multiple stepping both change scheduling, and so are intrusive.
Memory read/write Yesa -
Reset Yes

One reset level is supported.

When calling CADIExecReset(), Arm recommends the simulation should use a syncLevel of 1 or higher for best results.

Runnable Yes -
Stop simulation Yes -
a Not permitted while target is running.
Non-ConfidentialPDF file icon PDF version100964_1110_00_en
Copyright © 2014–2020 Arm Limited or its affiliates. All rights reserved.