blob: c6a87fadfd410ec66645bc1210b340a362c4fc1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#ifndef READ_CROSSBAR_H
#define READ_CROSSBAR_H
#include "spires_interface.h"
#include <stddef.h>
typedef struct {
double *time;
/* Flat row-major values: voltages[sample * num_outputs + output]. */
double *voltages;
} Crossbar_Output_Matrix;
int run_ngspice(const char *crossbar_path);
int read_crossbar(const char *data_path, size_t num_outputs,
Crossbar_Output_Matrix *result);
/*
* Decode differential crossbar voltages into software readout values.
* row_voltages is retained for API compatibility and is currently unused.
*/
int convert_output_to_software(size_t num_neurons, size_t num_outputs,
size_t num_timesteps, const double *voltages,
const double *resistances,
double load_resistance,
const conductance_mapping *mapping,
const double *row_voltages,
double spike_amplitude, double *decoded_outputs);
/* Release storage allocated by read_crossbar(). */
void free_crossbar_output_matrix(Crossbar_Output_Matrix *result);
#endif
|