gaffe-xilinx

Crates.iogaffe-xilinx
lib.rsgaffe-xilinx
version0.1.0
sourcesrc
created_at2018-06-08 01:29:04.845958
updated_at2018-06-08 01:29:04.845958
descriptionParsers and manipulation tools for Xilinx bitstream formats
homepage
repositoryhttps://github.com/gaffe-logic/gaffe-logic.git
max_upload_size
id69139
size105,648
Rick Altherr (kc8apf)

documentation

README

gaffe-xilinx

Rust library for parsing and manipulating Xilinx bitstream formats.

Build Status

xc7-tool Usage

xc7-tool is a multi-tool for manipulating 7-Series bitstreams. If you are mainly interested in looking at the contents of a bitstream, you'll likely find xc7-tool packets and xc7-tool config_mem_frames useful. Commands and their options are documented via --help.

Note that subcommands that parse a bitstream to a configuration will require a device description file. This is a YAML file containing a serialized DeviceDescription. None are currently included in this repo. One can be generated from a debug bitstream with xc7-tool device_description. The logic design inside the bitstream doesn't matter. The only requirements are that it be built with Vivado's BITSTREAM.GENERAL.DEBUGBITSTREAM property set to YES.

Library Usage

Cargo.toml

[dependencies]
gaffe-xilinx = "0.1"

Include the library

extern crate gaffe-xilinx;

Example of parsing a 7-Series bitstream into configuration memory frames

use gaffe_xilinx::from_bytes::FromBytes;
use ::gaffe-xilinx::xc7 as xc7;

let mut device_file = std::fs::File::open(device_file)?;
let device_description : ::xc7::DeviceDefinition = ::serde_yaml::from_reader(device_file)?;

let mut bitstream = std::io::BufReader::new(std::fs::File::open(bitstream)?);
let bitstream = ::xc7::Bitstream::from_bytes(&mut bitstream)?;

let configuration = ::xc7::Configuration::from_bitstream_for_device(&bitstream, &device_description)?;
println!("{:#?}", configuration)

Supported device families

Current development is focused on 7-series (Spartan7, Artix7, Kintex7). Virtex2 and later families all use a similar bitstream format and configuration protocol. If you are interested in looking at these other families, please join ##openfpga (yes, two #s) on Freenode IRC and let us know.

Commit count: 0

cargo fmt