boot_hw_device - 2023.2 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2023.2 English

Issue JTAG Program command to hw_device


boot_hw_device [‑disable_done_check] [‑timeout <arg>] [‑quiet] [‑verbose]


Name Description
[-disable_done_check] Disable done check for boot device
[-timeout] Time out for boot (seconds) Default: default
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
<hw_device> Target hw_device connection




Issue JTAG PROGRAM command to the hw_device (FPGA).

The boot_hw_device command triggers the FPGA boot and board startup sequence. The boot sequence starts the FPGA configuration process to clear the device of any prior programming, and then to load a new program, depending on the mode pin settings.

The hw_device will boot based on the mode pin settings. If the mode pins of the FPGA on the device are set to JTAG mode, or the interface is not active (for example, the PROM is not configured) the net effect of the boot_hw_device command is to clear the prior programming.

This command returns a 1 if it detects that the DONE pin has gone HIGH, or when the device has been cleared, otherwise it returns 0.


-disable_done_check - (Optional) Disable done check for boot device. Use this option when you intend to clear a programmed device without reprogramming it, in JTAG mode for instance.

-timeout <arg> - (Optional) Specify the timeout value in seconds for when the boot_hw_device command will stop trying to boot the device.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<hw_device> - (Optional) Specify the hw_device object to send the JTAG boot command to. The hw_device must be specified as an object as returned by the get_hw_devices or current_hw_device commands.


The following example creates a memory device and associates it with the current_hw_device, assigning various properties of the hw_cfgmem object. Then it uses the write_cfgmem command to format the design bitstream, and associate the cfgmem (.mcs) file with the PROGRAM.FILE property of the hw_cfgmem object. Then it programs the hw_cfgmem object with the data from the MCS file starting at the specified offset address. After programming, the boot_hw_device command is issued for the current_hw_device and the DONE pin is checked, and an appropriate message is returned:

set memObj [create_hw_cfgmem -hw_device [current_hw_device] \
   [lindex [get_cfgmem_parts {28f00ap30t-bpi-x16}] 0]]
set_property PROGRAM.BLANK_CHECK  1 $memObj
set_property PROGRAM.ERASE  1 $memObj
set_property PROGRAM.CFG_PROGRAM  1 $memObj
set_property PROGRAM.VERIFY  1 $memObj
write_cfgmem -force -format MCS -size 64 -interface BPIx16 \
   -loadbit "up 0x0 ./project_netlist.runs/impl_1/sinegen_demo.bit" \
set_property PROGRAM.FILE ./config_28f00ap30t.mcs $memObj
program_hw_cfgmem -hw_cfgmem $memObj
if {[boot_hw_device [current_hw_device]] == 1} {
   puts stderr "DONE signal is HIGH"
} else {
   puts stderr "DONE signal is LOW"