summaryrefslogtreecommitdiff
path: root/src/read_crossbar.h
blob: 74828d2e55238b51e66f5192e373ccb99c3c9c7d (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 {
	size_t num_samples; // number of time-steps
	size_t num_outputs; // number of columns

	double *time;

	// stored in row major order
	// voltages[sameple * 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);

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);

void free_crossbar_output_matrix(Crossbar_Output_Matrix *result);

#endif