6.3.2. Adapting the test program

The test program does not test all of the pins on the ETM. Some are implementation-dependent and some are not tested because of complexity. Table 6.2 describes how each pin of the ETM7 is tested, and if not, how it can be tested.

Table 6.2. ETM7 signals 

SignalsHow tested
CLK, CLKEN, nRESETIf any of these are not correctly connected, the test can fail at either run time or during test verification.
TCK, TCKEN, TDI, TDO, TMS, nTRSTIf any of these are not correctly connected, the test can fail at either runtime or during test verification.
ARMTDOThis pin is not directly tested. It must be tested if an external scan chain is connected to the ETM. This can be performed by reading some data from the external scan chain using the JTAG interface.
A[31:0], RDATA[31:0], WDATA[31:0], nMREQ, SEQ nRW, MAS[1:0], nOPC, nEXECThese are tested by performing multiple memory accesses. If incorrectly connected, the test verification indicates incorrect data.
ABORTThis is tested by causing data and prefetch aborts. If this is not correctly connected, this is indicated during test verification by the absence of abort tracing.
TBITThis bit is tested by switching between ARM and Thumb state. Test verification indicates incorrect transitions if this is incorrectly connected.
INSTRVALIDThis pin is not directly tested. It is used to increase the accuracy of timing at the point that an interrupt is taken, and cannot be easily tested.
nCPI, CPA, CPBThese coprocessor signals are tested by transferring data to and from a coprocessor. Test verification indicates if these are incorrectly connected by not tracing coprocessor instructions properly. These are not tested on the ARM7TDMI and ARM7TDMI-S cores because this test bench does not include a coprocessor.
DBGRQ, DBGACKThese debug signals are tested by asserting DBGRQ to send the core into debug, and checking DBGACK is asserted in response. If any of these are not correctly connected, the test fails at either run time or during test verification.
RANGEOUT0, RANGEOUT1These are tested by activating the EmbeddedICE watchpoint units within the ARM core. If any of these are not correctly connected, the test fails at runtime. These are not tested on the ARM920T or ARM922T cores. See the ARM9TDMI errata document for an explanation.
BIGENDIf this signal is connected incorrectly, this is indicated during test verification.
PROCID[31:0], PROCIDWRThese are tested by toggling all the bits in the Process ID register. If any of these are not correctly connected, this is indicated during test verification. These are not tested on the ARM7TDMI and ARM7TDMI-S cores because they do not exist.
PIPESTAT[2:0], TRACEPKT[15:0], TRACESYNCThese trace port signals are tested by analyzing the trace output. If any of these are not correctly connected, this are indicated during test verification.
PWRDOWNThis is used to gate the CLK input to the ETM. If this is not correctly connected, the test fails at either run time or during test verification.
ETMENThis is tested by the test bench and the test program. If this is not correctly connected, the test fails at either runtime or during test verification.
PORTMODE[1:0], CLKDIVTWOEN The EtmMuxDemux block incorrectly formats the data if these signals are incorrectly connected. If any of these are not correctly connected, this is indicated during test verification.
PORTSIZE[2:0]These are only tested when using the ETB. If incorrectly connected, this is indicated during test verification. If not using the ETB, the use of PORTSIZE is implementation defined and is not tested by the test program.
FIFOFULLThis is not tested because a complementary signal is not available on the ARM7TDMI, ARM7DMI-S, or ARM720T cores.
MMDA[31:0], MMDn, MREQ, MMDnRW, MMDnOPC, MMDMAS[1:0], MMDCTRL[7:0], MMDIN[15:0], EXTOUT[3:0], EXTIN[3:0] These are external signals whose use is implementation-defined. They are not tested by the test program, but must be tested if you intend to use these connections. Appropriate locations for these modifications are indicated in the test program.
SYSOPT[7:0]The test program reads the ETM System Configuration register through the JTAG port to verify it is connected as expected. If this is not correctly connected, the test fails at run time. The file log.dsm_bst indicates the stage at which the test failed.

Table 6.3 lists how each pin of the ETM9 is tested, and if not, how it may be tested.

Table 6.3. ETM9 signals 

