In this example, pdi_dbg_util connects to host "myhost" to analyze a Versal device in situ. Before running the subcommand
analyze-hw, the target index must be determined.
To determine the target index, we first run the following command:
pdi_dbg_util list-targets -u TCP:myhost:3121
Running this command shows all the targets on the system. The output is similar to the following:
Targets available on hardware server TCP:myhost:3121 :
Index Device JTAG Target
------- -------- -------------------------------------------
0 xcvm1802 jsn-VMK180 FT4232H-421952113768A-04caa093-0
The output indicates that the xcvm1802 device is located at target index 0. In
the case of longer JTAG scan chains, all detected devices on the chain are
displayed. This information passes in the target index of the analyze-hw subcommand.
Below is an example of the analyze-hw
subcommand. For this example, the design has been configured with a PDI intended for
the xcvc1902 device. However, in this example, it is anticipated to fail as the part
on the board is xcvm1802. In this scenario, the "-t" flag is set with a value of 0.
It is noteworthy that for this specific JTAG chain, the "-t" option can be omitted because the default target index value is 0. Nevertheless, it was incorporated to showcase the use of the target index option.
pdi_dbg_util analyze-hw -p design_top.pdi -t 0 -u TCP:myhost:3121
This command produces output similar to the following:
Analyzing Error Status....
No Errors found for rom
PLM Major Error: 0x0326
--------------------------------------------------
Name: XLOADER_ERR_GEN_IDCODE
Description: Error if Vivado configured part (IDCODE) mismatches with the actual part
PLM Minor Error: 0x0014
--------------------------------------------------
Name: XLOADER_ERR_IDCODE
Description: IDCODE mismatch
As shown, the analyze-hw subcommand requires
no details about the target device. This is because the analyze-hw subcommand automatically detects the device details based
on the selected target index. Additionally, the subcommand takes care of reading the
log and providing additional status information, so you do not need to supply a log
directly. If more details were required to analyze this type of error, the command
displays additional register information related to the issue.