| [](https://travis-ci.com/pulp-platform/riscv-dbg) | 
 |  | 
 | # RISC-V Debug Support for PULP Cores | 
 |  | 
 | This module is an implementation of a debug unit compliant with the [RISC-V | 
 | debug specification](https://github.com/riscv/riscv-debug-spec) v0.13.1. It is | 
 | used in the [Ariane](https://github.com/pulp-platform/ariane) and | 
 | [RI5CY](https://github.com/pulp-platform/riscv) cores. | 
 |  | 
 | ## Implementation | 
 | We use an execution-based technique, also described in the specification, where | 
 | the core is running in a "park loop". Depending on the request made to the debug | 
 | unit via JTAG over the Debug Transport Module (DTM), the code that is being | 
 | executed is changed dynamically. This approach simplifies the implementation | 
 | side of the core, but means that the core is in fact always busy looping while | 
 | debugging. | 
 |  | 
 | ## Features | 
 | The following features are currently supported | 
 |  | 
 | * Parametrizable buswidth for `XLEN=32` `XLEN=64` cores | 
 | * Accessing registers over abstract command | 
 | * Program buffer | 
 | * System bus access (only `XLEN`) | 
 | * DTM with JTAG interface | 
 |  | 
 | These are not implemented (yet) | 
 |  | 
 | * Trigger module | 
 | * Quick access using abstract commands | 
 | * Accessing memory using abstract commands | 
 | * Authentication | 
 |  | 
 | ## Tests | 
 |  | 
 | We use OpenOCD's [RISC-V compliance | 
 | tests](https://github.com/riscv/riscv-openocd/blob/riscv/src/target/riscv/riscv-013.c), | 
 | our custom testbench in `tb/` and | 
 | [riscv-tests/debug](https://github.com/riscv/riscv-tests/tree/master/debug). |