Files
calculet-npu-research-archive/source/repositories-complete/calrt-exact/calrt/calrtcli/include/cli_command.hpp
T

84 lines
2.1 KiB
C++

#pragma once
#include <cstdint>
#include <string>
#include <CLI11.hpp>
#include "calrt.hpp"
#include "protocol.hpp"
namespace calrt
{
namespace calrtcli
{
class CalrtCLICommand
{
public:
CalrtCLICommand(CLI::App *app);
void parse_calbin();
void check_job_queue();
void reset();
void show_devices();
void refresh();
void check_used_mem();
void check_total_mem();
void check_ccu_status();
void check_d2d_status();
#ifdef SUPEROWNER
void resetCCU();
void read_mem();
void write_mem();
void read_reg();
void write_reg();
void read_reg_bar4();
void write_reg_bar4();
/**
* @brief read remote chip data
*
* @details 1. pre-check d2d registry
* 1.1 check chip0 d2d registry
* 1.2 check chipx d2d registry
* 2. gen cmd to broadcast chipx to chip 0
* 2.1 gen cmd to let chip0 to broadcast chipx cmd
*/
void config_d2d_data();
// void config_d2d_cmd();
#endif
private:
void GetChipMaskFromId(uint32_t id, std::vector<uint32_t> &chipMask);
void StartJob(calrt::CalrtDevice *pDevice, uint64_t jobAddr, uint64_t jobSize);
void WaitJobDone(calrt::CalrtDevice *pDevice);
int d2d_transfer_impl();
struct D2dPack
{
uint32_t lowMask = 0;
uint32_t midMask = 0;
uint32_t highMask = 0;
uint64_t srcAddr = 0;
uint64_t dstAddr = 0;
uint64_t size = 0;
};
CLI::App *mApp;
uint64_t mAddr = 0;
uint64_t mSize = 0;
uint64_t mOffset = 0;
uint64_t mData64 = 0;
uint32_t mData = 0;
uint32_t mChipId = 0;
D2dPack mD2dpkg;
uint8_t mId = 0;
std::string mPath;
};
} // namespace calrtcli
} // namespace calrt