diff --git a/pynestml/codegeneration/printers/spinnaker_c_variable_printer.py b/pynestml/codegeneration/printers/spinnaker_c_variable_printer.py index 1cf4a3e2b..50bb2ca1f 100644 --- a/pynestml/codegeneration/printers/spinnaker_c_variable_printer.py +++ b/pynestml/codegeneration/printers/spinnaker_c_variable_printer.py @@ -150,7 +150,7 @@ def _print_buffer_value(self, variable: ASTVariable) -> str: vector_parameter = ASTUtils.get_numeric_vector_size(variable) var_name = var_name + "_" + str(vector_parameter) - return "input.inputs[" + var_name + " - MIN_SPIKE_RECEPTOR]" + return "input->inputs[" + var_name + " - MIN_SPIKE_RECEPTOR]" if variable_symbol.is_continuous_input_port(): var_name = variable_symbol.get_symbol_name().upper() @@ -158,7 +158,7 @@ def _print_buffer_value(self, variable: ASTVariable) -> str: vector_parameter = ASTUtils.get_numeric_vector_size(variable) var_name = var_name + "_" + str(vector_parameter) - return "input.inputs[" + var_name + " - MIN_SPIKE_RECEPTOR]" + return "input->inputs[" + var_name + " - MIN_SPIKE_RECEPTOR]" return variable_symbol.get_symbol_name() + '_grid_sum_' diff --git a/pynestml/codegeneration/resources_spinnaker/@NEURON_NAME@_impl.h.jinja2 b/pynestml/codegeneration/resources_spinnaker/@NEURON_NAME@_impl.h.jinja2 index 77a2be9ec..2466eb2e9 100644 --- a/pynestml/codegeneration/resources_spinnaker/@NEURON_NAME@_impl.h.jinja2 +++ b/pynestml/codegeneration/resources_spinnaker/@NEURON_NAME@_impl.h.jinja2 @@ -206,12 +206,10 @@ static void neuron_impl_add_inputs( // Get the neuron itself neuron_impl_t *neuron = &neuron_array[neuron_index]; - neuron_state_t state = neuron->state; - neuron_input_t input = neuron->input; - neuron_parameter_t parameter = neuron->parameter; + neuron_input_t *input = &neuron->input; // Do something to store the inputs for the next state update - input.inputs[synapse_type_index] += weights_this_timestep; + input->inputs[synapse_type_index] += weights_this_timestep; } __attribute__((unused)) // Marked unused as only used sometimes @@ -220,14 +218,14 @@ static void neuron_impl_do_timestep_update( for (uint32_t neuron_index = 0; neuron_index < n_neurons; neuron_index++) { // Get the neuron itself neuron_impl_t *neuron = &neuron_array[neuron_index]; - neuron_state_t state = neuron->state; - neuron_input_t input = neuron->input; - neuron_parameter_t parameter = neuron->parameter; + neuron_state_t *state = &neuron->state; + neuron_input_t *input = &neuron->input; + neuron_parameter_t *parameter = &neuron->parameter; // Store the recorded membrane voltage {%- for variable in neuron.get_state_symbols() %} {%- if variable.is_recordable %} - neuron_recording_record_accum({{ variable.get_symbol_name().upper() }}_RECORDING_INDEX, neuron_index, state.{{ variable.get_symbol_name() }}); + neuron_recording_record_accum({{ variable.get_symbol_name().upper() }}_RECORDING_INDEX, neuron_index, state->{{ variable.get_symbol_name() }}); {%- endif -%} {%- endfor %} @@ -248,10 +246,10 @@ static void neuron_impl_do_timestep_update( // neuron_recording_record_bit(SPIKE_RECORDING_BITFIELD, neuron_index); // ? {%- for variable in neuron.get_spike_input_ports() %} - input.inputs[{{ variable.get_symbol_name().upper() }}] = ZERO; + input->inputs[{{ variable.get_symbol_name().upper() }}] = ZERO; {%- endfor %} {%- for variable in neuron.get_continuous_input_ports() %} - input.inputs[{{ variable.get_symbol_name().upper() }}] = ZERO; + input->inputs[{{ variable.get_symbol_name().upper() }}] = ZERO; {%- endfor %} } } @@ -261,9 +259,9 @@ void neuron_impl_print_inputs(uint32_t n_neurons) { log_debug("-------------------------------------\n"); for (index_t i = 0; i < n_neurons; i++) { neuron_impl_t *neuron = &neuron_array[i]; - neuron_input_t input = neuron.input; + neuron_input_t *input = &neuron.input; - log_debug("inputs: %k %k", input.inputs[0], input.inputs[1]); + log_debug("inputs: %k %k", input->inputs[0], input->inputs[1]); } log_debug("-------------------------------------\n"); } diff --git a/pynestml/codegeneration/spinnaker_code_generator_utils.py b/pynestml/codegeneration/spinnaker_code_generator_utils.py index 6c1559dbb..5372eb5b0 100644 --- a/pynestml/codegeneration/spinnaker_code_generator_utils.py +++ b/pynestml/codegeneration/spinnaker_code_generator_utils.py @@ -36,19 +36,19 @@ def print_symbol_origin(cls, variable_symbol: VariableSymbol, numerical_state_sy if numerical_state_symbols and variable_symbol.get_symbol_name() in numerical_state_symbols: return 'S_.ode_state[State_::%s]' - return 'state.%s' + return 'state->%s' if variable_symbol.block_type == BlockType.PARAMETERS: - return 'parameter.%s' + return 'parameter->%s' if variable_symbol.block_type == BlockType.COMMON_PARAMETERS: - return 'parameter.%s' + return 'parameter->%s' if variable_symbol.block_type == BlockType.INTERNALS: - return 'parameter.%s' + return 'parameter->%s' if variable_symbol.block_type == BlockType.INPUT: - return 'input.%s' + return 'input.>%s' return '' \ No newline at end of file