CYNQ  0.3.0
Framework to develop FPGA applications in C++ with the easiness of PYNQ
accelerator.hpp
1 /*
2  * See LICENSE for more information about licensing
3  *
4  * Copyright 2023-2024
5  * Author: Luis G. Leon-Vega <luis.leon@ieee.org>
6  * Diego Arturo Avila Torres <diego.avila@uned.cr>
7  *
8  */
9 #pragma once
10 
11 #include <cynq/accelerator.hpp>
12 #include <cynq/enums.hpp>
13 #include <cynq/status.hpp>
14 #include <memory>
15 #include <string>
16 
17 namespace cynq {
23 class XRTAccelerator : public IAccelerator {
24  public:
28  XRTAccelerator() = delete;
39  XRTAccelerator(const std::string &kernelname,
40  const std::shared_ptr<HardwareParameters> hwparams);
45  virtual ~XRTAccelerator();
57  Status Start(const StartMode mode) override;
58 
67  Status Stop() override;
68 
75  Status Sync() override;
76 
90  int GetMemoryBank(const uint pos) override;
91 
99  DeviceStatus GetStatus() override;
100 
112  Status Attach(const uint64_t index, std::shared_ptr<IMemory> mem) override;
113 
114  protected:
129  Status WriteRegister(const uint64_t address, const uint8_t *data,
130  const size_t size) override;
145  Status ReadRegister(const uint64_t address, uint8_t *data,
146  const size_t size) override;
147 
162  Status AttachRegister(const uint64_t index, uint8_t *data,
163  const RegisterAccess access,
164  const size_t size) override;
165 
166  private:
168  std::unique_ptr<AcceleratorParameters> accel_params_;
169 };
170 } // namespace cynq
Interface for standardising the API for any Accelerator device: XRTAccelerator.
Definition: accelerator.hpp:37
XRTAccelerator class This class provides the api to operate the accelerator.
Definition: accelerator.hpp:23
DeviceStatus GetStatus() override
GetStatus method This returns the accelerator state by using the DeviceStatus. This reads the control...
Definition: accelerator.cpp:94
Status Attach(const uint64_t index, std::shared_ptr< IMemory > mem) override
Attach a memory argument Performs an attachment of the argument and the respective pointer....
Definition: accelerator.cpp:179
Status Start(const StartMode mode) override
Start method This method starts the accelerator in either once or continuous mode (with the autoresta...
Definition: accelerator.cpp:69
virtual ~XRTAccelerator()
~XRTAccelerator destructor method Destroy the XRTAccelerator object
Definition: accelerator.cpp:198
XRTAccelerator()=delete
Delete the default constructor since address is needed.
Status Stop() override
Stop method This asynchronously turns off the accelerator by removing the autorestart and start bits ...
Definition: accelerator.cpp:79
Status WriteRegister(const uint64_t address, const uint8_t *data, const size_t size) override
Write Register method (it behaves differently from MMIO)
Definition: accelerator.cpp:111
Status ReadRegister(const uint64_t address, uint8_t *data, const size_t size) override
Read Register method (it behaves differently from MMIO)
Definition: accelerator.cpp:139
Status AttachRegister(const uint64_t index, uint8_t *data, const RegisterAccess access, const size_t size) override
Implementation of the Attach Register method.
Definition: accelerator.cpp:167
Status Sync() override
Sync method Forces to wait until the accelerator execution is "done".
Definition: accelerator.cpp:85
int GetMemoryBank(const uint pos) override
Get the memory bank ID.
Definition: accelerator.cpp:200
Structure to define the return characteristics of each function.
Definition: status.hpp:19