All Projects → phanrahan → mantle

phanrahan / mantle

Licence: other
mantle library

Programming Languages

Verilog
626 projects
python
139335 projects - #7 most used programming language

Mantle

Documentation Status Build Status

Mantle is part of the Magma ecosystem of Python hardware contruction tools.

Magma is a programming model for building hardware. The main abstraction in Magma is a Circuit. Circuits are created and then wired together. Magma circuits can be saved as structural verilog files.

Mantle is a library of useful circuits. Examples of mantle circuits are logic operators, arithmetic operators, comparison operators, multiplexers, decoders and encoders, registers, counters, shift regiseters and memory.

Loam is used to model FPGAs, peripherals, parts (ICs) and boards. Loam makes it easy to build applications on a variety of different FPGA demonstration boards.

Currently, Mantle supports generic verilog and the Lattice ice40 (and its open source icestorm toolchain). A Xilinx (spartan3, spartan6, zynq) backends will be released soon. An Altera backend is in the works.

Documentation

Documentation is hosted at http://magma-mantle.readthedocs.io/

You can also browse the markdown files contained in docs/ directly.

There also exist libraries for low-level FPGA-specific primitives.

Configuring Mantle

By default Mantle is configured to use the CoreIR implementation, equivalent to:

import magma as m
m.set_mantle_target("coreir")

Other options include: verilog and lattice.

Mantle can also be configured to synthesize low-level primitives for a particular FPGA.

For example, to use mantle with the Lattice ice40, set the MANTLE_TARGET environment variable.

m.set_mantle_target("ice40")

Setup

$ git clone https://github.com/phanrahan/mantle
$ cd mantle
$ pip install pytest
$ pip install -e .
$ ./scripts/run_tests.sh  # this should pass
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].