Using the ELA-500 with Arm DS

A tutorial showing how to use the CoreSight ELA-500 with Arm Development Studio (Arm DS) to debug a real-world deadlock scenario


Introduction Before you begin Importing the ELA-500 DTSL use case scripts Configuring the ELA-500 use case scripts Running the ELA use case scripts Capturing the ELA trace data Analyzing the ELA trace capture

Configuring the ELA-500 use case scripts

To configure the ELA-500, you can either edit a use case script or use the configuration GUI interface. The application-specific use case script allows you to script a specific debug recipe. The debug recipe is used to debug a specific debug scenario with the ELA-500.

The GUI configuration utility represents the ELA-500 registers and register bit assignments as fields, tickboxes, or drop-down items. For example, the ELA-500 Actions registers bit assignments are shown as the following in the GUI configuration utility:

Actions register bit assignments

ELA-500 GUI configuration utility representation

ELAOUTPUT[7:4]

Value to drive on ELAOUT[3:0] field

TRACE[3]

Enable trace tickbox

STOPCLOCK[2]

Value to drive on STOPCLOCK tickbox

CTTRIGOUTPUT[1:0]

Value to drive on CTTRIGOUTPUT[1:0] field

In this tutorial, we use the ELA-500 GUI configuration utility to configure the ELA-500 to debug a deadlock situation.

To add the DTSLELA-500 project use case scripts to the Scripts view in Arm DS, do the following:

  1. Connect to a target with Arm DS.

    Learn how to connect to a target with Arm DS, read the "Configuring debug connections in Arm Debugger" section of the Arm Development Studio User Guide.

  2. If the Scripts view is not open, click Window > Show View > Scripts.
  3. In the Scripts view, click Import a Script or Directory > Add Use Case Script Directory…. Add Use Script Directory to Scripts view

  4. In the Select Folder dialog, browse to the DTSLELA-500 project in your Arm DS Workspace and click Select Folder.

In the Scripts view, the DTSLELA-500 use case scripts appear under Use Case > Scripts in <path to Arm Development Studio Workspace>\DTSLELA-500\.

Script view after DTSLELA-500 use case scripts import

The following steps show how to use the GUI ELA-500 Configuration Utility to configure the ELA-500 for our deadlock scenario:

  1. If you have not already, connect to a target.

    Note: You must connect to a target to configure and run the ELA-500 use case scripts.

  2. Open the GUI ELA-500 configuration utility:
    1. Go to Scripts view > Use case > Scripts in <path to Arm Development Studio Workspace>\DTSLELA-500 > ela_lowlevel.py > Configure ELA.
    2. Right-click Configure ELA and select Configure… .
      Selecting the Configure ELA use case script
  3. Configure the common controls:
    1. In the Common tab, in the Pre-trigger action section, select Enable trace.

      This setting configures the ELA to start tracing when it is enabled. This field sets PTACTION.TRACE so that trace is active when the ELA-500 is enabled. When trace is active, one of the following controls trace capture:
      1. Each ELA clock cycle
      2. A Trigger Signal Comparison match
      3. A Trigger Counter Comparison match.Configuring Common settings for the ELA-500

    2. Click Apply.
  4. We now must configure our initial trigger:
    1. Open the Trigger State 0 tab.
    2. Set Select Signal Group to 0x1.

      On our example board, Cortex-72 + ELA-500 + LAK-500A, the RVALID signal goes into Signal Group 0. To locate the RVALID signal location for other targets, check your IPs corresponding JSON file or documentation.

      To trigger on the RVALID signal in Signal Group 0, we set the Trigger State 0 Select Signal Group value to 0x1. This step sets the ELA-500 Signal Select register 0 (SIGSEL0) to 0x1. The ELA-500 uses a 'ones hot' encoding for the Signal Group in the Signal Select registers.

      Trigger State 0 is now associated with the signals coming into Signal Group 0.

    3. Set Signal Comparison (COMP) to Equal.

      This step sets the Trigger Signal Comparison type select (COMP) of the Trigger State 0 Trigger Control register 0 (TRIGCTRL0). In this case, we want to trigger when the ARVALID signal is valid (active-HIGH).
    4. Set the Next state value to 0x1.

      Here we set the Next state. If the Trigger Condition is met, the ELA enters the state assigned to the Next State register. This configuration sets the Trigger State 0 Next state register 0 (NEXTSTATE0) to Trigger State 0. In our case, we want to capture on each ARVALID assertion, which uses the 'ones hot' for Trigger State 0. Configuring Trigger State 0 part 1

    5. Set both the Signal Mask [95:64] and Signal Compare [95:64] fields to 0x00080000.

      We must set Trigger State 0 Signal Compare 0 (SIGCOMP0) and Signal Mask 0 (SIGMASK0) registers for Signal Group 0 to monitor the ARVALID signal. The bit position of the ARVALID signal is documented in your IPs corresponding JSON file or documentation.

      In our example, ARVALID is mapped to bit 83, so we must specify 0x00080000 in both the Signal Mask [95:64] and Signal Compare [95:64] fields.Configuring Trigger State 0 part 2

    6. Click Apply > OK.
Previous Next