# Library Structure This repository contains the following folders: ``` deeploy ├── cmake ├── Deeploy ├── TargetLibraries ├── DeeployTest ├── docs ├── install ├── scripts └── toolchain ``` The core abstractions and framework of Deeploy is contained in `Deeploy`. The folder `TargetLibraries` contains C microkernels for these platforms. `DeeployTest` contains the testing framework for Deeploy. The folders `install` and `toolchain` are used for local installations of the required compilation toolchain and its dependencies. `scripts` contains some helper scripts, mostly for code formatting. The `cmake` folder contains CMake configuration files which are used by the testing infrastructure to configure compiler flags and simulator targets. ## Deeploy The Deeploy folder mainly contains the `DeeployTypes.py` and `AbstractDataTypes.py` files, which, in turn, contain the core abstractions of Deeploy. The remainder of the folder structure contains the `Target` folder and several extensions to `Deeploy`'s core flow, and appears as follows: ``` deeploy ├── Deeploy ├── DeeployTypes.py ├── AbstractDataTypes.py ├── CommonExtensions ├── EngineExtension ├── FutureExtension ├── MemoryLevelExtension ├── Targets └── TilingExtension ``` ### Targets The `Targets` folder contains the Deeploy models and code generation infrastructure for a specific platform; currently, Deeploy supports the following targets: ``` deeploy ├── Deeploy ├── Targets ├── CortexM ├── Generic ├── MemPool ├── Neureka └── PULPOpen ``` Each of these `Target` folders is internally structured as follows: ``` deeploy ├── Deeploy ├── Targets ├── PULPOpen ├── Bindings.py ├── DataTypes.py ├── Deployer.py ├── Layers.py ├── Parsers.py ├── Platform.py ├── TypeCheckers.py ├── Tiler.py ├── TileConstraints ├── CodeTransformationPasses ├── TopologyOptimizationPasses └── Templates ``` Where, by convention, files ending with `.py` are implementations of either classes in `DeeployTypes.py`, `AbstractDataTypes.py`, or one of the extensions. For new platform contributions, please follow this general folder structure. ### Extensions Each folder named `-Extension` contains widely reusable abstractions; they are internally structured like Targets, using names like `Bindings.py`, `DataTypes.py`, `Deployer.py`, `Layers.py`, `Parsers.py`, `Platform.py` and `TypeCheckers.py` for extensions concerning the appropriate base Deeploy abstraction. They may further add new filenames according to the need of the extension. For example, the `MemoryLevelExtension` is structured like this: ``` deeploy ├── Deeploy ├── MemoryLevelExtension ├── MemoryLevels.py ├── NetworkDeployers └── OptimizationPasses ``` When adding new extensions, please try to structure them similiarly to the structure used for `Targets` and existing `Extension`s.