Struct Wormhole

Source
pub struct Wormhole {
    pub chip_if: Arc<dyn ChipInterface + Send + Sync>,
    pub arc_if: Arc<dyn ChipComms + Send + Sync>,
    pub is_remote: bool,
    pub use_arc_for_spi: bool,
    pub arc_addrs: ArcMsgAddr,
    pub eth_locations: [EthCore; 16],
    pub eth_addrs: EthAddresses,
    /* private fields */
}
Expand description

Implementation of the interface for a Wormhole both the local and remote Wormhole chips are represented by this struct

Fields§

§chip_if: Arc<dyn ChipInterface + Send + Sync>§arc_if: Arc<dyn ChipComms + Send + Sync>§is_remote: bool§use_arc_for_spi: bool§arc_addrs: ArcMsgAddr§eth_locations: [EthCore; 16]§eth_addrs: EthAddresses

Implementations§

Source§

impl Wormhole

Source§

impl Wormhole

Source

pub fn init_eth_addrs(&mut self) -> Result<(), PlatformError>

Source

pub fn get_if<T: ChipInterface>(&self) -> Option<&T>

Source

pub fn open_remote( &self, addr: impl IntoChip<EthAddr>, ) -> Result<Wormhole, PlatformError>

Source

pub fn spi_write(&self, addr: u32, value: &[u8]) -> Result<(), Box<dyn Error>>

Source

pub fn spi_read( &self, addr: u32, value: &mut [u8], ) -> Result<(), Box<dyn Error>>

Trait Implementations§

Source§

impl ChipImpl for Wormhole

Source§

fn update_init_state( &mut self, status: &mut InitStatus, ) -> Result<ChipInitResult, PlatformError>

Update the initialization state of the chip. The primary purpose of this function is to tell the caller when it is safe to starting interacting with the chip. Read more
Source§

fn get_arch(&self) -> Arch

Returns the current arch of the chip, can be used to avoid needing to ducktype when downcasting.
Source§

fn arc_msg(&self, msg: ArcMsgOptions) -> Result<ArcMsgOk, PlatformError>

Send an arc_msg to the underlying chip.
Source§

fn get_neighbouring_chips(&self) -> Result<Vec<NeighbouringChip>, PlatformError>

Get a list of neighbouring chips. Will return an empty list for gs and up to four chips for wh.
Source§

fn as_any(&self) -> &dyn Any

Convinence function to downcast to a concrete type.
Source§

fn get_telemetry(&self) -> Result<Telemetry, PlatformError>

Get telemetry information from the chip. The information is not cached, so should not be called repeatedly.
Source§

fn get_device_info(&self) -> Result<Option<DeviceInfo>, PlatformError>

Get information about the underlying chip transport. This is a hack to get the physical id of the chip.
Source§

impl Clone for Wormhole

Source§

fn clone(&self) -> Wormhole

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl HlComms for &Wormhole

Source§

fn comms_obj(&self) -> (&dyn ChipComms, &dyn ChipInterface)

Source§

fn noc_read( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &mut [u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_write( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_broadcast( &self, noc_id: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_read32( &self, noc_id: u8, x: u8, y: u8, addr: u64, ) -> Result<u32, Box<dyn Error>>

Source§

fn noc_write32( &self, noc_id: u8, x: u8, y: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>

Source§

fn noc_broadcast32( &self, noc_id: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>

Source§

fn axi_read(&self, addr: u64, data: &mut [u8]) -> Result<(), Box<dyn Error>>

Source§

fn axi_write(&self, addr: u64, data: &[u8]) -> Result<(), Box<dyn Error>>

Source§

fn axi_read32(&self, addr: u64) -> Result<u32, Box<dyn Error>>

Source§

fn axi_write32(&self, addr: u64, value: u32) -> Result<(), Box<dyn Error>>

Source§

impl HlComms for Wormhole

Source§

fn comms_obj(&self) -> (&dyn ChipComms, &dyn ChipInterface)

Source§

fn noc_read( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &mut [u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_write( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_broadcast( &self, noc_id: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>

Source§

fn noc_read32( &self, noc_id: u8, x: u8, y: u8, addr: u64, ) -> Result<u32, Box<dyn Error>>

Source§

fn noc_write32( &self, noc_id: u8, x: u8, y: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>

Source§

fn noc_broadcast32( &self, noc_id: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>

Source§

fn axi_read(&self, addr: u64, data: &mut [u8]) -> Result<(), Box<dyn Error>>

Source§

fn axi_write(&self, addr: u64, data: &[u8]) -> Result<(), Box<dyn Error>>

Source§

fn axi_read32(&self, addr: u64) -> Result<u32, Box<dyn Error>>

Source§

fn axi_write32(&self, addr: u64, value: u32) -> Result<(), Box<dyn Error>>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> HlCommsInterface for T
where T: HlComms,

Source§

fn axi_translate(&self, addr: impl AsRef<str>) -> Result<AxiData, AxiError>

Source§

fn axi_sread<'a>( &self, addr: impl AsRef<str>, value: &'a mut [u8], ) -> Result<&'a [u8], PlatformError>

Source§

fn axi_sread_to_vec( &self, addr: impl AsRef<str>, ) -> Result<Vec<u8>, PlatformError>

Source§

fn axi_sread32(&self, addr: impl AsRef<str>) -> Result<u32, PlatformError>

Source§

fn axi_swrite( &self, addr: impl AsRef<str>, value: &[u8], ) -> Result<(), PlatformError>

Source§

fn axi_swrite32( &self, addr: impl AsRef<str>, value: u32, ) -> Result<(), PlatformError>

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.