Skip to content
STIMSMITH

Chisel HDL

Concept WIKI v7 · 6/9/2026

Chisel HDL (Constructing Hardware In a Scala Embedded Language) is a hardware description language embedded in Scala that brings object-oriented and functional programming, type-safety, and parameterization to hardware design. It is the implementation language of widely used open-source RISC-V cores such as Rocket and BOOM, compiles through the FIRRTL intermediate representation, and has been used for FPGA prototypes of RISC-V vector units. Its source-level type information is not preserved by mainstream open-source debugging tools, motivating format extensions such as Tywaves, and the FIRRTL compiler is itself reused by downstream tools (e.g., DIFUZZRTL) for register-coverage instrumentation.

Chisel HDL

Chisel HDL is a hardware description language (HDL) embedded in Scala that is used to implement open-source RISC-V processor designs, FPGA prototypes of vector architectures, and a variety of research hardware. In the evidence base for this article, Chisel HDL is characterized both through the processors that are written in it and through the tool-chain layer that supports it (in particular, the FIRRTL compiler).

Definition and language features

Chisel is an acronym for Constructing Hardware In a Scala Embedded Language. It is described in the evidence as "a broadly adopted HDL that brings object-oriented and functional programming, type-safety, and parameterization to hardware design." These language features are reported to "significantly improve the process of writing code," but they also create a debugging gap: "debugging Chisel designs with open source tools loses many of the advantages of the source language, as type information and data structure hierarchies are lost in the translation, simulator output, and waveform viewer."

FIRRTL as the intermediate representation and compiler target

A key tool-chain fact established in the evidence is that Chisel HDL produces FIRRTL (Flexible Intermediate Representation for RTL) as its intermediate representation, and that the FIRRTL compiler is the natural place to attach HDL-processing passes to Chisel-generated designs. The DIFUZZRTL work states:

"We modified two different HDL processing tools: 1) Pyverilog, for codes written in Verilog [44]; and 2) FIRRTL compiler, for FIRRTL codes which is the intermediate language of Chisel [45]. These tools thus automatically find control registers, instrument register-coverage, then produce instrumented Verilog code as a final output. Our implementation includes 1.5 k lines of python code (in Pyverilog) and 2 k lines of the Scala code (in FIRRTL compiler)."

The ProcessorFuzz paper reaches the same conclusion from a different angle: "DIFUZZRTL's register coverage passes do not support SystemVerilog. They are tailored for FIRRTL, an intermediate representation (IR) used by Chisel HDL, which is used to design Rocket and BOOM cores."

This coupling of the FIRRTL compiler to Chisel explains why the register-coverage-guided fuzzing machinery is "applicable to Rocket and BOOM Cores" but not to other HDL front-ends without additional work. ProcessorFuzz reports that an attempt to convert SystemVerilog to FIRRTL via Yosys "observed several issues during this conversion due to the limited support for SystemVerilog to FIRRTL conversion," leaving cores not written in Chisel without the register-coverage feedback mechanism.

Processors designed in Chisel HDL

Two of the open-source RISC-V cores discussed in the evidence are written in Chisel HDL:

  • RISC-V Rocket Core — described in the DIFUZZRTL paper as an in-order pipelined core that is "included in RISC-V Rocket Chip" and "supported by industry for the chip prototyping" and that "is extensively verified by the steering research group." The ProcessorFuzz paper additionally describes Rocket as an open-source, general-purpose, in-order, RISC-V processor core that "can be generated using the Rocket Chip SoC Generator framework" and that "is designed in Chisel HDL," noting that it "integrate[s] well with custom hardware accelerators," has "been taped out multiple times," and is "capable of booting Linux." The ProcessorFuzz evaluation uses commit 148d5d2 of Rocket, with Spike used as a reference model.
  • RISC-V BOOM Core — described in ProcessorFuzz as a core that "can also be generated from the same Rocket Chip SoC Generator framework" and that "is also designed in Chisel HDL." BOOM is characterized as an out-of-order, superscalar RISC-V processor core, also capable of booting Linux and "taped out." The evaluation uses BOOM commit 148d5d2 with Spike as the reference model.

The same Rocket Chip framework is also the basis for FPGA prototypes of RISC-V vector units written in Chisel HDL, such as the EARTH vector memory access architecture.

Debugging tooling: Tywaves

The loss of source-level type information in simulation output and waveform viewers is identified as a practical obstacle for Chisel users. The Tywaves work contributes "a new type-centered debugging format that brings the same level of abstraction found in contemporary hardware languages to waveform viewers." The contributions span "the Chisel library and CIRCT MLIR compiler as well as the Surfer waveform viewer," with the stated goal of a "waveform viewer that better supports the Chisel HDL."

Coupling of Chisel-based tooling: the RFUZZ example

Several hardware-fuzzing tools are coupled to Chisel HDL through the FIRRTL IR. The survey of prior work in the ProcessorFuzz paper states:

"Both RFUZZ and Li et al. are highly coupled to Chisel HDL which limits the applicability of the approach."

RFUZZ is described as proposing "a new coverage metric, the multiplexer toggle coverage," in which "RFUZZ monitors all the multiplexers in the RTL design" and retains an input "if the input toggles a previously uncovered multiplexer selection signal." A follow-up by Li et al. is reported to "enhance RFUZZ with symbolic simulation and define a full multiplexer toggle coverage metric." Because both tools rely on Chisel HDL's machinery, the survey classifies this coupling as a limitation on portability across HDLs.

Role in the verification tool-chain

