CYNQ  0.3.0
Framework to develop FPGA applications in C++ with the easiness of PYNQ
datamover.hpp
1 /*
2  * See LICENSE for more information about licensing
3  *
4  * Copyright 2024
5  * Author: Luis G. Leon-Vega <luis.leon@ieee.org>
6  */
7 #pragma once
8 #include <xrt/xrt_bo.h>
9 
10 #include <cynq/datamover.hpp>
11 #include <cynq/enums.hpp>
12 #include <cynq/hardware.hpp>
13 #include <cynq/status.hpp>
14 #include <cynq/xrt/memory.hpp>
15 #include <memory>
16 
17 namespace cynq {
23  std::shared_ptr<xrt::bo> bo_;
25  MemoryType type_;
26 };
27 
34 class XRTDataMover : public IDataMover {
35  public:
45  XRTDataMover(const uint64_t addr,
46  std::shared_ptr<HardwareParameters> hwparams);
47 
54  XRTDataMover() = delete;
60  virtual ~XRTDataMover();
85  std::shared_ptr<IMemory> GetBuffer(
86  const size_t size, const int memory_bank = 0,
87  const MemoryType type = MemoryType::Dual) override;
107  Status Upload(const std::shared_ptr<IMemory> mem, const size_t size,
108  const size_t offset, const ExecutionType exetype) override;
129  Status Download(const std::shared_ptr<IMemory> mem, const size_t size,
130  const size_t offset, const ExecutionType exetype) override;
139  Status Sync(const SyncType type) override;
146  DeviceStatus GetStatus() override;
147 
148  private:
150  std::unique_ptr<DataMoverParameters> data_mover_params_;
151 };
152 } // namespace cynq
Interface for standardising the API of DataMover for a specific device: XRTDataMover.
Definition: datamover.hpp:40
XRTDataMover class Provides the API to interact with the data buffers responsible for memory operatio...
Definition: datamover.hpp:34
DeviceStatus GetStatus() override
GetStatus method Returns the status of the data mover in terms of transactions.
Definition: datamover.cpp:79
Status Download(const std::shared_ptr< IMemory > mem, const size_t size, const size_t offset, const ExecutionType exetype) override
Download method.
Definition: datamover.cpp:111
XRTDataMover()=delete
Default constructor.
virtual ~XRTDataMover()
~XRTDataMover destructor method Destroy the XRTDataMover object.
Definition: datamover.cpp:81
Status Upload(const std::shared_ptr< IMemory > mem, const size_t size, const size_t offset, const ExecutionType exetype) override
Upload method.
Definition: datamover.cpp:87
std::shared_ptr< IMemory > GetBuffer(const size_t size, const int memory_bank=0, const MemoryType type=MemoryType::Dual) override
GetBuffer method This method allocates a memory buffer. Depending on the MemoryType,...
Definition: datamover.cpp:39
Status Sync(const SyncType type) override
Sync method.
Definition: datamover.cpp:135
Structure to define the return characteristics of each function.
Definition: status.hpp:19
Metadata inserted into each XRTMemory instance.
Definition: datamover.hpp:21
std::shared_ptr< xrt::bo > bo_
Definition: datamover.hpp:23
MemoryType type_
Definition: datamover.hpp:25