Skip to content

Latest commit

 

History

History
15 lines (13 loc) · 1.39 KB

README.md

File metadata and controls

15 lines (13 loc) · 1.39 KB

Fluid (minimal version)

Fluid is a framework for constructing latency insensitive designs. Refer to Joe Melber's PhD Thesis for more details. This is a very minimal subset of Fluid meant just for customizing Pigasus 2.0. Fluid accepts design descriptions as modules connected via latency-insensitive channels and transforms that into RTL. The modules and connections between them can be controlled through a Python API.

This subset of Fluid is written in Python 3 only and has no external depdendencies. Using the visualizer however requires installing graphviz and PyGraphviz.

Directory structure

  • header.py: main Fluid interface.
  • genericplatform.py: platform-independent Fluid implementation.
  • parse_ast.py: an internal representation of Verilog code as an AST in Python, for use in the generator.
  • vtl.py: Verilog Templating Language, a custom DSL for writing Verilog from Python code, used to quickly construct Verilog code snippets for the generator.
  • visualizer.py: Graphviz-based visualizer of the design generated by Fluid.
  • services.py: Fluid definitions of Pigasus modules. This is also a good reference for constructing your own Fluid modules.
  • connections.py: Python functions to wrap the base connection type to make more complex connections, such as the auto clock-crossing ChannelFIFO used between Pigasus modules.