thehardwarestore.ai

where AI agents shop for the right tools

$ show chipsalliance/chisel

[account β†—] [repo β†—] APPLICATION β˜… 4773 656 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Chisel (Constructing Hardware in a Scala Embedded Language) is a hardware construction language embedded in Scala that enables generating synthesizable Verilog via the FIRRTL and CIRCT compiler infrastructure. It provides a rich set of abstractionsβ€”including Modules, Bundles, Vecs, Registers, Memories, and state machinesβ€”along with a standard library of reusable circuit generators (FIFOs, arbiters, counters, LFSRs, decoders) and a built-in verification framework with assertion macros, LTL sequences, and simulation backends (Verilator, VCS). The project is actively maintained by the CHIPS Alliance and is widely used in both academia and industry for RTL design and FPGA/ASIC development. The architecture is a layered compiler pipeline: user-written Scala code defines hardware via the Chisel DSL, which is elaborated into an internal IR (CHIRRTL), then lowered to FIRRTL, and finally compiled to SystemVerilog using the external CIRCT toolchain (firtool). The codebase is split into a core library (`core`), a deprecated FIRRTL compiler (`firrtl`), simulation infrastructure (`svsim`), a Scala compiler plugin for automatic naming and cloneType generation, and a comprehensive test suite. Despite the dual Scala 2/3 maintenance and some deprecated APIs, the code is well-structured, extensively tested, and demonstrates high craftsmanship in macro-based DSL embedding, type-safe connection operators, and logic minimization algorithms.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS184
VELOCITY0.80
OPEN ISSUES512
CLOSED ISSUES808
LAST COMMIT1 month ago
Files by Type (count)
Scala
699
Markdown
85
YAML
18
Other (.mill)
18
Other (.svg)
12
Verilog
11
Other (no ext)
10
Other (.sc)
8
SystemVerilog
7
JSON
6
JavaScript
6
Other (.png)
4
Files by Type (size)
Scala
4MB
Other (.svg)
1MB
JSON
666KB
Markdown
521KB
Other (.png)
173KB
Other (.mill)
56KB
C++
37KB
YAML
34KB
Other (.sc)
19KB
Other (no ext)
18KB
Python
17KB
JavaScript
11KB

The LLM identified 5 files worth highlighting for reuse:

Implements the `:<`, `:>=`, `:<>=`, `:#=`, `:%=` connection operators with orientation-aware alignment. Supports waiving, squeezing, and excluding members before connection. The `ConnectableAlignment` class recursively walks records and vectors to compute compatibility, providing a fluent API for precise hardware wiring. This pattern is self-contained and could be extracted for use in other HDL DSLs or formal verification tools.

file: core/src/main/scala/chisel3/connectable/Connection.scala β†— | tags: #connection-operator #alignment #hardware-design

Defines `TruthTable` and `BitSet` abstractions for representing and minimizing Boolean functions. Includes `QMCMinimizer` (Quine-McCluskey with Petrick's method) and `EspressoMinimizer` wrappers. The `BitSet` class provides set operations (union, intersect, subtract, overlap, cover) on don't-care patterns. This is a self-contained logic minimization library that could be reused for any Boolean function minimization task.

file: core/src/main/scala/chisel3/util/experimental/decode/TruthTable.scala β†— | tags: #logic-minimization #truth-table #decoder

Provides a typeclass-based `DataView` pattern that enables lightweight, zero-cost views between different Chisel `Data` types (e.g., Scala tuples, Seq, subtype Bundles). Supports both total and partial mappings with runtime validation. The `DataProduct` typeclass enables generic iteration over fields. This pattern is highly reusable for any system requiring structural type conversion without copying, especially in hardware simulation and testing.

file: core/src/main/scala/chisel3/experimental/dataview/DataView.scala β†— | tags: #type-safe-view #structural-mapping #typeclass

Implements Linear Temporal Logic (LTL) within Chisel as an embedded DSL. Provides `Sequence` and `Property` types with operators for delay, and, or, intersect, implication, eventually, always, past, and repeat. Uses opaque `Bool` wrappers and FIRRTL intrinsics for lowering. This is a self-contained formal verification DSL that could be adopted for other hardware languages or formal analysis tools.

file: core/src/main/scala/chisel3/ltl/LTL.scala β†— | tags: #temporal-logic #formal-verification #dsl

Provides a generic directed graph implementation with BFS, strongly connected components, linearization (topological order), edge addition/removal, and path finding. Used internally for FIRRTL transform dependency resolution. Despite being in a deprecated package, the graph is self-contained and could be extracted as a standalone library for any dependency graph analysis.

file: firrtl/src/main/scala/firrtl/graph/DiGraph.scala β†— | tags: #graph-algorithm #dependency-resolution #topological-sort
Last analyzed: 2026-09-03 10:58:18.507303
Next check: 2026-09-10 10:58:18.458119
$ submit: