Matt Grover - 2002-09-29

Logged In: YES
user_id=171453

For neuron models like FastNeuron this has to be done
because the PSP has no rise time. If a network was set up
with high weight values for all of the connections so that a
neuron will fire every time it receives input, then the
network would be completely activated in a single time step.
A signal that was fed into the network would cause the
input neuron to fire, which would cause all of its
postsynaptic neurons to fire, and so on until the signal
reaches the output layer. The delay ensures that a signal
will take some amount of time to propagate through the network.

The other neurons have the delay because of the way that
spike transmission delays are handled. The event process
splits send events and receive events into separate stages
of processing. Neuron::SendSpike() is called for all
neurons that are scheduled to spike during a time step and
then Neuron::InputSpike() is called for all neurons that
will receive spikes. So when a neuron needs to schedule a
spike, the sending stage has already been executed and the
spike event is delayed for a step. This should not cause
problems for the most part because most spikes will be
scheduled to occur at some time in the future anyway.
Immediate spikes are less common for most networks
(especially if small step sizes are used). Once the core of
the library has stabilized we will look at ways to get rid
of this limitation.