8.1 Simulation principles and technology

The central idea of simulation is the notion of ”event”. We use events almost in the everyday sense; that something happens at some given time. In technical computing, an event is an electric signal, that means the beginning or and of an elementary operation, or signals transferring control to another place in the program. In biology, ”A signal is a physical event that, to the receiver, was not bound to happen at the time or in the way it did.” [173] Similarly, we ”define an elementary operation of the brain as a single synaptic event” [174].

The basic issue with simulating biology with technology is that two time scales exist and they are connected by events only. The length of the computing and the biological operation are not proportional at all. Furthermore, neuronal operations happen simultaneously, while technical operations work in a sequential way (or maybe in parallelized sequential way) that breaks happening events simultaneously.

The way as we perform simulation that we define events (such as beginning or end of computing, receiving an input, etc) and we perform the actions that happen at the same (biological) time. The ”same time” in this context means that the simulated times are within a so called ”time resolution”. The biological actions are implemented as a kind of callback function that is called when the corresponding (simulated) time arrives. Choosing smaller time resolution results in slightly more accurate results at the price of much more computing time.

The software we use is a special C++ based library SystemC with a user-level scheduler [175, 176]. The primary purpose of the software is to prepare electronic designs, so a lot of formal elements are to be considered. Those elements are typically confined in low-level modules, and the user-accessible modules resemble normal c++ modules, although their name and description max reflect specialties.