From c12fb235f4f463fd21f6c4970becb2dc4dc1d71e Mon Sep 17 00:00:00 2001 From: Yehowshua Immanuel Date: Wed, 11 Dec 2024 13:46:18 -0500 Subject: [PATCH] improve README --- README.md | 44 ++++++++++++++++++++++++++++++------------ assets/nlnet_logo.png | Bin 0 -> 4437 bytes 2 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 assets/nlnet_logo.png diff --git a/README.md b/README.md index 6c6e05a..bdce494 100644 --- a/README.md +++ b/README.md @@ -30,12 +30,26 @@ input, and just have fun! # Status -Right now Haskellator can successfully parse some valid RTLIL into [an AST](./src/RTLIL/Syntax.hs). -We are currently working on expanding the RTLIL that can be parsed to include -[RTLIL](https://github.com/YosysHQ/yosys/blob/main/kernel/rtlil.h) -emitted from Amaranth Lang. +Right now Haskellator can successfully parse RTLIL emitted from +Amaranth lang as well as RTLIL emitted from running Yosys +over large VexRISCV designs. -Currently targetting RTLIL in Yosys .47. +You can generate an RTLIL corpus to test Haskellator against right +from this repo by doing the following: + +```bash +git clone --recursive git@github.com:JoyOfHardware/Haskellator.git +pushd rtlil-corpus; nix-shell; exit; popd +``` + +Now run a command like the following to parse some rtlil into Haskell +data structures found in `src/RTLILParser/AST.hs`. + +```bash +nix-shell +rtlil-parse rtlil-corpus/corpus/gpio.il gpio.hs +Output written to gpio.hs +``` # Usage @@ -59,9 +73,12 @@ $ rtlil-parse rtlil_file.il parsed_ast.hs # Limitations - Does not support propagating non-two state logic, that is, no - support for X or Z values. Default behavior is to reject such - input although future iterations may support initializing X and - Z to 0. + support for X or Z values. Default behavior is to successfully + parser such input. In the future, we will have validation phases + that reject circuits with X or Z values. + + We may eventually support initializing X and Z values to 0. + - All cycles in circuit graphs must have at one D Flip-Flop on the cycle path. This requirement necesarily pre-cludes simulation of circuits such as NAND level-resolution SRAMs. The main reason for @@ -73,7 +90,10 @@ $ rtlil-parse rtlil_file.il parsed_ast.hs as asynchronous FIFOs, but I plan to make sure simulation of such circuits is possible and correct. -# Lessons Learned - - Should have written parser to be token based where after consuming - and capturing token, we consume and discard all following whitespaces - as well as comments... \ No newline at end of file +# Sponsors + +

+ + Logo NLnet + +

\ No newline at end of file diff --git a/assets/nlnet_logo.png b/assets/nlnet_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6e8df544e897dda8fe421b86605d42f80b93e6 GIT binary patch literal 4437 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