All Projects → masc-ucsc → Livehd

masc-ucsc / Livehd

Licence: other
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation

Projects that are alternatives of or similar to Livehd

Edalize
An abstraction library for interfacing EDA tools
Stars: ✭ 270 (+145.45%)
Mutual labels:  verilog, fpga, synthesis, simulation
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (-77.27%)
Mutual labels:  fpga, verilog, synthesis
Biriscv
32-bit Superscalar RISC-V CPU
Stars: ✭ 208 (+89.09%)
Mutual labels:  verilog, fpga, asic
VGChips
Video Game custom chips reverse-engineered from silicon
Stars: ✭ 86 (-21.82%)
Mutual labels:  asic, fpga, verilog
Rggen
Code generation tool for configuration and status registers
Stars: ✭ 54 (-50.91%)
Mutual labels:  verilog, fpga, asic
Symbiflow Arch Defs
FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.
Stars: ✭ 137 (+24.55%)
Mutual labels:  verilog, fpga, synthesis
JSON-for-VHDL
A JSON library implemented in VHDL.
Stars: ✭ 56 (-49.09%)
Mutual labels:  fpga, simulation, synthesis
async fifo
A dual clock asynchronous FIFO written in verilog, tested with Icarus Verilog
Stars: ✭ 117 (+6.36%)
Mutual labels:  fpga, verilog, synthesis
Cores
Various HDL (Verilog) IP Cores
Stars: ✭ 271 (+146.36%)
Mutual labels:  verilog, fpga, asic
Riscv
RISC-V CPU Core (RV32IM)
Stars: ✭ 272 (+147.27%)
Mutual labels:  verilog, fpga, asic
Aes
Verilog implementation of the symmetric block cipher AES (Advanced Encryption Standard) as specified in NIST FIPS 197. This implementation supports 128 and 256 bit keys.
Stars: ✭ 131 (+19.09%)
Mutual labels:  verilog, fpga, asic
Clash Compiler
Haskell to VHDL/Verilog/SystemVerilog compiler
Stars: ✭ 958 (+770.91%)
Mutual labels:  verilog, fpga, asic
Open Register Design Tool
Tool to generate register RTL, models, and docs using SystemRDL or JSpec input
Stars: ✭ 126 (+14.55%)
Mutual labels:  verilog, fpga, asic
Logic
CMake, SystemVerilog and SystemC utilities for creating, building and testing RTL projects for FPGAs and ASICs.
Stars: ✭ 149 (+35.45%)
Mutual labels:  verilog, fpga, asic
docker
Scripts to build and use docker images including GHDL
Stars: ✭ 27 (-75.45%)
Mutual labels:  simulation, verilog, synthesis
Vtr Verilog To Routing
Verilog to Routing -- Open Source CAD Flow for FPGA Research
Stars: ✭ 466 (+323.64%)
Mutual labels:  verilog, fpga, synthesis
Higan Verilog
This is a higan/Verilator co-simulation example/framework
Stars: ✭ 35 (-68.18%)
Mutual labels:  verilog, fpga, simulation
Darkriscv
opensouce RISC-V cpu core implemented in Verilog from scratch in one night!
Stars: ✭ 1,062 (+865.45%)
Mutual labels:  verilog, fpga
Electron
A mixed signal netlist language (pre-alpha)
Stars: ✭ 52 (-52.73%)
Mutual labels:  verilog, fpga
Core jpeg
High throughput JPEG decoder in Verilog for FPGA
Stars: ✭ 64 (-41.82%)
Mutual labels:  verilog, fpga

LiveHD

LiveHD: Live Hardware Development

CodeFactor codecov CI

LiveHD is an infrastructure designed for Live Hardware Development. By live, we mean that small changes in the design should have the synthesis and simulation results in a few seconds, as the fast interactive systems usually response in sub-second.

As the goal of "seconds," we do not need to perform too fine grain incremental work. Notice that this is a different goal from having an typical incremental synthesis, where many edges are added and removed in the order of thousands of nodes/edges.

LiveHD Framework

LiveHD is optimized for synthesis and simulation. The main components of LiveHD includes LGraph, LNAST, integrated 3rd-party tools, code generation, and "live" techniques. The core of LiveHD is a graph structure called LGraph (Live Graph). LGraph is built for fast synthesis and simulation, and interfaces other tools like Yosys, ABC, OpenTimer, and Mockturtle. LNAST stands for language neutral AST, which is a high-level IR on both front/back-end of LGraph. LNAST helps to bridge different HDLs and HLS into LiveHD and is useful for HDLs/C++ code generation.

