app | ||
src | ||
.gitignore | ||
CHANGELOG.md | ||
default.nix | ||
haskellator.cabal | ||
LICENSE | ||
README.md | ||
shell.nix |
What is it?
Haskellator is an experimental tool designed to unlock new possibilities in processing RTL (Register-Transfer Level) netlists. It aims to enhance simulation efficiency, offer insightful change analysis, and explore experimental synthesis techniques.
Key Features:
-
Sparse Simulation: Traditional open-source RTL simulators store signal values every time a signal changes. HaskellatorSim will save signal states only if they’ve changed within the last host CPU second of simulation. This approach compresses the simulation data whilst enabling quick recomputation of any gaps when viewing saved simulations.
This requires access to the RTLIL sources and simulation save files to fill in any gaps.
-
Change Condition Analysis: Haskellator will provide tools to analyze and trace the cause of signal changes during simulation. By forming hypotheses about which signals influenced a change, it offers a "git-blame" style feature for simulations. This functionality also requires access to the original RTLIL sources and simulation save files.
-
Experimental Synthesis Techniques: We hope to explore the potential of using reinforcement learning neural networks to optimize synthesis passes for input netlists. The synthesized netlist could be placed and routed to determine fmax, which could be used as the score the neural network will learn to optimize.
These are just a few of the concepts we're experimenting with. The broader goal is to explore innovative ideas, develop a high-quality tool that can evolve with community input, and just have fun!
Status
Right now Haskellator can successfully parse some valid RTLIL into an AST. We are currently working on expanding the RTLIL that can be parsed to include RTLIL emitted from Amaranth Lang.
Usage
Run and Build With Nix(Linux and MacOS)
The following will allow you to see a pretty printed
AST for the given input il
file.
$ nix-shell
$ rtlil-parse test/corpus/xprop_dffe_1nnd_wrapped_xprop.il -o parsed1.ast
TODO
- automated CICD on gitea on personal servers