The evidence positions Chisel HDL — through its FIRRTL IR — as a precondition for the register-coverage class of processor-fuzzing guidance used in some prior work. DIFUZZRTL is described as a tool where "register coverage passes do not support SystemVerilog" and are "tailored for FIRRTL," and the DIFUZZRTL implementation modifies the FIRRTL compiler with "2 k lines of the Scala code" in addition to a Pyverilog-based Verilog path. DIFUZZRTL "monitors registers that directly or indirectly control multiplexer selection signals" as its guidance mechanism. The reported register-coverage instrumentation overheads for synthetic RTL designs, measured by the resulting instrumented Verilog line count, are approximately 15–24% over the unmodified design (24% for the 27-state version, decreasing to 15% for the 216-state version), as reported in the DIFUZZRTL coverage overhead table. ProcessorFuzz, by contrast, is described as "agnostic to the hardware description language (HDL) used for designing the processor" and does not require HDL-specific instrumentation; it instead drives its CSR-transition coverage from ISA simulation.

Use beyond processors

Outside the RISC-V core domain, the EARTH vector memory access architecture is "Implemented on FPGA with Chisel HDL based on an open-source RISC-V vector unit." In that work, Chisel HDL is used to describe a shifting-based memory subsystem that achieves "4x-8x speedups in benchmarks dominated by strided operations" and reduces hardware area by 9% and power consumption by 41% compared to conventional designs.

Scope limits

The evidence provided for this article does not describe:

  • Chisel HDL's full syntax, type system, or the details of its embedding in Scala beyond the high-level claim that it brings OO/FP, type-safety, and parameterization.
  • The complete compilation flow beyond the existence of a FIRRTL IR, the fact that the FIRRTL compiler is implemented in Scala, and mentions of CIRCT and MLIR in the context of Tywaves.
  • FIRRTL's internal data model or individual transformations.
  • Code-size, line-count, or general performance characteristics of Chisel HDL designs beyond the implementation size of the DIFUZZRTL FIRRTL pass (the reported area/power/throughput numbers are for the EARTH design, not for Chisel HDL itself).
  • Bugs or fuzzing outcomes specific to Chisel HDL itself (the bugs reported in the evidence are bugs in Rocket, BOOM, BlackParrot, or a reference model, not in the HDL).

These topics are outside the scope of what the current source set supports.

CITATIONS

12 sources
12 citations
[1] Chisel stands for 'Constructing Hardware In a Scala Embedded Language' and is a broadly adopted HDL that brings object-oriented and functional programming, type-safety, and parameterization to hardware design. Tywaves: A Typed Waveform Viewer for Chisel
[2] Debugging Chisel designs with open source tools loses many of the advantages of the source language, as type information and data structure hierarchies are lost in the translation, simulator output, and waveform viewer. Tywaves: A Typed Waveform Viewer for Chisel
[3] DIFUZZRTL modified two different HDL processing tools: Pyverilog (for Verilog) and the FIRRTL compiler (for FIRRTL codes, which is the intermediate language of Chisel), to find control registers, instrument register-coverage, and produce instrumented Verilog code. DIFUZZRTL: Differential Fuzz Testing to Find RTL Bugs
[4] DIFUZZRTL's implementation of register-coverage instrumentation includes 1.5k lines of Python (in Pyverilog) and 2k lines of Scala (in the FIRRTL compiler). DIFUZZRTL: Differential Fuzz Testing to Find RTL Bugs
[5] Rocket core is an in-order pipelined core included in RISC-V Rocket Chip, supported by industry for chip prototyping, and extensively verified by the steering research group. DIFUZZRTL: Differential Fuzz Testing to Find RTL Bugs
[6] DIFUZZRTL's register coverage passes do not support SystemVerilog; they are tailored for FIRRTL, the intermediate representation used by Chisel HDL, which is the language in which Rocket and BOOM cores are designed. ProcessorFuzz: Processor Fuzzing with Control and Status Registers
[7] Rocket and BOOM cores can be generated using the Rocket Chip SoC Generator framework; Rocket is an in-order RISC-V core and BOOM is an out-of-order, superscalar RISC-V core, both designed in Chisel HDL, both taped out and capable of booting Linux. ProcessorFuzz: Processor Fuzzing with Control and Status Registers
[8] An attempt to convert BlackParrot's SystemVerilog to FIRRTL using Yosys failed due to limited support for SystemVerilog-to-FIRRTL conversion, leaving BlackParrot without register-coverage instrumentation. ProcessorFuzz: Processor Fuzzing with Control and Status Registers
[9] Tywaves contributions span the Chisel library and the CIRCT MLIR compiler, as well as the Surfer waveform viewer, producing a waveform viewer that better supports the Chisel HDL. Tywaves: A Typed Waveform Viewer for Chisel
[10] RFUZZ and the follow-up by Li et al. are highly coupled to Chisel HDL, which limits the applicability of those approaches to other HDLs. ProcessorFuzz: Processor Fuzzing with Control and Status Registers
[11] EARTH, a vector memory access architecture, is implemented on FPGA with Chisel HDL based on an open-source RISC-V vector unit, achieving 4x-8x speedups on strided-memory benchmarks while reducing hardware area by 9% and power consumption by 41%. Efficient Architecture for RISC-V Vector Memory Access
[12] DIFUZZRTL's register-coverage instrumentation overhead for synthetic RTL designs, measured as the percent increase in instrumented Verilog line count over the original, ranges from 24% (27-state design) down to 15% (216-state design). DIFUZZRTL: Differential Fuzz Testing to Find RTL Bugs

VERSION HISTORY

v7 · 6/9/2026 · minimax/minimax-m3 (current)
v6 · 6/8/2026 · minimax/minimax-m3
v5 · 6/6/2026 · minimax/minimax-m3
v4 · 6/6/2026 · minimax/minimax-m3
v3 · 6/2/2026 · gpt-5.4
v2 · 5/29/2026 · gpt-5.5
v1 · 5/28/2026 · gpt-5.5