JTAG Operation

This page describes how the DTP integrates its JTAG components at the subsystem level: topology, scan chain ordering, lifecycle feature control. Clock domains and reset overrides are described in Clocks and Resets; IP Reference contains the individual JTAG components.

1. DTP JTAG Topology

The DTP instantiates a single JTAG Interface Unit (JIU) as the primary debug entry point for the chiplet. The JIU connects to:

  • The five external JTAG pins (TCK, TDI, TDO, TMS, TRST_n).

  • The Cross Trigger Network, for the jtag_clock_stop bit in the DEBUG_CONTROL instruction and for the cla_clock_stop readback status.

  • The SMC AXI fabric via a JTAG2AXI bridge.

  • The SMC and SEP OTP controllers via AXI4-Lite JTAG2AXI bridges.

  • The SMC and SEP CPU debug TAPs via STAPs.

Figure 1 shows the PTAP, secondary scan path, and iJTAG instrument network.

DTP JTAG scan chain: TDI fans out to the PTAP instruction and data registers, the boundary-scan chain and the three iJTAG SIBs; the PTAP output passes through the STAP chain and an external STAP chain back to the TDO mux
Figure 1. DTP JTAG scan chain

Read Figure 1 along the arrows from TDI to TDO. TDI reaches every register and external chain at once; the IR and TDR mux returns the instruction register in Shift-IR and, in Shift-DR, the register the current instruction selects. Italic labels beside a mux name the instructions or the select bit that choose its input, and 0 or 1 at a mux input is the select value that picks it. The PTAP output then enters the STAP chain, which is scanned only while the TAP_3DCR STAP-select bit is set: the bit gates the chain’s scan strobes and selects its return onto TDO. Otherwise TDO takes the PTAP output directly. TDO is retimed on the falling edge of TCK except during a ZERO_LENGTH_BYPASS DR scan with the STAP-select bit clear, when the last mux takes the TDO mux output ahead of the retimer and TDI reaches TDO combinationally. While the bit is set, ZERO_LENGTH_BYPASS behaves exactly as BYPASS: the PTAP bypass register leads the STAP chain and the chain’s return is retimed. The figure counts the extra STAPs by the jtag_intf_unit parameter NUM_EXTRA_STAPS, which dtp sets from JTAG_NUM_EXTRA_STAPS. Each STAP and SIB carries, in italics, the dbg_disable_i field that closes it. Dashed blocks exist only when their enable parameter is set, as the list below gives for the STAPs; the JTAG2AXI bridges follow JTAG_SMC_DBG_ENABLE and JTAG_SEP_DBG_ENABLE. Each STAP adds one SIB bit to the chain; opening the SIB inserts the STAP’s 3-bit 3DCR, and setting the 3DCR STAP-select bit splices in its secondary TAP. Each iJTAG SIB inserts its external segment after its SIB bit while that bit is set.

2. STAP Secondary Scan Path

The PTAP secondary scan path connects the STAPs in this fixed order:

  1. PTAP

  2. I/O STAP — when JTAG_STAP_IO_ENABLE=1

  3. SMC debug STAP — when JTAG_SMC_DBG_ENABLE=1

  4. SEP debug STAP — when JTAG_SEP_DBG_ENABLE=1

  5. Extra STAP instances [JTAG_NUM_EXTRA_STAPS-1:0]

  6. Return to PTAP

When a STAP is disabled by parameter, the DTP bypasses it in the secondary scan chain and drives its host outputs low, apart from TCK, which still follows the PTAP.

3. JTAG2AXI Bridges

The PTAP contains three JTAG2AXI bridges, each selected by its own group of six instructions (Table 1). The request and response type parameters of a bridge set its bus type, address width and data width. Its read and write pipeline-depth parameters set how many transactions it queues, where 0 allows a single outstanding transaction. The table lists the DTP defaults. Each bridge reports its configuration in its *_JTAG2AXI_CAPS register. Every output of a bridge’s manager port depends only on the bridge’s internal state, so no combinational path runs from the port’s inputs to its outputs. A bridge accepts a response from the cycle after its request handshake completes.

Table 1. DTP JTAG2AXI bridges
Bridge Instructions Bus Address / data width (bits) Type parameters Pipeline-depth parameters (default 3)

SMC fabric

0x27–0x2C (SMC_*)

AXI4

56 / 64

smc_jtag_axi_req_t, smc_jtag_axi_resp_t

SMC_RD_PL_DEPTH, SMC_WR_PL_DEPTH

SMC OTP

0x1B–0x20 (SMC_OTP_*)

AXI4-Lite

32 / 32

smc_otp_axil_req_t, smc_otp_axil_resp_t

SMC_OTP_RD_PL_DEPTH, SMC_OTP_WR_PL_DEPTH

SEP OTP

0x21–0x26 (SEP_OTP_*)

AXI4-Lite

32 / 32

sep_otp_axil_req_t, sep_otp_axil_resp_t

SEP_OTP_RD_PL_DEPTH, SEP_OTP_WR_PL_DEPTH

4. Debug Disable

dbg_disable_i (sep_lifecycle_ctrl_pkg::dbg_disable_t) is a per-path debug/test disable vector. Each field is active-high (1 = path disabled). The JTAG interface unit synchronizes the vector into the TCK domain and applies each field to the named path.

Table 2 maps each debug path to its active-high disable field.

Table 2. DTP debug-disable paths
Path Disable Field

I/O STAP host path

dbg_disable_i.stap_io

SMC debug STAP host path

dbg_disable_i.stap_smc

SEP debug STAP host path

dbg_disable_i.stap_sep

Extra STAP host paths

dbg_disable_i.stap_extra

External STAP return path

dbg_disable_i.stap_host

Secure external DFT iJTAG path

dbg_disable_i.dft_secure

Non-secure external DFT iJTAG path

dbg_disable_i.dft_nonsecure

DFD iJTAG path

dbg_disable_i.dfd

SMC fabric JTAG2AXI path

dbg_disable_i.smc_jtag2axi

SMC OTP JTAG2AXI path

dbg_disable_i.smc_otp_jtag2axi

SEP OTP JTAG2AXI path

dbg_disable_i.sep_otp_jtag2axi

A disabled path remains observable only where required for control and readback. For a JTAG2AXI bridge, disabling means TDR update registers are not latched. The disable gates the idle state: an active AXI transaction continues to completion, and buffered requests are flushed when idle is reached. For a STAP, the host-visible scan access is clamped so the disabled path cannot reach downstream secure logic.

The STAP and iJTAG fields are applied in jtag_intf_unit; the three JTAG2AXI fields are applied in jtag_ptap.