debug working group intro outline - risc-v · • debug working group intro • why does risc-v...
TRANSCRIPT
![Page 1: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/1.jpg)
![Page 2: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/2.jpg)
• Debug Working Group Intro• Why does RISC-V need an External Debug Spec?• Overview of the Debug Spec v. 013• Future tasks of Debug Working Group
Outline
2
![Page 3: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/3.jpg)
• Started out as an email list• Formed task group with regular meetings at last RISC-V Workshop
• Lots of discussion around two basic mechanisms• Took a non-binding “opinion poll” of the member companies• Strong desire for a unified spec
• To avoid fragmentation of RISC-V ecosystem• Working group agreed to pursue that and see where it led
• WG converged on a spec item by item
Debug Working Group IntroHistory of the current Specification
3
![Page 4: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/4.jpg)
● Specification source is available on github:
https://github.com/riscv/riscv-debug-spec
● Pre-compiled PDFs regularly posted on SiFive website:
https://www.sifive.com/documentation/risc-v/risc-v-external-debug-support/
Debug Working Group IntroHistory of the current Specification
4
![Page 5: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/5.jpg)
•Alex Bradbury (lowRISC)•Palmer Dabbelt (SiFive)•Vyacheslav Dyanchenko (Syntacore)•Cyril Jean (Microsemi)•Richard Hereville (ROALogic)•Po-Wei Huang (Individual)•Gajinder Panesar (UltraSoC)
Debug Working Group IntroActive members from many member companies
5
•Larry Madar (Google)•Tim Newsome (SiFive)•Megan Wachs (SiFive)•Stefan Wallentowitz (lowRISC)•… and many more
![Page 6: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/6.jpg)
External Debug Definition● Provide visibility into system from
external hardware interface● Access hart registers, memory,
devices● RISC-V Core is only part of a
platform, but Spec focuses on the core
● Share debug hardware between multiple harts
6
![Page 7: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/7.jpg)
•Essential tool for any real hardware•Debug embedded software on simple systems•Debug kernel issues on more complex systems•Perform bringup and test before SW is up and running•NOT intended to find HW faults/bugs
• But can be used to narrow them down!
Why does RISC-V need a Debug Spec?
7
![Page 8: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/8.jpg)
• “Software is King”•Develop HW and SW debuggers that can work for any RISC-V core•Not dependant on the quality of a Vendor’s debugging toolchain
Goal of specification: A debugger can connect “blind” to any RISC-V platform, and
discover everything it needs to know.
Why does RISC-V need a Debug Spec?
8
![Page 9: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/9.jpg)
•Selecting Harts•Halt - Resume•Abstract Commands•Program Buffer•Single - Stepping•Debugging across reset / power down•Triggers
Debug Spec v0.13Basic Features
9
![Page 10: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/10.jpg)
Requirements on RISC-V Harts
● “Debug” execution mode ○ Waiting for instruction from debugger○ Generally acts like M-Mode○ Interrupts are disabled○ Exceptions handled by debugger○ Can be implemented with simple
pipeline stall
10
![Page 11: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/11.jpg)
•$dcsr (~23 bits)• Reports cause of entering debug mode• Configures what ‘ebreak’ does• Controls Single-step
•$dpc (XLEN bits, optional)• Holds a copy of $pc• May alias to $pc
•$dscratch(0..N) (XLEN bits, optional)• Can be used by debug module/ debugger
Requirements on RISC-V Harts : CSRs
11
![Page 12: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/12.jpg)
Debug Module
● 32-bit register space to control debug functionality
● Specification focuses on this register space
● Details between Debug Module & Core left up to implementation
12
![Page 13: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/13.jpg)
Debug Module Interface
● Conceptual 32-bit bus● Connects Debug Transport(s) to
Debug Module● Provides a register-based
interface to Debug Module● Abstraction: could be combined
in hardware
13
![Page 14: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/14.jpg)
•Single debug module can support up to 1024 harts•Debugger writes 10-bit hart selector to DMCONTROL.hartsel•Hart Selector != $mhartid, but easy to discover mapping•Optional feature to allow selecting multiple harts
Selecting Harts
14
![Page 15: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/15.jpg)
To halt, debugger:1. Selects desired hart(s)2. Sets DMCONTROL.haltreq3. Waits for DMSTATUS.allhalted4. Clears DMCONTROL.haltreq
To resume, debugger:1. Selects desired hart(s)2. Sets DMCONTROL.resumereq3. Waits for DMSTATUS.allresumeack
Halt, Resume
15
![Page 16: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/16.jpg)
•Read/Write GPRs -- REQUIRED•Read/Write CSRs -- Optional•Read/Write FPRs -- Optional•Can be supported on running harts -- OptionalTo perform an abstract command:1. Debugger writes argument(s) into DATA registers2. Debugger writes COMMAND register3. Debugger waits for ABSTRACTCS.busy = 0 4. Debugger reads results from DATA registers
Abstract CommandsSimple Abstraction for Common Operations
16
![Page 17: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/17.jpg)
•Allows arbitrary RISC-V Code to be executed by hart•Flexible way to implement any desired behavior, including future
extensionsTo execute Program Buffer:1. Write desired code into PROGBUF registers (ending with ‘ebreak’)2. Write COMMAND register with ‘postexec’ bit set3. Wait for ABSTRACTCS.busy = 0
Program BufferOptional Extension of Abstract Command
17
![Page 18: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/18.jpg)
•Program Buffer may be addressable RAM•Debugger can determine this by executing programs• If it is, more flexibility (can use Program Buffer to pass more data)•DATA registers may be mapped as RAM or CSRs, reported in
HARTINFO reg.
Program BufferOptional Extension of Abstract Command
18
![Page 19: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/19.jpg)
•Debugger can write bursts of commands without checking busy• Check DMSTATUS.cmderr at the end, replay if necessary
•AUTOEXEC functionality replays commands with different data•Low-overhead burst data transfers
Batching CommandsSupported for Program Buffer and Abstract Commands
19
![Page 20: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/20.jpg)
•Enabled by ‘step’ bit in DCSR•Once hart is resumed, hart executes a single instruction before
returning to debug mode
Single Stepping
20
![Page 21: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/21.jpg)
● Debug logic reset behavior clearly specified● Debugger can set DMCONTROL.ndmreset
○ What parts of system are reset is implementation-specific○ Debug logic is not affected by external reset
● Debugger must set DMCONTROL.dmactive○ Implementations can use this indicator to prevent power gating, etc
Debugging Across Reset/Powerdown
21
![Page 22: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/22.jpg)
•CSRs in the core, shared with M-Mode•Support up to 2XLEN triggers•Trigger select, trigger type: WARL fields•2 types of triggers currently defined:
• Virtual address and/or data match• Instruction count
•Debugger polls DMSTATUS.haltsum to see if harts have halted
Triggers (not part of Debug Module)
22
![Page 23: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/23.jpg)
•System Bus Mastering•Serial Port Interface•Quick Access
Additional Optional FeaturesSee Spec for Details
23
![Page 24: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/24.jpg)
•Debugger Software (OpenOCD)• https://github.com/riscv/riscv-openocd
•Simulator (Spike) • https://github.com/riscv/riscv-isa-sim• debug-0.13 branch
•RTL (rocket-chip)• https://github.com/ucb-bar/rocket-chip
•SiFive E31/E51 Coreplex
Public Implementations of Debug v0.13Would love to hear about more
24
![Page 25: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/25.jpg)
•Lots of eyes on the spec• Clarifications
• Style edits -- want style of RISC-V Specs to match
•Focus is on ratifying what was presented today•Working on Profiles to reduce optionality for SW writers
• Soliciting suggestions, target implementations
•Future work will focus on additional features• Non-JTAG Transports• Trace
Current Focus of Debug Working Group
25
![Page 26: Debug Working Group Intro Outline - RISC-V · • Debug Working Group Intro • Why does RISC-V need an External Debug Spec? • Overview of the Debug Spec v. 013 • Future tasks](https://reader034.vdocuments.site/reader034/viewer/2022042323/5f0dadf07e708231d43b8c5d/html5/thumbnails/26.jpg)
● Read the spec:○ https://github.com/riscv/riscv-debug-spec○ https://www.sifive.com/documentation/risc-v/risc-v-external-debug-sup
port/
● Join the mailing list:○ https://workspace.riscv.org○ [email protected]
● Email me:○ [email protected]
How to Get Involved:
26