HOLDOFF
The HOLDOFF
keyword is used to group writes together when timing is important.
The following XJEase statements are not allowed inside a HOLDOFF
block:
- CHECKCHAIN
- CONNTEST
- RUNSTAPL
- RUNSVF
- SET statements that require External Hardware.
- SET statements that require both PIO and JTAG scans at the same time.
- Combining JTAG and SWD statements.
If entry to the first HOLDOFF
block occurs before any other hardware access, any defined reset sequence will be executed and the IDs of the devices in the chain will be checked.
Returning from a function while inside a HOLDOFF
block using the RETURN keyword, implicitly closes the HOLDOFF
block.
FLUSH may be used inside a HOLDOFF
block. It will temporarily disable the HOLDOFF
and perform all outstanding writes. The HOLDOFF
is then enabled again.
Read scans may be performed inside a HOLDOFF
block. They will temporarily disable the HOLDOFF
and perform all outstanding writes and the read. The HOLDOFF
is then enabled again.
SWD statements are supported inside HOLDOFF
. Within a HOLDOFF
they may be combined with PIO statements but not JTAG.
Example
HOLDOFF FOR i := 0 FOR BUS_WIDTH SET ADDR := address[22..0]; SET nWE := 0, nCE0 := 0, nOE := 1, DATA := code; SET nCE0 := 1, DATA := I, nWE := 1; END; END;
This will ensure that all the JTAG chain writes are grouped together and occur as quickly as possible.
For manipulating raw JTAG inside a HOLDOFF
, declare the raw JTAG block before the HOLDOFF
.
JTAG HOLDOFF SET TDI := 0; END; END;
For a more detailed discussion of when to use the HOLDOFF
command, see Accelerating JTAG chains.
See Also
XJTAG v4.1.100