If I have third party devices in the JTAG chain.How do I add the IDCODE, IR length, and name for the unknown devices in Vivado 2014.2 and newer versions?
You will need to create a .csv file containing device properties, for example devices.csv.
The format is comma separated with two header rows, the first containing the name of each column and the second containing the type of each column.
To load the custom device properties, copy the devices.csv file into your ..Xilinx/Vivado/2016.x/bin directory, and start hw_server in a separate CMD Prompt (Not using Vivado Tcl shell or from the Vivado Tcl console) using the following Tcl command:
hw_server -e "set device-info-file <file>.csv"
The order of entries in the .csv file does not correspond to the order of devices in the scan chain.
You do not need to include the Xilinx devices in the CSV file. Just the non-Xilinx devices.
The .csv file adds entries into a table which maps the IDCODE to device properties.
The order of devices in a scan chain is determined by reading the IDCODE from the scan chain and then looking up the IDCODEs in the table to find the device properties, like IR length, etc.
Currently, we do not have a way to manually enumerate devices on a scan chain.
The main use case for this would be for devices that do not have an IDCODE.
The mask field specifies which bits of the IDCODE are significant for the table lookup.
The 4 most significant bits of the IDCODE are a version number and it is usually not needed for the table lookup, so the mask is typically 0x0fffffff, i.e. 268435455 decimal.
If all bits are significant then the mask should be 0xffffffff.
A working example .csv file is attached to this answer record.