CYNQ  0.3.0
Framework to develop FPGA applications in C++ with the easiness of PYNQ
cynq::UltraScale Class Reference

UltraScale class Provides an interface to access IP Cores in Xilinx FPGAs, the compatible devices are the following: ZCU102, ZCU106, K26. More...

#include <hardware.hpp>

Inheritance diagram for cynq::UltraScale:
Collaboration diagram for cynq::UltraScale:

Public Member Functions

 UltraScale (const std::string &bitstream_file, const std::string &xclbin_file)
 Construct a new UltraScale object. More...
 
 UltraScale ()=delete
 
virtual ~UltraScale ()
 ~UltraScale destructor method Destroy the UltraScale object.
 
Status Reset () override
 Reset method Sets the UltraScale instance to its initial state. More...
 
std::shared_ptr< IDataMoverGetDataMover (const uint64_t address) override
 GetDataMover method Used for accessing the IDataMover instance of the UltraScale object. More...
 
std::shared_ptr< IAcceleratorGetAccelerator (const std::string &kernelname) override
 GetAccelerator method (overload - not implemented) Do not use this method since it is not implemented and it will lead to a nullptr. More...
 
std::shared_ptr< IAcceleratorGetAccelerator (const uint64_t address) override
 GetAccelerator method Instance of IAccelerator inheritors separating the hardware logic from the specific logic of the accelerator. More...
 
Status DeviceQuery ()
 Queries the device looking for its characteristics. More...
 
Status KernelQuery ()
 Queries the kernels available in the design. More...
 
std::vector< float > GetClocks () noexcept override
 Get clocks from the PL. More...
 
Status SetClocks (const std::vector< float > &clocks) override
 Set clocks to the PL. More...
 
- Public Member Functions inherited from cynq::IHardware
virtual ~IHardware ()=default
 ~IHardware destructor method Destroy the IHardware object.
 
virtual std::shared_ptr< IExecutionGraphGetExecutionStream (const std::string &name, const IExecutionGraph::Type type=IExecutionGraph::Type::STREAM, const std::shared_ptr< ExecutionGraphParameters > params=nullptr)
 GetExecutionStream. More...
 

Additional Inherited Members

- Public Types inherited from cynq::IHardware
enum  Type { None = 0 , XRT }
 Type Type of runtime supported by the IHardware. More...
 
- Static Public Member Functions inherited from cynq::IHardware
static std::shared_ptr< IHardwareCreate (const HardwareArchitecture hw, const std::string &bitstream, const std::string &xclbin)
 Create method Factory method to create a hardware-specific subclasses for accelerators and data movers. More...
 
static std::shared_ptr< IHardwareCreate (const HardwareArchitecture hw, const std::string &config)
 Create method Factory method to create a hardware-specific subclasses for accelerators and data movers. More...
 

Detailed Description

UltraScale class Provides an interface to access IP Cores in Xilinx FPGAs, the compatible devices are the following: ZCU102, ZCU106, K26.

This class DO NOT have the support for XCLBIN kernels YET and it takes into account the Vivado workflow only

Constructor & Destructor Documentation

◆ UltraScale() [1/2]

cynq::UltraScale::UltraScale ( const std::string &  bitstream_file,
const std::string &  xclbin_file 
)

Construct a new UltraScale object.

Configure the FPGA with an overlay (bitstream) or a xclbin object. The configuration files are mutually exclusive. If using a bitstream, the xclbin must be the default one. If no bitstream passed (empty), the xclbin file is mandatory.

Parameters
bitstream_filefull path to the bitstream object (.bit file)
xclbin_filefull path to the xclbin object (use the default one in the third-party/resources).

◆ UltraScale() [2/2]

cynq::UltraScale::UltraScale ( )
delete

No default constructor required

Member Function Documentation

◆ DeviceQuery()

Status cynq::UltraScale::DeviceQuery ( )

Queries the device looking for its characteristics.

To be defined in future releases.

Returns
Status

◆ GetAccelerator() [1/2]

std::shared_ptr< IAccelerator > cynq::UltraScale::GetAccelerator ( const std::string &  kernelname)
overridevirtual

GetAccelerator method (overload - not implemented) Do not use this method since it is not implemented and it will lead to a nullptr.

Parameters
kernelnamekernel name for XRT kernel (not used)
Returns
std::shared_ptr<IAccelerator> nullptr

Implements cynq::IHardware.

◆ GetAccelerator() [2/2]

std::shared_ptr< IAccelerator > cynq::UltraScale::GetAccelerator ( const uint64_t  address)
overridevirtual

GetAccelerator method Instance of IAccelerator inheritors separating the hardware logic from the specific logic of the accelerator.

Parameters
addressa unsigned integer of 64 bits representing an address.
Returns
std::shared_ptr<IAccelerator> Returns an IAccelerator pointer with reference counting. It should be thread-safe.

Implements cynq::IHardware.

◆ GetClocks()

std::vector< float > cynq::UltraScale::GetClocks ( )
overridevirtualnoexcept

Get clocks from the PL.

This allows to check the current clocks from the PL in MHz. This method is optionally implementable. If it is not implemented, the number of elements of the vector is equal to zero.

Returns
a vector with a number of elements equal to the valid clocks

Reimplemented from cynq::IHardware.

◆ GetDataMover()

std::shared_ptr< IDataMover > cynq::UltraScale::GetDataMover ( const uint64_t  address)
overridevirtual

GetDataMover method Used for accessing the IDataMover instance of the UltraScale object.

Parameters
addressa unsigned integer of 64 bits representing an address.
Returns
std::shared_ptr<IDataMover> Returns an IDataMover pointer with reference counting. It should be thread-safe.

Implements cynq::IHardware.

◆ KernelQuery()

Status cynq::UltraScale::KernelQuery ( )

Queries the kernels available in the design.

To be defined in future releases.

Returns
Status

◆ Reset()

Status cynq::UltraScale::Reset ( )
overridevirtual

Reset method Sets the UltraScale instance to its initial state.

Returns
Status

Implements cynq::IHardware.

◆ SetClocks()

Status cynq::UltraScale::SetClocks ( const std::vector< float > &  clocks)
overridevirtual

Set clocks to the PL.

This allows to set the current clocks from the PL in MHz. This method is optionally implementable. If it is not implemented, no changes are performed

Returns
Status of the operation

Reimplemented from cynq::IHardware.


The documentation for this class was generated from the following files: