You copied the Doc URL to your clipboard.


Checkpointing allows you to save the state of components in a simulation, and restore the simulation when you start a new simulation. Saved states are called checkpoints.

Core components that support checkpointing are:

  • ARMCortexA57xnCT.
  • ARMCortexA53xnCT.
  • ARMCortexA72xnCT.

Checkpointing limitations are:

  • Support for AArch32 state is not complete. Issues include interworking with AArch64 state.
  • No support for the GICv3 interface.
  • No support when using the functional model of the caches (when cache-state-modelled is on).
  • No preservation of TLB contents.
  • No preservation of exclusive monitor states.
  • No preservation of PMU states.
  • No preservation of architectural debug state.

These peripheral components pass checkpointing support tests, some with limits to their support:

No support of the use of input and output files (in_file and out_file parameters).
PL110_CLCD and PL111_CLCD
No known limits.
No support when using the functional model of the caches (when cache-state-modelled is on).
No known limits.
No known limits.

Model Shell supports checkpointing with the --save and --restore command-line options:

--save dirname
On simulation exit, save checkpoint to the directory dirname.
--restore dirname
On simulation startup, restore checkpoint to the directory dirname.

Use --save and --restore to restore a checkpoint on simulation startup and save a checkpoint on exit. For example:

model_shell -m $MODEL --restore checkpoint_dir --save checkpoint_dir

You can control checkpointing from a custom CADI client, from a SystemC application, with PyCADIShell, and with LISA+ components.

See ARM/FastModelsPortfolio/examples/CADIClient/checkpointing for an example of how to save and restore a checkpoint using CADI.

See ARM/FastModelsPortfolio/examples/SystemCExport/EVS_Checkpointing for a SystemC example.

See ARM/FastModelsPortfolio/examples/python/ for an example of how to perform checkpointing with PyCADIShell.

See ARM/FastModelsPortfolio/examples/LISAPlus/Checkpointing for an example of how to provide LISA+ components with checkpointing support.

The checkpointing feature is under development. It has limitations:

  • The checkpointing API will change in future releases of Fast Models.
  • Checkpoints are not compatible between different versions of Fast Models. Do not use a checkpoint from this version of Fast Models to restore the simulation state with a new version of Fast Models.
  • Many components do not support checkpointing. None of the Fixed Virtual Platforms that shipped with Fast Models support checkpointing, because they include components that do not have checkpointing support.
  • Remote clients that are connected to a CADI server cannot perform checkpointing.
  • LISA+ checkpointing elements are likely to change in future releases of Fast Models.