Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Introducing Iris, the new generation of debug and trace interface in Arm Models
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Fast Models
  • Fixed Virtual Platforms (FVPs)
  • Debug and Trace
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Introducing Iris, the new generation of debug and trace interface in Arm Models

Rob Kaye
Rob Kaye
January 16, 2019
4 minute read time.

The Iris Debug and Trace interface represents a major step forward in functionality for virtual prototypes incorporating Arm Fast Model. Iris complements and will, in time, replace the existing debug (CADI – Component Architecture Debug Interface) and trace (MTI – Model Trace Interface) APIs so it’s worth explaining why we have decided to introduce a new interface rather than enhancing the existing interfaces. I will also outline the future plans for debug and trace with Arm models.

Models vs hardware – the benefits of debugging within virtual prototypes

Before we dive into the specifics of Iris we should look at the key differences between debug & trace (& analysis) on a model (a.k.a. a Virtual Prototype, VP) and hardware. On hardware, the debug typically requires that additional logic be built into the silicon, with a dedicated interface. This interface is connected to the debugger through custom hardware, e.g. a trace probe. The debug capabilities on a SoC are burnt into the device when it’s manufactured thus constraining their flexibility and extensibility. In contrast, debug on a VP is via an API (or multiple APIs). As the VP itself is flexible and editable so are the debug and trace capabilities. They are also more controllable and deterministic. When an attached client, e.g. a debugger such as Arm Development Studio, signals the VP the simulation stops across all cores and peripherals instantly. There is no requirement to keep clocks running and maintain hardware state. All aspects of the model are open to analysis, inspection and modification.

The controllability and visibility of a VP is often posited as a key advantage over debugging on hardware. The APIs that give access to the model information and give model control are critical to these capabilities. Arm Fast Models are used extensively with Arm and by partners from early architectural development through software porting to final system bring up. Over time the range of use cases and applications has broadened building a legacy of requirements on the debug and trace APIs. When we looked into how to address these it became apparent that a new approach to the API was required rather than building on the current capabilities.

Hence Iris.

What’s new about Iris?

Iris was designed to address areas that were either difficult or impractical to implement in CADI and its API. Key amongst these are the following:

Iris is network native. Although remote debug is possible through CADI it can be difficult to set up and maintain. In Iris both simulation control and trace access are available across the network. A very common mode of usage is running the simulation on a server whilst the debug interface is run on the local workstation. Iris is significantly more adept at providing this capability than its predecessors. Iris can also run in-process as required.

Iris provides a single interface for both debug and trace. This greatly enhances the ability to provide – and guarantee – synchronous debug and trace when required. This was difficult to achieve with separate debug and trace APIs. Having a single interface also ensures naming consistency, something that could not be guaranteed when maintaining two distinct APIs.

With Iris plug-ins and trace can be loaded at any time during the simulation rather than at start up. This allows for much greater flexibility in operation and potentially improves simulation performance.

Iris provides requested enhancements such as an API for tables to improve debug of caches, TLBs and other integrated memories, asynchronous trace and virtual/physical address translation.

Underlying all this is the capability to add functionality within Iris without breaking compatibility of existing interfaces. This was not possible with CADI/MTI where a user was required to rebuild integrations when changes were made to the APIs.

Overall, Iris provides a major step forward in functionality and usability over the previous generation of interfaces. These improvements further enhance the advantages of using VPs over hardware to develop and debug software for Arm SoCs and unleash the powerful capabilities of VP. Iris is designed to be easy to use. Iris utilizes the widely used JSON format for data and command structures. Iris is scripted through a Python (2.7 or 3.*) interface providing simulation control and data management capabilities.

The future of CADI and MTI

There are many applications – commercial and proprietary – that leverage the current APIs. To facilitate partners transitioning to Iris, both CADI and MTI will be maintained (but not enhanced) in parallel with Iris being rolled out. Arm’s Development Studio tool suite will support Iris in the fall of 2019 and 3rd party solution providers, that have had early access to the specifications and libraries, will also transition in due course. The current goal is to phase out the CADI interface in mid-2020 and MTI around 1 year after that. It is planned that some capabilities of MTI will be rolled into Iris to provide trace in situations where simulation performance is more important than interactive inspection.

Explore Iris in Arm Fast Models

Anonymous
Tools, Software and IDEs blog
  • What is new in LLVM 16?

    Pablo Barrio
    Pablo Barrio
    Arm contributions from Arm to the new release include the usual architecture and CPU additions and new features such as, function multi-versioning and strict floating point support.
    • May 1, 2023
  • Product update: Arm Development Studio 2023.0 now available

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2023.0 now available with support for Arm Neoverse V2 processor.
    • April 27, 2023
  • What is new in LLVM 15?

    Pablo Barrio
    Pablo Barrio
    LLVM 15.0.0 was released on September 6, followed by a series of minor bug-fixing releases. Arm contributed support for new Arm extensions and CPUs.
    • February 27, 2023