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:

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