OPAE Python API Reference¶
The reference documentation for the OPAE Python API and is grouped into the following sections:
Module Types, Methods, and Constants¶
shared_buffer factory method - allocate a shared buffer object. Args:
handle: An accelerator handle object that identifies an open accelerator obect to share the buffer with. len: The length in bytes of the requested buffer.
-
opae.fpga.
enumerate
(*args, **kwargs)¶ Overloaded function.
enumerate(arg0: List[opae.fpga._opae.properties]) -> List[opae::fpga::types::token]
Get a list of tokens for the given search criteria.
Args:
- props(list): A list of properties objects that define the search criteria.
All OPAE properties in each properties object make up one filter. All properties objects are combined in a union.
enumerate(**kwargs) -> List[opae::fpga::types::token]
Get a list of tokens from zero or one filters as defined by kwargs. If kwargs is empty, then no filter is used. If kwargs is not empty, then one properties object is created using the kwargs.
-
opae.fpga.
errors
(arg0: opae.fpga._opae.token) → List[opae.fpga._opae.error]¶ Get a list of error objects in an FPGA resource. Each error object represents an error register contained in the resource.
- Args:
tok(token): Token representing an FPGA resource.
-
opae.fpga.
open
(tok: opae.fpga._opae.token, flags: int = 0) → opae::fpga::types::handle¶ Create a new handle object from a token.
-
opae.fpga.
register_event
(handle: opae.fpga._opae.handle, event_type: opae.fpga._opae.fpga_event_type, flags: int = 0) → opae::fpga::types::event¶ Factory method used to create events registered to a particular event type.
- Args:
handle: A handle to an OPAE resource. type(fpga_event_type): The event type to register for. Valid event types are:
EVENT_ERROR, EVENT_INTERRUPT, EVENT_POWER_THERMAL
flags: Event registration flags that control registration behavior.
Fundamental Types¶
Properties¶
-
class
opae.fpga.
properties
¶ properties class is a container class for OPAE resource properties.
-
__init__
(*args, **kwargs)¶ Overloaded function.
__init__(self: opae.fpga._opae.properties, **kwargs) -> None
Create a new properties object. If kwargs is not included then the properties object is created with no property values set. If one of the kwargs keys is an OPAE property name then the kwargs value is used to initialize the corresponding value in the properties object.
Kwargs:
parent (token): Token object representing parent resource.
guid (str): GUID (as a string) of the resource.
type (fpga_objtype): The object type - DEVICE or ACCELERATOR.
segment (uint16_t) : The PCIe segment (or domain) number.
bus (uint8_t) : The PCIe bus number.
device (uint8_t) : The PCIe device number.
function (uint8_t) : The PCIe function number.
socket_id (uint8_t): The socket ID encoded in the FIM.
num_slots (uint32_t): Number of slots available in the FPGA.
num_errors (uint32_t): Number of error registers in the resource.
bbs_id (uint64_t): The BBS ID encoded in the FIM.
bbs_version (tuple): The version of the BBS.
vendor_id (uint16_t): The vendor ID in PCI config space.
device_id (uint16_t): The device ID in PCI config space.
model (str): The model of the FPGA.
local_memory_size (uint64_t): The size (in bytes) of the FPGA local memory.
num_mmio (uint32_t): The number of mmio spaces.
num_interrupts (uint32_t): The number of interrupts supported by an accelerator.
accelerator_state (fpga_accelerator_state): The state of the accelerator - ASSIGNED or UNASSIGNED.
object_id (uint64_t): The 64-bit number unique within a single node or system.
interface (fpga_interface): The interface type - IFC_DFL, IFC_VFIO, or IFC_SIM.
__init__(self: opae.fpga._opae.properties, arg0: opae::fpga::types::token) -> None
Get properties from a token object. Args:
tok (token): The token to read properties from.
__init__(self: opae.fpga._opae.properties, arg0: opae::fpga::types::handle) -> None
Get properties from a handle object. Args:
h (handle): The handle to read properties from.
-
property
accelerator_state
¶ Get or set the state of an accelerator. The accelerator state is of type fpga_accelerator_state.
-
property
bbs_id
¶ Get or set the BBS ID property of a resource. The resource must be of type DEVICE
-
property
bbs_version
¶ Get or set the BBS version property of a resource. The resource must be of type DEVICE
-
property
bus
¶ Get or set the PCIe bus property of a resource.
-
property
capabilities
¶ Get or set the capabilities property of a resource. This is taken directly from the capabilities CSR in the FIM.
-
property
device
¶ Get or set the PCIe device property of a resource.
-
property
function
¶ Get or set the PCIe function property of a resource.
-
property
model
¶ Get or set the model property of a resource.
-
property
num_interrupts
¶ Get or set the number of interrupt vectors supported by a resource.
-
property
num_mmio
¶ Get or set the number of mmio spaces in a resource.
-
property
num_slots
¶ Get or set the number of slots property of a resource. The resource must be of type DEVICE
-
property
object_id
¶ Get or set the Object ID property of a resource. The object id is a 64-bit identifier that is unique within a single node or system. I represents a similar concept as the token but can be serialized for use across processes
-
property
parent
¶ Get or set the token representing a parent object of a resource. The resource must be of type ACCELERATOR
-
property
socket_id
¶ Get or set the Socket ID property of a resource. The socket id is encoded in of the FIM CSRs
-
property
vendor_id
¶ Get or set the vendor ID property of a resource. The vendor ID is part of the PCI ID and is assigned by the PCI SIG consortium.
-
Token¶
-
class
opae.fpga.
token
¶ Token for referencing an OPAE resource.
A token object serves as a reference so a specific resource in the system. Holding a token does not constitute ownership of an OPAE resource. It is used to query information about a resource, or to acquire ownership by calling fpga.open module method.
-
find
(self: opae.fpga._opae.token, name: str, flags: int = <fpga_sysobject_flags.SYSOBJECT_GLOB: 2>) → opae::fpga::types::sysobject¶ Find a sysobject instance from a valid token object. Args:
flags: Flags that control behavior of finding sub-objects. SYSOBJECT_GLOB is used to indicate that wildcard patterns (*) are allowed. SYSOBJECT_RECURSE_ONE is used to indicate that the find routine should recurse one level. SYSOBJECT_RECURSE_ALL is used to indicate that the find routine should recurse to all children.
-
Handle¶
-
class
opae.fpga.
handle
¶ -
__enter__
(self: opae.fpga._opae.handle) → opae.fpga._opae.handle¶ Context manager protocol enter function. Simply returns the handle object.
-
__exit__
(self: opae.fpga._opae.handle, *args) → None¶ Context manager protocol exit function. Closes the resource identified by this handle and currently does nothing with the exit arguments.
-
close
(self: opae.fpga._opae.handle) → opae.fpga._opae.fpga_result¶ “Close an accelerator associated with handle.”
-
read_csr32
(self: opae.fpga._opae.handle, offset: int, csr_space: int = 0) → int¶ Read 32 bits from a CSR belonging to a resource associated with a handle. Args:
offset: The register offset. csr_space: The CSR space to read from. Default is 0.
-
read_csr64
(self: opae.fpga._opae.handle, offset: int, csr_space: int = 0) → int¶ Read 64 bits from a CSR belonging to a resource associated with a handle. Args:
offset: The register offset. csr_space: The CSR space to read from. Default is 0.
-
reset
(self: opae.fpga._opae.handle) → None¶ Reset the accelerator associated with this handle. The accelerator must be opened.
-
write_csr32
(self: opae.fpga._opae.handle, offset: int, value: int, csr_space: int = 0) → None¶ Write 32 bits to a CSR belonging to a resource associated with a handle. Args:
offset: The register offset. value: The 32-bit value to write to the register. csr_space: The CSR space to write from. Default is 0.
-
write_csr64
(self: opae.fpga._opae.handle, offset: int, value: int, csr_space: int = 0) → None¶ Write 64 bits to a CSR belonging to a resource associated with a handle. Args:
offset: The register offset. value: The 64-bit value to write to the register. csr_space: The CSR space to write from. Default is 0.
-
Event¶
-
class
opae.fpga.
event
¶ event object are used to register for OPAE events. Currently, the event types are:
EVENT_ERROR EVENT_INTERRUPT EVENT_POWER_THERMAL
-
os_object
(self: opae.fpga._opae.event) → int¶ Get an OS specific object from the event which can be used to subscribe for events. On Linux, the object corresponds to a file descriptor that can be used with select/poll/epoll calls.
-
Error¶
-
class
opae.fpga.
error
¶ error object is used to represent an error register in an FPGA resource. It holds two read-only properties, name and can_clear and it can also be used to read the raw register value from its corresponding error register.
-
property
can_clear
¶ Indicates if the error register can be cleared - read-only property
-
property
name
¶ Error register name - read-only property
-
read_value
(self: opae.fpga._opae.error) → int¶ Read the raw value from the error register.
-
property
SysObject¶
-
class
opae.fpga.
sysobject
¶ Wraps the OPAE fpga_object primitive as a Python object.
-
__getattr__
(self: opae.fpga._opae.sysobject, arg0: str) → opae.fpga._opae.sysobject¶ Get a sysobject instance from a valid sysobject. The parent sysobject must be a container type object.
-
__getitem__
(*args, **kwargs)¶ Overloaded function.
__getitem__(self: opae.fpga._opae.sysobject, arg0: str) -> opae.fpga._opae.sysobject
Get a sysobject instance from a valid sysobject. The parent sysobject must be a container type object.
__getitem__(self: opae.fpga._opae.sysobject, arg0: int) -> object
Get a byte from the sysobject at a given index. Raises RuntimeError if the sysobject instance is a container type.
__getitem__(self: opae.fpga._opae.sysobject, arg0: slice) -> str
Get a slice of bytes from the sysobject at a given offset. Raises RuntimeError if the sysobject instance is a container type.
-
bytes
(self: opae.fpga._opae.sysobject) → str¶ Get bytes from the sysobject. Raises RuntimeError if the sysobject instance is a container type.
-
find
(self: opae.fpga._opae.sysobject, name: str, flags: int = 0) → opae.fpga._opae.sysobject¶ Find a sysobject instance from a valid sysobject. The parent sysobject must be a container type object.
-
read64
(self: opae.fpga._opae.sysobject) → int¶
-
size
(self: opae.fpga._opae.sysobject) → int¶
-
write64
(self: opae.fpga._opae.sysobject, arg0: int, arg1: int) → None¶
-