https://github.com/kiranshila/casperfpga_rs
A Rust library for monitor and control of CASPER Collaboration FPGA Devices
https://github.com/kiranshila/casperfpga_rs
astronomy casper casperfpga fpga rust
Last synced: about 1 year ago
JSON representation
A Rust library for monitor and control of CASPER Collaboration FPGA Devices
- Host: GitHub
- URL: https://github.com/kiranshila/casperfpga_rs
- Owner: kiranshila
- License: apache-2.0
- Created: 2022-11-14T23:35:09.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-01-25T02:58:18.000Z (over 2 years ago)
- Last Synced: 2024-05-01T13:16:39.410Z (about 2 years ago)
- Topics: astronomy, casper, casperfpga, fpga, rust
- Language: Rust
- Homepage:
- Size: 2.57 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# casperfpga_rs
[](#license)
[](https://docs.rs/casperfpga/latest/casperfpga/index.html)
[](https://www.rust-lang.org)
[](https://github.com/kiranshila/casperfpga_rs/actions)
[](https://app.codecov.io/gh/kiranshila/casperfpga_rs)
A Rust library for interfacing with CASPER Collaboration FPGA devices. Unlike the [python version](https://github.com/casper-astro/casperfpga), 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](https://github.com/kiranshila/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](https://github.com/PyO3/pyo3) 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.