Python framework for building custom FPGA cores and SoCs, with buses, peripherals, CPU integration and simulation support.
chipsalliance/chisel
An open-source hardware description language embedded in Scala for writing parameterizable digital circuit generators that emit Verilog.
- Stars
- 4,829
- Forks
- 665
- Open issues
- 522
- Last commit
- 19 hours ago
What is it?
Chisel (Constructing Hardware in a Scala Embedded Language) is a hardware description language for designing digital electronics at the register-transfer level. Instead of writing Verilog by hand, designers write Scala code that builds circuits, so ordinary programming constructs like functions, classes, and loops can be used to generate hardware. The output is synthesizable Verilog or SystemVerilog, usable for both ASIC and FPGA designs.
The main idea is the circuit generator: a parameterized Scala class, such as a FIR filter defined by a list of coefficients, can be instantiated and reused across designs. The Chisel standard library (chisel3.util) provides reusable components such as FIFO queues, arbiters, and ready-valid interfaces. Chisel is powered by the FIRRTL intermediate representation and the CIRCT firtool compiler.
The project is Apache 2.0 licensed and developed under the CHIPS Alliance. The repository includes sub-projects for the core library, the compiler plugin, and an svsim simulation library that targets Verilator and VCS. Tutorials, a textbook, and a project template are linked from the docs.
Key features
- 01Describes hardware in Scala, reusing classes, functions and loops for parameterized circuits.
- 02Emits synthesizable Verilog or SystemVerilog through ChiselStage and firtool.
- 03Provides a standard library with FIFO queues, arbiters and Decoupled ready-valid interfaces.
- 04Includes svsim for running simulations on Verilator and VCS.
- 05Builds with Mill and publishes artifacts for use with sbt projects.
Use cases
- Writing reusable, parameterized IP blocks for ASIC or FPGA designs.
- Building processor or accelerator designs that need generator-style code.
- Learning digital design with a modern programming language and online tutorials.
- Generating Verilog from Scala code for downstream synthesis and simulation flows.
Quick start
- 1
Start from the Chisel Template repository, which provides a pre-configured project
- 2
Or set up your own project by adding the Chisel dependency and compiler plugin to build.sbt
- 3
Try the online Chisel Bootcamp tutorial in the browser, with no setup needed
Things to know
- Requires a Scala and sbt toolchain on the JVM, which adds setup overhead.
- Verilog generation depends on the firtool compiler, so some online playgrounds such as Scastie cannot emit Verilog.
Topics
FAQ
- What is chisel?
- An open-source hardware description language embedded in Scala for writing parameterizable digital circuit generators that emit Verilog. Chisel (Constructing Hardware in a Scala Embedded Language) is a hardware description language for designing digital electronics at the register-transfer level. Instead of writing Verilog by hand, designers write Scala code that builds circuits, so ordinary programming constructs like functions, classes, and loops can be used to generate hardware. The output is synthesizable Verilog or SystemVerilog, usable for both ASIC and FPGA designs.
- Is chisel free to use? What license does it have?
- chisel is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is chisel still maintained?
- Actively maintained. The last commit to chisel was on Nov 6, 2026.
- What can I use chisel for?
- Writing reusable, parameterized IP blocks for ASIC or FPGA designs. Building processor or accelerator designs that need generator-style code. Learning digital design with a modern programming language and online tutorials. Generating Verilog from Scala code for downstream synthesis and simulation flows.
- How do I install chisel?
- Start from the Chisel Template repository, which provides a pre-configured project Or set up your own project by adding the Chisel dependency and compiler plugin to build.sbt Try the online Chisel Bootcamp tutorial in the browser, with no setup needed
- Where can I get chisel?
- The source code and installation instructions are on GitHub: https://github.com/chipsalliance/chisel
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Open-source high-performance RISC-V processor core written in Scala with Chisel, developed by the XiangShan project.
A 64-bit RISC-V CPU core written in SystemVerilog that boots Linux on an Arty A7 FPGA board, with the RTL, verification and documents all written by Claude Code.
A modular, extensible Go framework for building streaming media servers supporting RTMP, RTSP, HLS, WebRTC and more.
Free, open source Bootstrap 5 HTML dashboard UI kit with ready-made admin pages, components, dark mode and RTL support.
An admin dashboard UI template built with Shadcn UI components and Vite, with light/dark mode, RTL support, and a global search command.