All Projects â†’ nlsynth â†’ Iroha

nlsynth / Iroha

Licence: bsd-3-clause
Intermediate Representation Of Hardware Abstraction (LLVM-ish for HLS)

Projects that are alternatives of or similar to Iroha

Apio
🌱 Open source ecosystem for open FPGA boards
Stars: ✭ 366 (+1120%)
Mutual labels:  verilog, fpga
Zbasic
A bare bones, basic, ZipCPU system designed for both testing and quick integration into new systems
Stars: ✭ 27 (-10%)
Mutual labels:  verilog, fpga
Cascade
A Just-In-Time Compiler for Verilog from VMware Research
Stars: ✭ 413 (+1276.67%)
Mutual labels:  verilog, fpga
Beagle sdr gps
KiwiSDR: BeagleBone web-accessible shortwave receiver and software-defined GPS
Stars: ✭ 300 (+900%)
Mutual labels:  verilog, fpga
Zipcpu
A small, light weight, RISC CPU soft core
Stars: ✭ 640 (+2033.33%)
Mutual labels:  verilog, fpga
Reduceron
FPGA Haskell machine with game changing performance. Reduceron is Matthew Naylor, Colin Runciman and Jason Reich's high performance FPGA softcore for running lazy functional programs, including hardware garbage collection. Reduceron has been implemented on various FPGAs with clock frequency ranging from 60 to 150 MHz depending on the FPGA. A high degree of parallelism allows Reduceron to implement graph evaluation very efficiently. This fork aims to continue development on this, with a view to practical applications. Comments, questions, etc are welcome.
Stars: ✭ 308 (+926.67%)
Mutual labels:  verilog, fpga
Vtr Verilog To Routing
Verilog to Routing -- Open Source CAD Flow for FPGA Research
Stars: ✭ 466 (+1453.33%)
Mutual labels:  verilog, fpga
Riscv
RISC-V CPU Core (RV32IM)
Stars: ✭ 272 (+806.67%)
Mutual labels:  verilog, fpga
Platformio Core
PlatformIO is a professional collaborative platform for embedded development 👽 A place where Developers and Teams have true Freedom! No more vendor lock-in!
Stars: ✭ 5,539 (+18363.33%)
Mutual labels:  verilog, fpga
Uhd
The USRPâ„¢ Hardware Driver Repository
Stars: ✭ 544 (+1713.33%)
Mutual labels:  verilog, fpga
Verilog
Repository for basic (and not so basic) Verilog blocks with high re-use potential
Stars: ✭ 296 (+886.67%)
Mutual labels:  verilog, fpga
Spinalhdl
Scala based HDL
Stars: ✭ 696 (+2220%)
Mutual labels:  verilog, fpga
Openpiton
The OpenPiton Platform
Stars: ✭ 282 (+840%)
Mutual labels:  verilog, fpga
Fpga Imaging Library
An open source library for image processing on FPGA.
Stars: ✭ 325 (+983.33%)
Mutual labels:  verilog, fpga
Icezum
🌟 IceZUM Alhambra: an Arduino-like Open FPGA electronic board
Stars: ✭ 280 (+833.33%)
Mutual labels:  verilog, fpga
Open Fpga Verilog Tutorial
Learn how to design digital systems and synthesize them into an FPGA using only opensource tools
Stars: ✭ 464 (+1446.67%)
Mutual labels:  verilog, fpga
Edalize
An abstraction library for interfacing EDA tools
Stars: ✭ 270 (+800%)
Mutual labels:  verilog, fpga
Cores
Various HDL (Verilog) IP Cores
Stars: ✭ 271 (+803.33%)
Mutual labels:  verilog, fpga
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (+1483.33%)
Mutual labels:  verilog, fpga
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+2153.33%)
Mutual labels:  verilog, fpga

Iroha: Intermediate Representation Of Hardware Abstraction

Author: Yusuke TABATA ([email protected]) and the team (TBD)

TL;DR: Aiming to be LLVM for HLS

What's this?

Iroha is a text representation of a network of state machines and tools to process it. The representation uses S-expression to describe a network of state machines. It looks like as follows:

(MODULE ...
  (TABLE
    (REGISTERS (REGISTER ...) (REGISTER ...) ...)
    (RESOURCES (RESOURCE ...) (RESOURCE ...) ...)
    (STATE (INSN ...) (INSN ...) ...))
  (TABLE ...))

A TABLE denotes a state machine. It can have its behavior including calculation , communication to other TABLEs and so on.

Build and use

(0) First of all, build the binary.

Requirements:
C++11 capable compiler: g++ or clang++.
Build tools: make and gyp.

> $ ./configure ; make

(1) Try to read Iroha IR in S-expression and just dump it.

> $ ./iroha tests/min.iroha
(or
> $ ./iroha -v tests/min.iroha
to get verilog output)

(2) Example to generate Verilog from Python examples.

> $ cd examples
> $ python loop.py | ../iroha - -v -o loop.v
> (or other .py files)

(3) Example to use optimizers

> $ ./examples/xorshift | ./iroha - -opt wire_insn,clean_empty_state,clean_unreachable_state | ./iroha - -v -o /tmp/xorshift.v

Please read src/iroha/iroha.h, src/iroha/iroha_main.cpp examples/ for more details.

Source tree

  • src/
    • Libraries and commands.
  • src/builder
    • Code to build Iroha data structures.
  • src/design
    • Code to manipulate design IR.
  • src/iroha
    • Public header files of libraries manipulate on Iroha data structures.
    • Basic API layer code.
  • src/opt
    • Optimizers
  • src/writer
    • Code to write design IR as a file.
  • tests/
    • Test input.

TODOs

  • P1: Connect FIFO to a dataflow table.
  • P2: FPGA style coding style (e.g. register initialization)
  • P2: I/O for embedded verilog module
  • P2: Simplify wait cycle if there's 1 multi cycle insn in a state
  • P2: Set reset polarity to embedded module.
  • P2: Allow multiple embedded module instances.
  • Usability: Document
  • Usability: More debug output from optimizers.
  • Usability: Export optimizer API so that users can add own pass
  • Dev: Migrate from unmaintained gyp build.
  • Q: Do we need instance/module separation?
  • AXI: Allow or fail to attach both master/slave to an array.
  • AXI: Ability to merge channels.

Authors and friends

  • Takefumi Miyoshi (miyo)
  • Shinya Takamaeda-Yamazaki (shtaxxx)
  • Ichiro Kawazome (ikwzm) and
  • Yusuke Tabata (yt76)

-- format this document

$ markdown README.md > README.html

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