Debug & Test Ports (DTP) Integration
1. Configuration
The SMU smu_cfg_t fields XTRIG_NUM_CTP, XTRIG_NUM_INT_CT, and
XTRIG_NUM_CLK_STOP_REQ size the SMU-exposed cross-trigger ports and are
passed through to the DTP (with the SMC-reserved lanes added to the internal-CT
and clock-stop counts). The generated Cross Trigger Matrix register map must
have one CT_Src and one CT_Dst for every DTP port
(XTRIG_NUM_CTP + XTRIG_NUM_INT_CT at the DTP, which is the SMU-exposed
internal-CT count plus smu_pkg::XtrigSmcIntCtLanes). Resizing is two
steps: set the CFG counts, and regenerate the CTM with matching PeakRDL
overrides:
make ocah-regen-regs TARGET=cross_trigger_matrix \
OCAH_REG_RDL_PARAMS_cross_trigger_matrix="NUM_CT_SRC=<n> NUM_CT_DST=<n>"
<n> is the DTP total (CFG.XTRIG_NUM_CTP + CFG.XTRIG_NUM_INT_CT).
smu_pkg::XtrigSmcIntCtLanescross_trigger_network fails elaboration if
the parameterized total disagrees with the generated map. Defaults remain 16
external CTPs, 10 internal CTs (8 exposed), and 9 clock-stop requests (8
exposed). XTRIG_INT_CT_MODE and every JTAG_* enable are set at the
instantiation as shown below.
Include the DTP in your build using Bender target dtp, which pulls in the DTP
RTL together with the JTAG and cross-trigger IPs it instantiates. The legacy
filelist hw/sys/dtp/rtl/config/dtp.f covers only the JTAG portion of the
hierarchy and is not a complete DTP recipe.
2. Instantiation
dtp #(
// JTAG Configuration
.JTAG_BSR_ENABLE (1'b1),
.JTAG_TMP_ENABLE (1'b1),
.JTAG_SMC_DBG_ENABLE (1'b1),
.JTAG_SEP_DBG_ENABLE (1'b1),
.JTAG_IDCODE_MFR_ID (11'h15A),
.JTAG_IDCODE_PART_NUM (16'h1234),
.JTAG_IDCODE_SI_REV (4'h1),
// Cross Trigger Configuration
.XTRIG_NUM_CTP (16),
.XTRIG_NUM_INT_CT (10),
.XTRIG_NUM_CLK_STOP_REQ (9),
.XTRIG_INT_CT_MODE (10'b0000000000)
) u_dtp (
.clk_i (clk),
.rst_n_i (rst_n),
.pwr_on_rst_ni (pwr_on_rst_n),
// JTAG, Boundary Scan, Cross Trigger interfaces...
);
3. Clock and Reset
-
TCK Domain: JTAG logic operates on external Test Clock
-
System Clock (
clk_i): Cross trigger logic and JTAG2AXI bridges -
System Reset (
rst_n_i): Resets cross trigger and AXI; does not affect TAP controller -
Power-On Reset (
pwr_on_rst_ni): Asynchronous reset for JTAG state machine
4. Constraints
-
JTAG interface: 10-50 MHz TCK frequency
-
Cross trigger signals synchronized to system clock
-
DTP remains active during clock stop for debug access
-
External CTP signals require pad ring integration with ESD protection
5. STAP Scan Chain Topology
The DTP secondary scan path chains multiple STAPs on a single PTAP-managed scan
string. The fixed order on this string is: PTAP, I/O STAP (if
JTAG_STAP_IO_ENABLE=1), SMC debug STAP (if JTAG_SMC_DBG_ENABLE=1), SEP
debug STAP (if CFG.SEP=1 in the SMU), extra STAP[N-1:0], and return to PTAP.
The string carries scans only while the PTAP 3DCR select bit is set. While the bit is clear, the scan-control strobes to every STAP stay low, so the STAP SIBs and 3DCRs hold their state through every PTAP scan, as does the downstream TAP of every deselected STAP. A STAP whose own select bit is set still forwards TCK and the live TMS, so its downstream TAP follows every PTAP scan; clear each STAP’s select bit, or reset the chain, before clearing the PTAP select bit. The select bit updates at Update-DR, so it is set in a TAP_3DCR scan of its own before a scan that opens STAP SIBs or writes STAP 3DCRs.
Both the SMC and SEP debug STAP host interfaces are internal to the SMU and are
not exported on the SMU boundary. The SMU wires the SMC debug STAP host outputs
to the SMC CPU/system JTAG ports (smc_cpu_jtag_*) when
JTAG_SMC_DBG_ENABLE=1; when disabled, the DTP bypasses this STAP in the
secondary scan chain and drives the internal host outputs low. The SEP debug
STAP connects to the SEP JTAG debug port when CFG.SEP=1; when CFG.SEP=0, the SMU
ties sep_stap_tdo_to_dtp = 1’b0 to bypass the SEP STAP return path.
Each STAP host interface is gated by a field of dbg_disable_i, synchronized to
TCK inside the DTP. Each field is active-high (1 = path disabled).
| STAP | Disable Field |
|---|---|
I/O STAP |
|
SMC debug STAP |
|
SEP debug STAP |
|
Extra STAPs |
|
External STAP return path |
|
The full set of debug-disable-gated paths, including the iJTAG chains and the JTAG2AXI bridges, is tabulated in the DTP JTAG integration section of the TRM.
6. DTP Port Interface
The DTP exposes interfaces for JTAG TAP control, boundary scan, multiple STAP
host ports, iJTAG scan chains, AXI debug bridges, cross trigger networks, and
CTP GPIO pads. The following table defines all DTP top-level ports. Refer to
the dedicated DTP documentation in hw/sys/dtp/doc/ for internal design details.
The generated module and port pages are in the TRM under RTL Modules Reference. This table keeps each port’s connection and tie-off default.
Legend: Where no Default entry is shown in Description / Default, the original port reference specifies N/A — those ports have no integrator-supplied default; connect as directed by Description.
DTP Port Declaration lists the DTP boundary ports, their dimensions, and their connections.
| Interface Name | Type | Dir | Width | Description / Default | Connection |
|---|---|---|---|---|---|
|
|
In |
1 |
System clock for cross trigger logic and JTAG2AXI bridges. |
System clock |
|
|
In |
1 |
System reset (active low). Resets cross trigger and AXI logic; does not affect the TAP controller. |
System reset |
|
|
In |
1 |
Power-on reset for JTAG state machine (active low, asynchronous). |
Power-on reset |
|
|
In |
- |
Per-path lifecycle controls for disabling debug and test interfaces. Active-high (1 = path disabled). DTP synchronizes each field into the JTAG TCK domain. |
SEP lifecycle controller or adopter-equivalent policy source |
|
|
In |
- |
Primary JTAG TAP control (TCK, TMS, TRST_N). |
External JTAG pads |
|
|
In |
1 |
Primary JTAG TDI. |
External JTAG pads |
|
|
Out |
1 |
Primary JTAG TDO. |
External JTAG pads |
|
|
Out |
1 |
Primary JTAG TDO output enable. |
External JTAG pads |
|
|
Out |
- |
Boundary scan control. Tie scan_in to scan_out if BSR is disabled. |
Boundary scan chain |
|
|
In |
1 |
Boundary scan data in. |
Boundary scan chain |
|
|
Out |
1 |
Boundary scan data out. |
Boundary scan chain |
|
|
Out |
- |
I/O STAP TAP control for chiplet-to-chiplet connectivity. If |
I/O STAP host |
|
|
In |
1 |
I/O STAP TDI. Default: Tie to '0 if unused. |
I/O STAP host |
|
|
Out |
1 |
I/O STAP TDO. |
I/O STAP host |
|
|
Out |
1 |
I/O STAP TDO output enable. |
I/O STAP host |
|
|
Out |
- |
SMC debug STAP TAP control. If |
SMC JTAG port |
|
|
In |
1 |
SMC debug STAP TDI (from SMC TDO). Default: Tie to '0 if unused. |
SMC JTAG port |
|
|
Out |
1 |
SMC debug STAP TDO (to SMC TDI). |
SMC JTAG port |
|
|
Out |
1 |
SMC debug STAP TDO output enable. |
SMC JTAG port |
|
|
Out |
- |
SEP debug STAP TAP control. If |
SEP JTAG port |
|
|
In |
1 |
SEP debug STAP TDI (from SEP TDO). Default: Tie to '0 if unused. |
SEP JTAG port |
|
|
Out |
1 |
SEP debug STAP TDO (to SEP TDI). |
SEP JTAG port |
|
|
Out |
1 |
SEP debug STAP TDO output enable. |
SEP JTAG port |
|
|
Out |
|
Extra STAP TAP control array. If |
Extra STAP hosts |
|
|
In |
|
Extra STAP TDI array. Default: Tie to '0 if unused. |
Extra STAP hosts |
|
|
Out |
|
Extra STAP TDO array. |
Extra STAP hosts |
|
|
Out |
|
Extra STAP TDO output enable array. |
Extra STAP hosts |
|
|
Out |
- |
Extended STAP scan control. Tie scan_in to scan_out if unused. |
STAP scan chain |
|
|
In |
1 |
Extended STAP scan data in. |
STAP scan chain |
|
|
Out |
1 |
Extended STAP scan data out. |
STAP scan chain |
|
|
Out |
- |
DFD iJTAG scan control. Tie scan_in to scan_out if unused. |
DFD iJTAG chain |
|
|
In |
1 |
DFD iJTAG scan data in. |
DFD iJTAG chain |
|
|
Out |
1 |
DFD iJTAG scan data out. |
DFD iJTAG chain |
|
|
Out |
- |
Secure DFT iJTAG scan control. Tie scan_in to scan_out if unused. |
Secure DFT iJTAG chain |
|
|
In |
1 |
Secure DFT iJTAG scan data in. |
Secure DFT iJTAG chain |
|
|
Out |
1 |
Secure DFT iJTAG scan data out. |
Secure DFT iJTAG chain |
|
|
Out |
- |
Non-secure DFT iJTAG scan control. Tie scan_in to scan_out if unused. |
Non-secure DFT iJTAG chain |
|
|
In |
1 |
Non-secure DFT iJTAG scan data in. |
Non-secure DFT iJTAG chain |
|
|
Out |
1 |
Non-secure DFT iJTAG scan data out. |
Non-secure DFT iJTAG chain |
|
|
Out |
- |
SMC fabric debug AXI request. Active when |
SMC |
|
|
In |
- |
SMC fabric debug AXI response. Default: tie to '0 if disabled. |
SMC |
|
|
Out |
- |
SMC OTP debug AXI-Lite request. Default: tie to '0 if disabled. |
SMC |
|
|
In |
- |
SMC OTP debug AXI-Lite response. Default: tie to '0 if disabled. |
SMC |
|
|
Out |
- |
SEP OTP debug AXI-Lite request. Default: tie to '0 if disabled. |
SEP |
|
|
In |
- |
SEP OTP debug AXI-Lite response. Default: tie to '0 if disabled. |
SEP |
|
|
Out |
1 |
Clock stop output from JTAG DEBUG_CONTROL or CLA clock-stop requests via CTN. |
PLL clock gates |
|
|
Out |
1 |
CLA clock stop enable from DEBUG_CONTROL register. |
Clock control logic |
|
|
Out |
1 |
JTAG boot stall override enable. |
Boot control |
|
|
Out |
1 |
JTAG boot stall value when override is asserted. |
Boot control |
|
|
Out |
|
SMC IC_RESET override slice. Struct contains |
SMC |
|
|
Out |
|
SEP IC_RESET override slice. Struct contains |
SEP |
|
|
Out |
|
External IC_RESET override slice. Struct contains |
Integrator-defined reset overrides for logic outside the SMU |
|
|
Out |
- |
Current PTAP TAP state. |
Debug infrastructure |
|
|
Out |
- |
Current decoded PTAP instruction. |
Debug infrastructure |
|
|
In |
- |
Cross trigger CSR AXI-Lite request from SMC. |
SMC |
|
|
Out |
- |
Cross trigger CSR AXI-Lite response to SMC. |
SMC |
|
|
Out |
|
Cross trigger source requests from CTM to destination sinks. |
Cross trigger sinks |
|
|
In |
|
Cross trigger source acknowledges. Unused in pulse-sync mode (mode bit = 0). Default: tie to '0 in pulse-sync mode. |
Cross trigger sinks |
|
|
In |
|
Cross trigger destination requests from source generators. Default: tie to '0 if unused. |
Cross trigger sources |
|
|
Out |
|
Cross trigger destination acknowledges. Unused in pulse-sync mode (mode bit = 0). |
Cross trigger sources |
|
|
In |
|
Clock stop requests from CLAs or other devices in the chiplet. Default: Tie to '0 if unused. |
Clock stop requesters |
|
|
Out |
|
CTP request-out data output (to pad ring). |
GPIO pad ring |
|
|
Out |
|
CTP request-out output enable. |
GPIO pad ring |
|
|
In |
|
CTP request-out loopback input. Default: tie to '0 if unused. |
GPIO pad ring |
|
|
Out |
|
CTP request-out input enable. |
GPIO pad ring |
|
|
Out |
|
CTP request-in data output. |
GPIO pad ring |
|
|
Out |
|
CTP request-in output enable. |
GPIO pad ring |
|
|
In |
|
CTP request-in data input. Default: tie to '0 if unused. |
GPIO pad ring |
|
|
Out |
|
CTP request-in input enable. |
GPIO pad ring |
|
|
Out |
|
CTP ack-in data output. |
GPIO pad ring |
|
|
Out |
|
CTP ack-in output enable. |
GPIO pad ring |
|
|
In |
|
CTP ack-in data input. Default: tie to '0 if unused. |
GPIO pad ring |
|
|
Out |
|
CTP ack-in input enable. |
GPIO pad ring |
|
|
Out |
|
CTP ack-out data output. |
GPIO pad ring |
|
|
Out |
|
CTP ack-out output enable. |
GPIO pad ring |
|
|
In |
|
CTP ack-out data input. Default: tie to '0 if unused. |
GPIO pad ring |
|
|
Out |
|
CTP ack-out input enable. |
GPIO pad ring |
|
|
In |
1 |
DFT test-mode enable (active high) for the JTAG2AXI bridges and the cross trigger CSR crossbar. Default: 0 in functional mode. |
DFT controller |
|
|
In |
1 |
DFT scan reset (active low). Unused: DTP has no reset synchronizer, so |
DFT controller, or tie high |