Device

The Device class is a container representing a Xilinx device. Device has methods for programming, memory access, and contains the detected collection of debug cores. The collection of detected devices is held in the session

see chipscopy.Session.devices

class chipscopy.api.device.device.Device(*, hw_server, cs_server, device_identification, disable_core_scan)[source]

Bases: object

The Device class represents a single Xilinx Versal device. Device has methods for programming, memory access, and contains the detected collection of debug cores. The collection of detected devices is held in the session - see session.devices.

property ibert_cores

Returns: list of detected IBERT cores in the device

Return type

QueryList[IBERT]

property vio_cores

Returns: list of detected VIO cores in the device

Return type

QueryList[VIO]

property ila_cores

Returns: list of detected ILA cores in the device

Return type

QueryList[ILA]

property trace_cores

Returns: list of detected Trace cores in the device

Return type

QueryList[Trace]

property pcie_cores

Returns: list of detected PCIe cores in the device

Return type

QueryList[PCIe]

property noc_core

Returns: List with one NOC core for the device

Return type

QueryList[NocPerfmon]

property ddrs

Returns: list of detected DDRMC cores in the device

property sysmon_root

Returns: List with one SysMon core for the device

Return type

QueryList[Sysmon]

property memory_target_names

Returns: list of supported memory targets

property memory

Returns: the memory access for the device

Return type

QueryList[Memory]

program(pdi_file_path, *, skip_reset=False, show_progress_bar=True, done=None)[source]

Program the device with a given PDI file.

Parameters
  • pdi_file_path (Union[str, Path]) – PDI file path

  • skip_reset (bool) – False = Do not reset device prior to program

  • show_progress_bar (bool) – False if the progress bar doesn’t need to be shown

  • done (Optional[NewType()(DoneFutureCallback, Callable[[ForwardRef], None])]) – Optional async future callback

discover_and_setup_cores(*, hub_address_list=None, ltx_file=None, ila_scan=True, vio_scan=True, noc_scan=False, ddr_scan=True, pcie_scan=True, ibert_scan=False, sysmon_scan=False)[source]

Scan device for debug cores. This may take some time depending on what gets scanned.

Parameters
  • hub_address_list (Optional[List[int]]) – List of debug hub addresses to scan

  • ltx_file (Optional[str]) – LTX file (which contains debug hub addresses)

  • ila_scan (bool) – True=Scan Device for ILAs

  • vio_scan (bool) – True=Scan Device for VIOs

  • ibert_scan (bool) – True=Scan Device for IBERTs

  • pcie_scan (bool) – True=Scan Device for PCIEs

  • noc_scan (bool) – True=Scan Device for NOC

  • ddr_scan (bool) – True=Scan Device for DDRs

  • sysmon_scan (bool) – True=Scan Device for System Monitor

memory_write(address, values, *, size='w', target=None)[source]

Write list of values to given memory address. This method is slow because it locates the memory context in the target tree every time. If you want to execute a large number of memory operations, grab a memory context and do the operations in batch.

Note: This method should not be used in inner loops. It is not the fastest because it looks up

the memory target every time. Inner loops should just call the find_memory_target once.

memory_read(address, num=1, *, size='w', target=None)[source]

Read num values from given memory address. This method is slow because it locates the memory context in the target tree every time. If you want to execute a large number of memory operations, grab a memory context and do all the operations in batch.

Note: This method should not be used in inner loops. It is not the fastest because it looks up

the memory target every time. Inner loops should just call the find_memory_target once.

Return type

List[int]