SignalsHow tested
CLK, CLKEN, nRESETIf any of these are not correctly connected, the test fails at either runtime or during test verification.
TCK, TCKEN, TDI, TDO, TMS, nTRSTIf any of these are not correctly connected, the test fails at either runtime or during test verification. In ARM926EJ-S, ARM946E-S and ARM966E-S-based systems, TCKEN is generated by a Linear Feedback Shift Register (LFSR) to ensure the connection is correct.
ARMTDOThis pin is not directly tested. It must be tested if an external scan chain is connected to the ETM. This may be performed by reading some data from the external scan chain using the JTAG interface.
DA[31:0], DD[31:0], DDIN[31:0], DnMREQ, DSEQ, DnRW, DMAS[1:0], IA[31:0], ID31To25[31:25], ID15To11[15:11], InMREQ, ISEQ, INSTREXECThese are tested by performing multiple memory accesses. If incorrectly connected, the test verification indicates incorrect data.
DABORTThis pin is not directly tested. It is used by the ETM to control data comparator behavior, and cannot easily be tested.
ITBITThis bit is tested by switching between ARM and Thumb state. Test verification indicates incorrect transitions if this is incorrectly connected.
IJBIT, ZIFIRST, ZILASTThese pins are tested by switching between ARM and Java state. Test verification indicates incorrect transitions if this is incorrectly connected. This is only tested on an ARM926EJ-S core because it supports Java. They are not tested on ARM920T, ARM922T, ARM946E-S, or ARM966E-S cores and must be tied LOW.
INSTRVALIDThis pin is not directly tested. It is used to increase the accuracy of timing at the point an interrupt is taken, and cannot be easily tested. The ARM920T or ARM922T cores do not support this signal.
CHSD[1:0], CHSE[1:0]These coprocessor signals are tested by transferring data to and from a coprocessor. Test verification indicates if these are incorrectly connected by not tracing coprocessor instructions properly.
LATECANCELThis coprocessor signal is tested by causing a Data Abort in the instruction preceding a coprocessor instruction. If it is connected incorrectly, this is indicated during test verification.
PASSIf this is not correctly connected, the test fails during test verification.
DBGRQ, DBGACKThese debug signals are tested by asserting DBGRQ to send the core into debug, and checking DBGACK is asserted in response. If any of these are not correctly connected, the test may fail at either run time or during test verification.
RANGEOUT[1:0] These are tested by activating the EmbeddedICE watchpoint units within the ARM core. If any of these are not correctly connected, the test fails at runtime.
BIGEND, HIVECSIf these pins are connected incorrectly, this is indicated during test verification.
PROCID[31:0], PROCIDWRThese are tested by toggling all the bits in the Process ID register. If any of these are not correctly connected, this is indicated during test verification.
PIPESTAT[2:0], TRACEPKT[15:0], TRACESYNCThese trace port signals are tested by analyzing the trace output. If any of these are not correctly connected, this is indicated during test verification.
PWRDOWNThis is used to gate the CLK input to the ETM. If this is not correctly connected, the test fails at either runtime or during test verification.
ETMENThis is tested by the test bench and the test program. If this is not correctly connected, the test fails at either runtime or during test verification.
PORTMODE[1:0], CLKDIVTWOEN The ETMMuxDemux module incorrectly formats the data if these signals are incorrectly connected. If any of these are not correctly connected, this is indicated during test verification.
PORTSIZE[2:0]These are only tested when using the ETB. If incorrectly connected, this is indicated during test verification. If not using the ETB, the use of PORTSIZE is implementation defined. This pin is not tested by the test program.
FIFOFULLThis is tested by enabling FIFOFULL stalling on the ETM9. This signal is not tested on the ARM920T or ARM922T cores, because they do not support FIFOFULL stalling. If it is incorrectly connected, ETM FIFO overflow occurs. See Running the Trace Comparison Script for details on how to check if FIFO overflow has occurred.
MMDA[31:0], MMDn, MREQ, MMDnRW, MMDnOPC, MMDMAS[1:0], MMDCTRL[7:0], MMDIN[15:0], EXTOUT[3:0], EXTIN[3:0] These are external signals whose use is implementation-defined. They are not tested by the test program, but must be tested if you intend to use these connections. Appropriate locations for these modifications are indicated in the test program.
SYSOPT[7:0]The test program reads the ETM System Configuration register through the JTAG port to verify it is connected as expected. If this is not correctly connected, the test fails at run time. The file log.dsm_bst indicates the stage at which the test failed.
WSI, WSO, MUXINSEL, MUXOUTSEL, WSEI, WSEO, WEDGE, SCANMODEThese are Design For Test signals whose use is implementation defined. They are not directly tested by the test programs, but must be tested if you intend to use these connections.
Copyright © 1999-2002, 2006 ARM Limited. All rights reserved.ARM DDI 0157G
Non-Confidential