## 2 Related Work
It supports the simulation of heterogeneous networks with different types of neurons and synapses, decoupling the simulation logic of communicating events between neurons at a network level from implementing the internal dynamics of network elements. Users can easily extend NEVESIM with new neuron and synapse types, promoting better reusability of implemented components, avoiding code duplication, and facilitating code maintenance. The framework provides an easy-to-use Python interface for constructing and controlling the simulation of neural networks, while the simulation core is implemented in C++ for fast performance. NEVESIM can simulate configurable neural sampling models, a unique feature not explicitly addressed in previous work. Although primarily designed for simulating stochastic spiking neurons that perform neural sampling, NEVESIM's applicability is broader and can be extended for simulating various types of neural systems. BindsNET v0.3.1 [25] is a Python package for simulating SNNs with a focus on machine learning and reinforcement applications. Built on top of the PyTorch deep learning platform, BindsNET leverages PyTorch's torch. Tensor objects to build spiking neurons and connections between them. The package enables rapid prototyping and simulation of SNNs with a user-friendly and concise syntax. It can simulate SNNs on CPUs or GPUs without extra work, allowing for solid acceleration and parallelization. BindsNET has integrated torchvision datasets to allow the use of popular vision datasets in training SNNs for computer vision tasks. BindsNET provides a flexible framework for constructing networks, with software objects and methods to simulate different types of neurons and connections between them. It also offers features such as plasticity and learning, configurable simulation timesteps, and monitoring of state variables from arbitrary network components. SpikingJelly v0.0.0.0.14 [26] is an open-source deep-learning framework for SNNs based on PyTorch. It provides a full-stack toolkit for preprocessing neuromorphic datasets, building deep SNNs, optimizing their parameters, and deploying SNNs on neuromorphic chips. Building SNNs with SpikingJelly is as simple as building ANNs in PyTorch, freeing users from painstaking coding operations. It enables fast and handy ANN-SNN conversion and provides CUDA-enhanced neuron models for faster simulation. SpikingJelly supports various devices for running SNN simulations and includes support for preprocessing and using neuromorphic datasets. It also provides tutorials and documentation in both English and Chinese. Compared to existing methods, SpikingJelly can accelerate the training of deep SNNs by 11 times and enables users to accelerate custom models at low costs. The authors in [27] developed snnTorch v0.9.1, an open-source Python package that enables gradient-based learning with SNNs by extending the capabilities of PyTorch. It leverages PyTorch's GPU-accelerated tensor computation and applies it to networks of spiking neurons. Designed to be intuitively used with PyTorch, snnTorch treats each spiking neuron as another activation in a sequence of layers, making it agnostic to fully connected layers, convolutional layers, residual connections, and more. It provides a variety of spiking neuron classes that can be treated as activation units with PyTorch, including variants of the Leaky Integrate-and-Fire neuron model, spiking-LSTMs, and spiking-ConvLSTMs. snnTorch contains variations of backpropagation commonly used with SNNs and overrides PyTorch's default gradient nulling for spiking neurons using surrogate gradient functions. It also includes visualization tools for spike-based data using matplotlib and celluloid and dataset utility functions. The lean requirements of snnTorch enable small and large networks to be viably trained on CPU while also taking advantage of GPU acceleration when network models and tensors are loaded onto CUDA. Norse [28] is an open-source Python library that extends PyTorch to enable deep learning with SNNs.