Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
LEAP programs are composed of latency-insensitive modules (LIMs), computational entities which communicate over conceptual FIFO channels. Because LIMs can be comprised of either hardware or software, the compilation of LEAP designs can become quite complicated.
The goal of the build pipeline is to generate a SCons data structure to contain information AWB knows, so that this information is accessible by the compilation tools.
The ModuleList data structure is a representation of the entire module instantiation hierarchy in a form that build pipeline “stages” can manipulate. The format is a tree where each node is a list of subnodes. The top-level SConstruct is basically just responsible for building the data structure representation and invoking the build pipeline.
ModuleList.py lives in the toplevel project. This constructs a tree from the @-parameters substituted by leap-configure. This file isn’t usually edited by the user. This uses pygraph to store the modules as a graph of dependencies between them. Synthesis boundaries are stored in a parallel structure representation.