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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 literal 0 HcmV?d00001