JSON-TIL is a tool for automating the design process for parsing JSON streams on FPGAs. It uses Tydi-JSON components, which implement JSON parsing components with Tydi streaming interfaces. JSON-TIL simplifies the process of assembling and configuring the parsing components required for specific JSON schema streams.
- Automatic JSON Parsing Design: JSON-TIL can analyze a sample JSON stream and automatically assemble the necessary parsing components.
- Tydi-JSON Component Tree Visualizer: Provides a visualization of the assembled Tydi-JSON component tree for better understanding and debugging.
- TIL Generator: Outputs a Tydi Intermediate Language (TIL) file, representing the parsing logic for the JSON stream.
- TydiLang Generator: In addition to TIL, JSON-TIL now supports generating TydiLang (
.td
) files. TL can automatically insert stream duplicators, addressing the biggest issue in the original workflow.
- Input: Provide a sample JSON stream to JSON-TIL.
- JSON Analysis: The tool analyzes the JSON structure and identifies required parsing components.
- Component Assembly: Automatically assembles and connects Tydi-JSON parsing components.
- Output: Generates a TIL file and a TydiLang file that represent the parsing logic for the JSON stream.
- HDL Generation:
- Use the
til
file with TIL-VHDL to generate a VHDL project for FPGA implementation. - Use the
td
file with TydiLang and Tydi-lang-2-Chisel to generate Chisel code and subsequently Verilog output for the FPGA implementation. See Tydi-Chisel for details.
- Use the
To use JSON-TIL, clone the repository and build the project:
git clone https://github.com/your-org/json-til.git
cd json-til
cargo build --release
# or
cargo run -- -i examples/simple.json -o output --visualize
- Rust (latest stable version)
- Python 3 (used by
pyo3
) - TIL-VHDL or TydiLang for usage of the output
If you use JSON-TIL in your research, please cite it using the following BibTeX entry:
@article{haenen_json-til_2023,
title = {{JSON}-{TIL}: {A} tool for generating/reducing boilerplate when creating and composing streaming {JSON} dataflow accelerators using {Tydi} interfaces},
url = {https://github.com/jhaenen/JSON_hierachy/blob/master/TIL_JSON.pdf},
author = {Haenen, Jasper},
month = jan,
year = {2023},
}
This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.