casperfpga

Crates.iocasperfpga
lib.rscasperfpga
version0.2.2
sourcesrc
created_at2023-03-17 19:10:32.69312
updated_at2024-01-25 02:58:32.410612
descriptionA library for monitor and control of CASPER FPGA deivces
homepagehttps://github.com/kiranshila/casperfpga_rs
repositoryhttps://github.com/kiranshila/casperfpga_rs
max_upload_size
id812940
size1,215,123
Kiran Shila (kiranshila)

documentation

README

casperfpga_rs

license docs rustc build status Codecov

A Rust library for interfacing with CASPER Collaboration FPGA devices. Unlike the python version, this library is intended for mission-critical deployments, where breaking changes, memory bugs, and slow/interpreted languages are unacceptable. Additionally, this library will be rigorously tested, documented, and utilize fully specified interfaces.

Goals

  • Lightweight, fast, correct by construction interfaces
  • Type-checked constructors based on device information (FPG file)
  • Generic fall back interfaces

Future Work

Yellow Blocks

There are quite a few missing yellow blocks in this library, mainly due to the fact that I don't have hardware to test them on. PRs (or hardware donations) welcome!

Transports

Reconcile katcp requirements with "as implemented" details from CASPER devices to add katcp as a transport mechanism.

Device Tree

Currently, .fpg files are the source of automatically generating typesafe interfaces for a given design. If CASPER adopts device tree, we'd want to write a parser that performs the same translation.

Python Integration

We started working on a python wrapper utilizing py03 to act as a multipurpose rewrite of the python version. This won't be as typesafe (of course), but should act as a more stable and tested stand-in for the previous python version.

Contributing

Please run cargo +nightly fmt --all before commiting as well as check clippy with cargo clippy --all.

License

casperfpga_rs is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

Commit count: 80

cargo fmt