LiveHD overall flow

Contribute to LiveHD

Contributors are welcome to the LiveHD project. This project is led by the MASC group from UCSC.

There is a list of available projects.md to further improve LiveHD. If you want to contribute or seek for MS/undergraduate thesis projects, please contact [email protected] to query about them.

You can also donate to the LiveHD project. The funds will be used to provide food for meetings, equipment, and support to students/faculty at UCSC working on this project.

Building

Read Installation for installation instructions.

LiveHD Data Structures

LiveHD has several custom data structures, the two more important are LGraph and LNAST.

LGraph (Live hardware Graph) is the graph-like data structure and associated API inside LiveHD. LNAST (Language Neutral AST) is the tree-like structure and associated API to easily create new input languages to LiveHD.

InOu

InOus are inputs and/or outputs to/from LiveHD. An input will create a LGraph, e.g., from a verilog description, an json representation, or randomly. Similarly, an output will read an existing LGraph and generate an alternative representation, eg., verilog or json.

Examples of inou can be found in inou/yosys (for verilog handling) and inou/json.

Passes

Passes are transformations over an existing LGraph. In the future, there may be passes over LNAST, but for the moment, we just have LGraph passes. A pass will read an LGraph and make changes to it. Usually this is done for optimizations. Examples of passes can be found in pass/sample, which compute the histogram and count wire numbers of a LGraph.

Style

For coding, please follow the coding styles from Style.md. To contribute, check policy document that explains how to create pull requests and more details about license and copyrights. Also, contributors to LiveHD are expected to adhere to the Code of Conduct.

Code Organization

The code is organized as:

  • core/ - All the core classes of LGraph (nodes, edges, iterators, field tables, ...)
  • meta/ - All the additional fields added to the nodes
  • inou/ - All the inputs and outputs to and from LGraph
  • pass/ - Transformations over LGraph
  • cops/ - Combine operations, ie. take N graphs and creates another graph
  • misc/ - External libraries and other misc code
  • test/ - Testing code, scripts, cases and infrastructure (Note: unit tests should be placed inside the corresponding subfolder)
  • docs/ - Documentation of LiveHD

Git Policies

Before pushing your code, make sure:

  • The code builds bazel build //...
  • The testbenches pass bazel test //...

Push frequently, if your code still has problems, use macros to turn parts of it off:

#if 0
//...
#endif

Pull at least once a day when working, LiveHD is in active development.

Always target warning free compilation. It is okay to commit code that triggers warning during development, but remember to clean up afterwards.

If you are not one of the code owners, you need to create a pull request as indicated in CONTRIBUTING.md and GitHub-use.md.

Publications

For more detailed information and paper reference, please refer to the following publications. If you are doing research or projects corresponding to LiveHD, please send us a notification, we are glad to add your paper.

Live techniques

  1. LiveHD: A Productive Live Hardware Development Flow, Sheng-Hong Wang, Rafael T. Possignolo, Haven Skinner, and Jose Renau, IEEE Micro Special Issue on Agile and Open-Source Hardware, July/August 2020.

  2. LiveSim: A Fast Hot Reload Simulator for HDLs, Haven Skinner, Rafael T. Possignolo, Sheng-Hong Wang, and Jose Renau, International Symposium on Performance Analysis of Systems and Software (ISPASS), April 2020. (Best Paper Nomination)

  3. SMatch: Structural Matching for Fast Resynthesis in FPGAs, Rafael T. Possignolo and Jose Renau, Design Automation Conference (DAC), June 2019.

  4. LiveSynth: Towards an Interactive Synthesis Flow, Rafael T. Possignolo, and Jose Renau, Design Automation Conference (DAC), June 2017.

LGraph

  1. LGraph: A Unified Data Model and API for Productive Open-Source Hardware Design, Sheng-Hong Wang, Rafael T. Possignolo, Qian Chen, Rohan Ganpati, and Jose Renau, Second Workshop on Open-Source EDA Technology (WOSET), November 2019.

  2. LGraph: A multi-language open-source database for VLSI, Rafael T. Possignolo, Sheng-Hong Wang, Haven Skinner, and Jose Renau. First Workshop on Open-Source EDA Technology (WOSET), November 2018. (Best Tool Nomination)

LNAST

  1. LNAST: A Language Neutral Intermediate Representation for Hardware Description Languages, Sheng-Hong Wang, Akash Sridhar, and Jose Renau, Second Workshop on Open-Source EDA Technology (WOSET), 2019.

⚠️ LiveHD is under active development and we keep improving the API. Breaks in compatibility would not happen unless justified, but expect to be

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