The RISC-V debug specification defines a trigger module, which holds a set of triggers. Each trigger can be individually configured for one of multiple trigger types (such as 'mcontrol2' or 'mcontrol6'), and depending on the trigger type the trigger can be configured with various options. The debug specification allows system designs with heterogeneous trigger capabilities, which means not every trigger must support the same trigger types and same trigger type configuration options.
The following are the requirements for the trigger types 'mcontrol2' and 'mcontrol6' in order to be compatible with version R.2022.02 and newer of the Lauterbach RISC-V debugger:
- The RISC-V debugger does support both, trigger type mcontrol2 and mcontrol6. However, it can only use one of these types in a debug session. It will automatically choose the trigger type that is supported by more triggers. For example if a core supports 4 mcontrol2 triggers and 5 mcontrol6 triggers, then the debugger will only use mcontrol6.
The following are the requirements for the trigger types 'mcontrol2' and 'mcontrol6' with version R.2021.09 and older(!) of the Lauterbach RISC-V debugger:
- Only trigger type mcontrol2 supported. mcontrol6 is not supported with this version yet.
- The debugger only uses the largest contiguous block of triggers that support the type 'mcontrol'. Example: if only trigger indexes 1, 4, 5, 6, 9 support type 'mcontrol', then the debugger will only use the contiguous block of indexes 4, 5, 6.
- Each mcontrol trigger has various optional configuration options (execute, store, load, chain, ...). The debugger currently only uses configuration options that are supported by all triggers of the contiguous mcontrol block (see above). The exception is the 'chain' option, which is used if it is supported by all except the last trigger in that block.
Add a comment