Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 6/20/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.1.23.4. device_lock (::quartus::jtag)

The following table displays information for the device_lock Tcl command:

Tcl Package and Version

Belongs to ::quartus::jtag

Syntax device_lock [-h | -help] [-long_help] -timeout <timeout>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-timeout <timeout> The amount of time in millisecond to wait for the access to the device.
Description
Obtain an exclusive JTAG communication to the device
		for the subsequent IR and DR shift operations. The
		device must be locked before any instruction and/or
		data register shift operation.

This should be used as little time as possible as it
		denies the access of other applications to this
		chain. The command, unlock, should be called as soon
		as possible to allow other applications to access the
		device.
Example Usage
# List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
	puts $hardware_name
	if { [string match "USB-Blaster*" $hardware_name] } {
		set usbblaster_name $hardware_name
	}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";

# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
	puts $device_name
	if { [string match "@1*" $device_name] } {
		set test_device $device_name
	}
}
puts "\nSelect device: $test_device.\n";

# Open device 
open_device -hardware_name $usbblaster_name -device_name $test_device

# Retrieve device id code.
# IDCODE instruction value is 6; The ID code is 32 bits long.

# IR and DR shift should be locked together to ensure that other applications 
# will not change the instruction register before the id code value is shifted
# out while the instruction register is still holding the IDCODE instruction.
device_lock -timeout 10000
device_ir_shift -ir_value 6 -no_captured_ir_value
puts "IDCODE: 0x[device_dr_shift -length 32 -value_in_hex]"
device_unlock

# Close device
close_device
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: No device has been opened.
TCL_ERROR 1 ERROR: JTAG communication error is detected. It can be caused by the hardware failure and signal integrity in the JTAG chain. Try to restart.
TCL_ERROR 1 ERROR: A device was locked.
TCL_ERROR 1 ERROR: A device has been locked by another application; exclusive communication cannot be granted within the specified timeout period.