Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

NMODL LLVM Code Generation Project

Pramod Kumbhar edited this page Nov 9, 2020 · 31 revisions

This page summarises various resources to get started with the NEURON, CoreNEURON and NMODL ecosystem.

Introduction Computational Neuroscience [Background]

Before diving into the computational aspects of neurons, we could look at the following introductory videos. Go through as much as you like and skip as much as you want!

High Level!

Bit More Serious!

Some more detailed lectures from Neuronal Dynamics - Computational Neuroscience course. Don't need to get into all details but first 2-3 weeks give basic understanding:

A first simple neuron model

The Hodgkin-Huxley model and detailed ion-current based neuron models

This should give you sufficient vocabulary to get started!

Introduction to NEURON Simulator [Background]

To get an idea of how NEURON simulator is used, here are some video tutorials. Don't need to have thorough understanding of everything but to just get high level picture of NEURON simulator:

Here is another (old) NEURON tutorial by Andrew Gillies and David Sterratt. This is quite old with the HOC scripting interface but introduces some of the concepts step-by-step. It's sufficient to skim through the first two parts. If case you want to try example snippets (not necessary to do so), make sure to install NEURON via pip as:

pip3 install neuron #on linux and os x

Documentation

Building LLVM based compiler from scratch : Flex, Bison, AST and LLVM IR

Below from Loren Segal is simplest and complete tutorial I have seen that put together flex, bison, AST and LLVM code generation. It's based on ancient LLVM version but gives fairly good idea of what it requires to integrate LLVM. I "think" we will use similar approach in NMODL toolchain.

Introduction to NMODL (TODO/WIP)

This is where we start with the main relevant part of the project. We will update this section with better resources. To get some background, we can start with:

Clone this wiki locally