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 Extensions.