======================================================== ________________ ___ ________ / ____/ ____/ __ \/ | / ____/ /___ _ __ / / / / __/ /_/ / /| |______/ /_ / / __ \ | /| / / / /___/ /_/ / _, _/ ___ /_____/ __/ / / /_/ / |/ |/ / \____/\____/_/ |_/_/ |_| /_/ /_/\____/|__/|__/ ========================================================
CGRA-Flow is an integrated framework for CGRA compilation, exploration, synthesis, and development.
A demo at repl.it (https://repl.it/@ChengTan/cgra-flow) shows some features of CGRA-Flow (the verilog generation and evaluation are not available due to repl.it's limited support of python environment). To explore all the features, please setup CGRA-Flow locally or leverage the docker image.
The docker image is available here.
Recommended machine configuration
- CPU: >= 6 cores
- Memory: 25~30G
2x2 tiles run time:
clk_period (ps) frequency (Hz) time (hour) 1000 1G ~40 10,000 100M ~7 100,000 10M ~7
As CGRA-Flow requires GUI, a script is provided for setting up the display:
docker pull cgra/cgra-flow:20251214_demo
# For Mac users:
sh ./run_mac_docker.sh
# Windows Docker customtkinter style UI (Please setup GUI (X-11) first)
# In WSL, execute below script, it will enter container and config x11 DISPLAY automatically
sh ./run_windows_docker.sh
# Don't forget to activate the python virtual environment once you are in the container:
source /WORK_REPO/venv/bin/activateOtherwise, if you don't need the GUI, development can be performed in the container with the environment well set up:
docker pull cgra/cgra-flow:20251214_demo
docker run -it cgra/cgra-flow:20251214_demo
source /WORK_REPO/venv/bin/activateIf you prefer to build the Docker image locally:
# Build the Docker image
docker build -t cgra-flow:latest . # Startup theme mode selector UI
python launch.pyCGRA-Flow requires Python3.7.
Refer to the build scripts or look into specific repo for the manual installation if you don't want to use docker.
👋 Welcome Contributors!
To contribute to this project, you can clone the Github repository and mount it as a volume
in the Docker container. This allow you to edit code on your host machine while testing changes inside
the container environment.
Update the Docker run command to mount your local repository(take run_windows_docker.sh as an example):
IMAGE=cgra/cgra-flow:20251112
CONTAINER=mycgraflow
XSOCK=/tmp/.X11-unix
# for developer: mount the upstream repo to the container.
# Please update the path to the actual path on your machine.
MOUNT_PATH=/path/to/your/cloned/CGRA-Flow:/path/to/container
sudo docker run \
-it \
--name=$CONTAINER \
-v $XSOCK:$XSOCK:rw \
-v $MOUNT_PATH \
-e DISPLAY=$DISPLAY \
$IMAGE \
/bin/bash@inproceedings{tan2020opencgra,
title={OpenCGRA: An open-source unified framework for modeling, testing, and evaluating CGRAs},
author={Tan, Cheng and Xie, Chenhao and Li, Ang and Barker, Kevin J and Tumeo, Antonino},
booktitle={2020 IEEE 38th International Conference on Computer Design (ICCD)},
pages={381--388},
year={2020},
organization={IEEE}
}
CGRA-Flow is offered under the terms of the Open Source Initiative BSD 3-Clause License. More information about this license can be found here:

