Struct Bitstream

Source
pub struct Bitstream { /* private fields */ }
Expand description

ECP5 bitstream in-memory.

Can be loaded from a path or file, and modified as required to change IDCODE checks and SPI mode and frequency.

Implementations§

Source§

impl Bitstream

Source

pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Self>

Open a bitstream from the provided path.

Source

pub fn from_file(file: &mut File) -> Result<Self>

Open a bitstream from the provided open File.

Source

pub fn from_data(data: &[u8]) -> Self

Load a bitstream from the provided raw bitstream data.

Source

pub fn new(data: Vec<u8>) -> Self

Load a bitstream directly from a Vec<u8>.

Source

pub fn data(&self) -> &[u8]

Get the underlying bitstream data.

Source

pub fn check_and_fix_idcode( &mut self, idcode: ECP5IDCODE, fix: bool, ) -> Result<()>

Check the provided IDCODE matches the IDCODE check in the bitstream.

If the bitstream does not contain an IDCODE check, no action is taken.

If the bitstream contains a compatible but different IDCODE, and fix is true, a warning is logged and the bitstream is patched to idcode.

If the bitstream contains an incompatible IDCODE, an error is logged and this method returns an error.

See ECP5IDCODE::compatible.

Source

pub fn remove_idcode(&mut self) -> Result<()>

Replace the VERIFY_ID command, if any, with NOOPs.

If the bitstream does not contain an IDCODE check, no action is taken.

Source

pub fn remove_spimode(&mut self) -> Result<()>

Replace the SPI_MODE command, if any, with NOOPs.

If the bitstream metadata parsing was not successful or no SPI_MODE command was found, no action is taken.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.