Clock, GPIO, UART, timers, interrupts, I²C, SPI, ADC, PWM, watchdog and RTC. A booting firmware drives each one in CI.
PIO0: a required nightly onboarding firmware must reach PIO_OK.
The USB device controller, with a simulated USB host. It enumerates the device and asserts CDC DTR, so USB-serial output from an Arduino sketch is captured.
What is left out
We list the gaps so you know when to reach for a bench.
One core. SIO CPUID always reads 0, so firmware that launches the second Cortex-M0+ core does not run as on silicon.
One instance each of UART, SPI, I²C and PIO: the chip descriptor declares uart0, spi0, i2c0 and pio0 only.
DMA is modelled, but no booting firmware exercises it yet.