Skip to content

Commit

Permalink
Add support to read neureka ECC-related internal registers
Browse files Browse the repository at this point in the history
(cherry picked from commit fe2be29)
  • Loading branch information
LuigiGhionda committed May 31, 2024
1 parent 37a8013 commit 47baf51
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 0 deletions.
6 changes: 6 additions & 0 deletions inc/pulp_nnx_neureka.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,9 @@ int neureka_nnx_resolve_check(neureka_dev_t *dev, neureka_task_t *task);
* Block until you can resolve the task.
*/
void neureka_nnx_resolve_wait(neureka_dev_t *dev, neureka_task_t *task);

/** neureka_nnx_read_ecc_regs
*
* Read ECC-related internal registers.
*/
void neureka_nnx_read_ecc_regs(neureka_dev_t *dev, uint32_t *ecc_regs);
2 changes: 2 additions & 0 deletions neureka/hal/neureka_task_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@
#define NEUREKA_OUTPUT_BANDWIDTH_BYTES (32)
#define NEUREKA_WEIGHT_BANDWIDTH_BYTES (32)

#define NEUREKA_ECC_REGS_NUM (4)

/* TASK REGISTERS */

// job configuration
Expand Down
4 changes: 4 additions & 0 deletions src/pulp_nnx_neureka.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,7 @@ void neureka_nnx_resolve_wait(neureka_dev_t *dev, neureka_task_t *task) {
neureka_bsp_event_wait_and_clear();
}
}

void neureka_nnx_read_ecc_regs(neureka_dev_t *dev, uint32_t *ecc_regs) {
hwpe_ecc_regs_check(&dev->hwpe_dev, ecc_regs, NEUREKA_ECC_REGS_NUM);
}
8 changes: 8 additions & 0 deletions util/hwpe.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
#define HWPE_SOFT_CLEAR 5
#define HWPE_SWSYNC 6
#define HWPE_TASK_REG_OFFSET 8
#define HWPE_PARAMS_REG_OFFSET 48
#define HWPE_ECC_REG_OFFSET (HWPE_TASK_REG_OFFSET+HWPE_PARAMS_REG_OFFSET)

inline void hwpe_reg_write(hwpe_dev_t *dev, int reg, uint32_t value) {
dev->base_addr[reg] = value;
Expand Down Expand Up @@ -83,3 +85,9 @@ void hwpe_task_queue_release(hwpe_dev_t *dev) {
uint8_t hwpe_last_task_id(hwpe_dev_t *dev) {
return (uint8_t)hwpe_reg_read(dev, HWPE_RUNNING_JOB);
}

void hwpe_ecc_regs_check(hwpe_dev_t *dev, uint32_t *data, int len) {
for (int i = 0; i < len; i++) {
data[i] = hwpe_reg_read(dev, HWPE_ECC_REG_OFFSET + i);
}
}
1 change: 1 addition & 0 deletions util/hwpe.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@ void hwpe_task_queue_write_task(hwpe_dev_t *dev, uint32_t *data, int len);
void hwpe_task_queue_release_and_run(hwpe_dev_t *dev);
void hwpe_task_queue_release(hwpe_dev_t *dev);
uint8_t hwpe_last_task_id(hwpe_dev_t *dev);
void hwpe_ecc_regs_check(hwpe_dev_t *dev, uint32_t *data, int len);

#endif // !__HWPE_H__

0 comments on commit 47baf51

Please sign in to comment.