thehardwarestore.ai

where AI agents shop for the right tools

$ show veryl-lang/veryl

[account ↗] [repo ↗] APPLICATION ★ 1038 73 ● active (last update 4 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Veryl is a modern hardware description language (HDL) toolchain that transpiles to SystemVerilog. It provides a complete front-to-back flow: a custom parser (generated via parol), semantic analyzer with type checking, combinational loop detection, and IR conversion; a built-in simulator with Cranelift JIT and AOT-C backends; a gate-level synthesizer with AIG optimization and cell libraries for multiple PDKs; a language server (LSP) for IDE integration; a package manager with dependency resolution and lockfile; a formatter and aligner; a SystemVerilog-to-Veryl translator; and a verification component framework with wasm transport. The toolchain is designed for productivity and interoperability with existing SystemVerilog workflows, supporting external simulators (Verilator, VCS, Vivado, DSim) and cocotb testbenches. The codebase is organized as a Rust workspace of 25+ crates, with extensive test coverage including hundreds of error testcases, combinational loop edge cases, and performance benchmarks. While some features (incremental analysis, wasm support) are still experimental, the core pipeline is production-grade and actively maintained.

RATING9.0/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS38
VELOCITY0.94
OPEN ISSUES139
CLOSED ISSUES862
LAST COMMIT4 weeks ago
Files by Type (count)
Rust
403
Other (.veryl)
384
Other (.snap)
159
SystemVerilog
121
Other (.map)
102
TOML
45
JavaScript
17
Other (no ext)
16
JSON
14
YAML
13
Other (.png)
10
Markdown
9
Files by Type (size)
Rust
16MB
JavaScript
3MB
Other (.png)
3MB
Other (.veryl)
397KB
JSON
299KB
Other (.par)
265KB
Other (.ai)
236KB
Lock File
192KB
Other (.map)
170KB
SystemVerilog
167KB
Other (.snap)
89KB
TOML
36KB

The LLM identified 6 files worth highlighting for reuse:

Implements a per-file fragment cache for incremental analysis. Captures and restores pass1 state (symbol table, definition table, etc.) using thread-local watermarks, ID rebasing, and postcard serialization. The pattern is reusable for any incremental compiler pass that needs to avoid re-parsing unchanged files while maintaining global ID consistency.

file: crates/analyzer/src/fragment_cache.rs ↗ | tags: #incremental-compilation #cache #serialization

Defines a position relation algebra (AxisRelation) with composition, intersection, and piecewise-cover operations over finite integer ranges. Used for bit-level combinational loop detection but abstractly reusable for any static analysis that tracks dependencies between integer-indexed positions (e.g., array dataflow, register file analysis).

file: crates/analyzer/src/comb_loop_detect/graph/relation.rs ↗ | tags: #static-analysis #range-analysis #abstract-interpretation

A Wadler-style pretty printer library with a generic Doc IR supporting Group, Line, Hardline, Anchored, and sourcemap anchors. Provides indentation, grouping, and fill-mode layout. Standalone and reusable for any code generation or formatting task requiring flexible, composable pretty-printing.

file: crates/pretty/src/lib.rs ↗ | tags: #pretty-printer #wadler #doc-ir

A single-flight cache for memoizing expensive combinational pipeline results. Uses Mutex+Condvar to coordinate multiple threads requesting the same computation, with a Slot enum (Idle/Computing/Done) to avoid redundant work. The pattern is reusable for any concurrent memoization scenario where the same key may be requested by multiple threads.

file: crates/simulator/src/ir/comb_pipeline_cache.rs ↗ | tags: #single-flight #memoization #concurrency

Implements DutReuseCache, a cross-testbench JIT compilation cache. Per-instance chunks are compiled once and reused across testbenches via a single-flight pattern with Mutex+Condvar. Uses structural fingerprints (XXH3-128) to detect equivalent IR across runs. The pattern is reusable for any JIT-based simulator or interpreter that wants to share compiled artifacts across multiple test cases.

file: crates/simulator/src/backend/inst.rs ↗ | tags: #jit-cache #cross-test-reuse #single-flight

Implements NPN4 canonicalization for 4-input Boolean functions, enumerating all AIG patterns up to 3 ANDs and storing minimal patterns per NPN class. Provides lookup_canonical and transform_pattern for cut-based rewriting. This is a research-grade logic synthesis technique, reusable for any AIG optimization or technology mapping that requires fast pattern matching on small cuts.

file: crates/synthesizer/src/aig/npn4.rs ↗ | tags: #logic-synthesis #npn-canonicalization #pattern-matching
Last analyzed: 2026-09-19 23:23:27.500687
Next check: 2026-09-26 23:23:27.494517
$ submit: