device_ir_shift (::quartus::jtag)
The following table displays information for the device_ir_shift Tcl command:
Tcl Package and Version |
Belongs to ::quartus::jtag 1.0 |
|||
Syntax | device_ir_shift [-h | -help] [-long_help] -ir_value <instruction register value> [-no_captured_ir_value] | |||
Arguments | -h | -help | Short help | ||
-long_help | Long help with examples and possible return values | |||
-ir_value <instruction register value> | Value to be written into the instruction register in the JTAG tap controller of the open device. Operand must be of a TCL numerical type such as decimal (10), hexadecimal (0xa), or octal number (012) | |||
-no_captured_ir_value | Option to not return the captured instruction register value. If this is specified, this IR scan may be packed together with the subsequent IR or DR scan until the device is unlocked or a captured value is requested | |||
Description |
Writes the specified value into the instruction register of the JTAG tap controller of the open device. Returns the captured instruction register value. The captured value return can be disabled to improve the JTAG communication speed by packing multiple IR or DR scans together. The instruction register length is determined automatically by the Quartus Prime JTAG server. The device must be locked first before this operation. |
|||
Example Usage |
# List all available programming hardware, and select the USB-Blaster. # (Note: this example assumes only one USB-Blaster is connected.) puts "Programming Hardware:" 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: A device has not been locked; exclusive communication must be obtained first. | ||
TCL_ERROR | 1 | ERROR: A device has been locked by another application; exclusive communication cannot be granted within the specified timeout period. |