bittide / bittide-hardware

15 stars 1 forks source link

bittide-hardware

bittide/bittide-hardware contains a (very much work-in-progress) hardware implementation of a Bittide system (also see About Bittide). We currently target Vivado FPGAs paired with SkyWorks clock adjustment boards.

Getting started

This project uses a bunch of different languages and tool(chain)s. Nix is used to manage this. To get a development shell install nix and run the following command in the root of this repository:

nix-shell

The started shell contains everything needed to develop Bittide components.

TODO: Add overview of components

Development

We follow a standard GitHub development flow. Our development branch is called staging, which periodically gets merged into main (after running more expensive CI checks at night). Free free to open a PR. If you're not sure what to do, open a discussion thread.

Tips & Tricks

About Bittide

Bittide is a novel distributed system architecture based on the idea that synchronous, ahead-of-time scheduling using a logical global clock provides a set of properties that simplify the design and utilization of large systems.

With bittide we aim to build a system with guaranteed performance and robustness and address today's distributed systems inefficiencies and unpredictable long tail latencies. This ranges from simple things like video conferencing without glitches to virtual reality sports competitions with precisely equivalent system response times for all competitors. The properties underlying bittide support the orchestration and composition of microservices into a system without queueing delays.

Bittide is part of Google Research, and is not an official Google product.

Licence

This code is shared under by Google LLC under the Apache 2.0 license. See the LICENSE file for terms.

This project uses the REUSE tool to check for license compliance.