Visible to Intel only — GUID: mwh1410384974144
Ixiasoft
Visible to Intel only — GUID: mwh1410384974144
Ixiasoft
8.5. Tcl interface for the In-System Sources and Probes Editor
The Tcl interface for the In-System Sources and Probes Editor provides a powerful platform to help you debug your design. The Tcl interface is especially helpful for debugging designs that require toggling multiple sets of control inputs. You can combine multiple commands with a Tcl script to define a custom command set.
Command | Argument | Description |
---|---|---|
start_insystem_source_probe | -device_name <device name> -hardware_name <hardware name> | Opens a handle to a device with the specified hardware. Call this command before starting any transactions. |
get_insystem_source_ probe_instance_info | -device_name <device name> -hardware_name <hardware name> | Returns a list of all ALTSOURCE_PROBE instances in your design. Each record returned is in the following format: {<instance Index>, <source width>, <probe width>, <instance name>} |
read_probe_data | -instance_index <instance_index> -value_in_hex (optional) | Retrieves the current value of the probe. A string is returned that specifies the status of each probe, with the MSB as the left-most bit. |
read_source_data | -instance_index <instance_index> -value_in_hex (optional) | Retrieves the current value of the sources. A string is returned that specifies the status of each source, with the MSB as the left-most bit. |
write_source_data | -instance_index <instance_index> -value <value> -value_in_hex (optional) | Sets the value of the sources. A binary string is sent to the source ports, with the MSB as the left-most bit. |
end_insystem_source_probe | None | Releases the JTAG chain. Issue this command when all transactions are finished. |
The example shows an excerpt from a Tcl script with procedures that control the ALTSOURCE_PROBE instances of the design as shown in the figure below. The example design contains a DCFIFO with ALTSOURCE_PROBE instances to read from and write to the DCFIFO. A set of control muxes are added to the design to control the flow of data to the DCFIFO between the input pins and the ALTSOURCE_PROBE instances. A pulse generator is added to the read request and write request control lines to guarantee a single sample read or write. The ALTSOURCE_PROBE instances, when used with the script in the example below, provide visibility into the contents of the FIFO by performing single sample write and read operations and reporting the state of the full and empty status flags.
## Setup USB hardware - assumes only USB Blaster is installed and ## an FPGA is the only device in the JTAG chain set usb [lindex [get_hardware_names] 0] set device_name [lindex [get_device_names -hardware_name $usb] 0] ## write procedure : argument value is integer proc write {value} { global device_name usb variable full start_insystem_source_probe -device_name $device_name -hardware_name $usb #read full flag set full [read_probe_data -instance_index 0] if {$full == 1} {end_insystem_source_probe return "Write Buffer Full" } ##toggle select line, drive value onto port, toggle enable ##bits 7:0 of instance 0 is S_data[7:0]; bit 8 = S_write_req; ##bit 9 = Source_write_sel ##int2bits is custom procedure that returns a bitstring from an integer ## argument write_source_data -instance_index 0 -value /[int2bits [expr 0x200 | $value]] write_source_data -instance_index 0 -value [int2bits [expr 0x300 | $value]] ##clear transaction write_source_data -instance_index 0 -value 0 end_insystem_source_probe } proc read {} { global device_name usb variable empty start_insystem_source_probe -device_name $device_name -hardware_name $usb ##read empty flag : probe port[7:0] reads FIFO output; bit 8 reads empty_flag set empty [read_probe_data -instance_index 1] if {[regexp {1........} $empty]} { end_insystem_source_probe return "FIFO empty" } ## toggle select line for read transaction ## Source_read_sel = bit 0; s_read_reg = bit 1 ## pulse read enable on DC FIFO write_source_data -instance_index 1 -value 0x1 -value_in_hex write_source_data -instance_index 1 -value 0x3 -value_in_hex set x [read_probe_data -instance_index 1 ] end_insystem_source_probe return $x }