\chapter{Debug Transport Module (DTM) (non-ISA extension)} \label{dtm}

Debug Transport Modules provide access to the DM over one or more transports
(e.g.\ JTAG or USB).

There may be multiple DTMs in a single hardware platform. Ideally every component that
communicates with the outside world includes a DTM, allowing a hardware platform to be
debugged through every transport it supports.  For instance a USB component
could include a DTM. This would trivially allow any hardware platform to be debugged
over USB. All that is required is that the USB module already in use also has
access to the Debug Module Interface.

Using multiple DTMs at the same time is not supported. It is left to the user
to ensure this does not happen.

This specification defines a JTAG DTM in Section~\ref{sec:jtagdtm}. Additional DTMs
may be added in future versions of this specification.

An implementation can be compatible with this specification without implementing
any of this section. In that case it must be advertised as conforming to
``RISC-V Debug Specification \versionnum, with custom DTM.'' If the JTAG DTM
described here is implemented, it must be advertised as conforming to the
``RISC-V Debug Specification \versionnum, with JTAG DTM.''

\input{jtagdtm}
