Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 9/26/2022
Public

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

Document Table of Contents

4.1.22.7. device_virtual_dr_shift (::quartus::jtag)

The following table displays information for the device_virtual_dr_shift Tcl command:

Tcl Package and Version

Belongs to ::quartus::jtag

Syntax device_virtual_dr_shift [-h | -help] [-long_help] [-dr_value <data register value> ] -instance_index <instance index> -length <data register length> [-no_captured_dr_value] [-show_equivalent_device_ir_dr_shift] [-value_in_hex]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-dr_value <data register value> Value of string operand type in either default binary or hexadecimal format to be written into the data register in this instance
-instance_index <instance index> The index of the virtual JTAG instance
-length <data register length> Length of the data register in this instance
-no_captured_dr_value Option to not return the data instruction register value
-show_equivalent_device_ir_dr_shift Option to show equivalent device ir dr shifts performed by this command
-value_in_hex Option to specify that the value string is represented in hexadecimal format
Description
		Writes the specified value into the data register of
the JTAG tap controller of the open device. Returns
the captured data register value. The captured value
return can be disabled to improve the JTAG
communication speed by packing multiple IR or DR scans
together.

The value is specified using either a binary string or
a hexadecimal string. The bit on the left most side is
the first bit shifted in.  For example, using the
binary string "010001", the first bit shifted into the
dr register is 1; the last bit is 0.  The same string
can be represented in hexadecimal as "11".

The device must be locked first, and the target
instance must be activated using the
device_virtual_ir_shift command before this
operation. Moreover, the device should be locked
before the virtual IR shift operation to prevent
another application from activating another instance.
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

# The follow virtual JTAG IR and DR shift sequence engage with
# the example virtual JTAG instance.
# 
# Two instructions: SAMPLE (1) FEED (2)
# SAMPLE instruction samples a 8-bit bus; the captured value shows the number of sample performed.
# FEED instruction supplies a 8-bit value to the logic connected to this instance.
# Both data registers corresponding to the IR are 8 bit wide.

# Send SAMPLE instruction to IR, read captured IR for the sampling number.
# Capture the DR register for the current sampled value.
device_lock -timeout 10000
puts "Current LED Value (sample #[device_virtual_ir_shift -instance_index 0 -ir_value 1]): [device_virtual_dr_shift -instance_index 0  -length 8 -value_in_hex]"
device_unlock

# Send FEED instruction to IR, read a two-digit hex string from the console, 
# then send the new value to the DR register.
puts "\nType in 2 digits in hexadecimal to update the LED:"
gets stdin update_value

device_lock -timeout 10000
device_virtual_ir_shift -instance_index 0 -ir_value 2 -no_captured_ir_value
device_virtual_dr_shift -instance_index 0  -length 8 -dr_value $update_value -value_in_hex -no_captured_dr_value
device_unlock

# Close device
close_device
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Captured value cannot be disabled at the time when no value is shifted into data register.
TCL_ERROR 1 ERROR: The specified virtual JTAG instance cannot be found.
TCL_ERROR 1 ERROR: One of the options, mfg_id, type_id and version is specified, but not all. All of them are required.
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.
TCL_ERROR 1 ERROR: The length of the value string specified does not match the length parameter specified.