From 8671410a0f9bdd4b405762ad4790c15d601b0fba Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 28 Aug 2026 13:42:10 -0700 Subject: online crossbar inputs --- src/online_crossbar.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/online_crossbar.h (limited to 'src/online_crossbar.h') diff --git a/src/online_crossbar.h b/src/online_crossbar.h new file mode 100644 index 0000000..f89a306 --- /dev/null +++ b/src/online_crossbar.h @@ -0,0 +1,40 @@ +#ifndef ONLINE_CROSSBAR_H +#define ONLINE_CROSSBAR_H + +#include "spires_interface.h" +#include + +typedef struct Online_Crossbar Online_Crossbar; + +typedef struct { + size_t num_neurons; + size_t num_outputs; + size_t num_timesteps; + double time_step; + double spike_amplitude; + double load_resistance; + double r_on; + double r_off; + const char *model_path; + const char *subcircuit_name; + const char *netlist_path; +} Online_Crossbar_Config; + +int online_crossbar_init(const Online_Crossbar_Config *config, + const spires_reservoir *reservoir, + Online_Crossbar **crossbar_out); +int online_crossbar_start(Online_Crossbar *crossbar); + +/* + * Submit state[t]. On return, output_ready is zero for t=0 and otherwise + * previous_output contains output[t-1]. Calls apply bounded backpressure. + */ +int online_crossbar_submit(Online_Crossbar *crossbar, size_t timestep, + const double *state, double *previous_output, + int *output_ready); + +/* Wait for and copy the output belonging to the final submitted state. */ +int online_crossbar_finish(Online_Crossbar *crossbar, double *final_output); +void online_crossbar_destroy(Online_Crossbar *crossbar); + +#endif -- cgit v1.2.3