E0102: synaptic delay cannot be retimed
What happened
The model uses synaptic delays authored at authored_dt. The compilation target uses a different target_dt. Retiming the delay from authored_dt to target_dt produces a non-integer number of steps, which cannot be represented.
Why
Delays are integer multiples of dt. If you scale delay_steps by authored_dt / target_dt, you must get an integer. For example:
delay=3 at dt=1ms → at dt=2ms → 3 × (1/2) = 1.5 — not an integer. Fails.
delay=4 at dt=1ms → at dt=2ms → 4 × (1/2) = 2 — integer. OK.
How to fix
- Author the model at the target’s native dt: set
dt=target_dt in the model. Then delays are written directly in the target’s step units.
- Choose delays that divide evenly: if
target_dt = authored_dt × k, use delays that are multiples of k.
- Use the
sim target: the simulator accepts any dt and runs delays exactly as authored.
Example