All Projects → SymbiFlow → fasm

SymbiFlow / fasm

Licence: Apache-2.0 license
FPGA Assembly (FASM) Parser and Generator

Programming Languages

python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects
Makefile
30231 projects
ANTLR
299 projects

Projects that are alternatives of or similar to fasm

sphinxcontrib-hdl-diagrams
Sphinx Extension which generates various types of diagrams from Verilog code.
Stars: ✭ 37 (-46.38%)
Mutual labels:  fpga, symbiflow
up5k
Upduino v2 with the ice40 up5k FPGA demos
Stars: ✭ 65 (-5.8%)
Mutual labels:  fpga, symbiflow
prjxray-db
Project X-Ray Database: XC7 Series
Stars: ✭ 52 (-24.64%)
Mutual labels:  fpga, symbiflow
Coyote
Framework providing operating system abstractions and a range of shared networking (RDMA, TCP/IP) and memory services to common modern heterogeneous platforms.
Stars: ✭ 80 (+15.94%)
Mutual labels:  fpga
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (-63.77%)
Mutual labels:  fpga
tapasco
The Task Parallel System Composer (TaPaSCo)
Stars: ✭ 66 (-4.35%)
Mutual labels:  fpga
cnn open
A hardware implementation of CNN, written by Verilog and synthesized on FPGA
Stars: ✭ 157 (+127.54%)
Mutual labels:  fpga
mos6502-kansas-lava
Kansas Lava implementation of MOS 6502 microprocessor
Stars: ✭ 14 (-79.71%)
Mutual labels:  fpga
icefloorplan
iCE40 floorplan viewer
Stars: ✭ 22 (-68.12%)
Mutual labels:  fpga
shdl6800
shdl6800: A 6800 processor written in SpinalHDL
Stars: ✭ 22 (-68.12%)
Mutual labels:  fpga
ideas
Random ideas and interesting ideas for things we hope to eventually do.
Stars: ✭ 81 (+17.39%)
Mutual labels:  symbiflow
yahdl
A programming language for FPGAs.
Stars: ✭ 20 (-71.01%)
Mutual labels:  fpga
FFTVisualizer
This project demonstrates DSP capabilities of Terasic DE2-115
Stars: ✭ 17 (-75.36%)
Mutual labels:  fpga
captouch
👇 Add capacitive touch buttons to any FPGA!
Stars: ✭ 96 (+39.13%)
Mutual labels:  fpga
Octavo
Verilog FPGA Parts Library. Old Octavo soft-CPU project.
Stars: ✭ 66 (-4.35%)
Mutual labels:  fpga
zc pcie dma
DMA attacks over PCI Express based on Xilinx Zynq-7000 series SoC
Stars: ✭ 37 (-46.38%)
Mutual labels:  fpga
drec-fpga-intro
Materials for "Introduction to FPGA and Verilog" at MIPT DREC
Stars: ✭ 66 (-4.35%)
Mutual labels:  fpga
p4fpga
P4-14/16 Bluespec Compiler
Stars: ✭ 70 (+1.45%)
Mutual labels:  fpga
ics-adpcm
Programmable multichannel ADPCM decoder for FPGA
Stars: ✭ 18 (-73.91%)
Mutual labels:  fpga
bnn-icestick
Binary Neural Network on IceStick FPGA.
Stars: ✭ 45 (-34.78%)
Mutual labels:  fpga

FPGA Assembly (FASM) Parser and Generation library

This repository documents the FASM file format and provides parsing libraries and simple tooling for working with FASM files.

It provides both a pure Python parser based on textx and a significantly faster C parser based on ANTLR. The library will try and use the ANTLR parser first and fall back to the textx parser if the compiled module is not found.

Which parsers are supported by your currently install can be found via python3 -c "import fasm.parser as p; print(p.available). The currently in use parser can be found via fasm.parser.implementation.

It is highly recommended to use the ANTLR parser as it is about 15 times faster.

functions for parsing and generating FASM files.

Build Instructions

CMake is required, and ANTLR has a few dependencies:

sudo apt install cmake default-jre-headless uuid-dev libantlr4-runtime-dev

Pull dependencies in third_party:

git submodule update --init

Build:

make build

Test with:

python setup.py test

The ANTLR runtime can either be linked statically or as a shared library. Use the --antlr-runtime=[static|shared] flag to select between the two modes e.g.:

python setup.py install --antlr-runtime=shared

Or, using pip:

pip install . --install-option="--antlr-runtime=shared" --no-use-pep517

The runtime will be built and statically linked by default. This flag is available in the build_ext, build, develop, and install commands.

The --no-use-pep517 flag is needed because there is currently no way to pass flags with PEP517. Relevant issue: pypa/pip#5771

FPGA Assembly (FASM)

FPGA Assembly is a file format designed by the F4PGA Project developers to provide a plain text file format for configuring the internals of an FPGA.

It is designed to allow FPGA place and route to not care about the actual bitstream format used on an FPGA.

FASM Ecosystem Diagram

Properties

  • Removing a line from a FASM file leaves you with a valid FASM file.
  • Allow annotation with human readable comments.
  • Allow annotation with "computer readable" comments.
  • Has syntactic sugar for expressing memory / lut init bits / other large arrays of data.
  • Has a canonical form.
  • Does not require any specific bitstream format.

Supported By

FASM is currently supported by the F4PGA Verilog to Routing fork, but we hope to get it merged upstream sometime soon.

It is also used by Project X-Ray.

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