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.