In this example, pdi_dbg_util is used to connect 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 will show all the targets on the system. The output will be 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 is used to pass in the target index of the
analyze-hw
subcommand.
Shown 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 could have been 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 would have displayed
additional register information related to the issue.