Skip to main content

Op

pub enum Op {
Show 13 variants Nop, Fill, Check, HostToMem, MemToHost, HostToMemPacked, MemToHostPacked, Inject, EccCounts, EngineConfig, EngineTable, EngineRun, StoreRead,
}
Expand description

The bring-up core’s commands.

Variants§

§

Nop

§

Fill

Every channel in mask ARG0 writes ARG2[31:0] lines from line ARG1, line L the pattern seeded ARG2[63:32].

§

Check

Every channel in the mask reads those lines back; RESULT0 the lines that differ.

§

HostToMem

ARG2[31:0] host lines from host line ARG0 into channel ARG1[63:56] at line ARG1[26:0], zero-extended.

§

MemToHost

The reverse, a channel line truncated to a host line; complete when every host write burst is acknowledged.

§

HostToMemPacked

ARG2[31:0] channel lines of the channel’s full width into channel ARG1[63:56] at line ARG1[26:0], read packed end to end from host line ARG0 on: ceil(lines × line bits / 512) host lines, the bytes past the last channel line unused.

§

MemToHostPacked

The reverse: the channel lines packed end to end into host lines from ARG0, the last host line zero past them; complete when every host write burst is acknowledged.

§

Inject

On SECDED lines: the next ARG2[31:0] lines written to each channel in mask ARG0 have bus bits ARG1[9:0] and ARG1[25:16] flipped after they are coded, one bit when the two are equal; complete at once.

§

EccCounts

On SECDED lines: RESULT0 = {words found uncorrectable, words corrected} of channel ARG0[7:0] since reset, each counted modulo 2^32, so a host’s difference of two reads is exact; complete at once.

§

EngineConfig

With the engine: its configuration a program keeps — ARG0[15:0] the token-rows of a step, ARG0[19:16] {per-block scaling, two words, an int8 cache, an f16 state} — and the card port’s map: ARG1[31:0] the granule space’s first logical line, ARG2[26:0] the channel line it starts at, ARG2[60:56] log2 of a granule’s lines; complete at once.

§

EngineTable

With the engine: ARG2[31:0] host lines from host line ARG0 into the engine’s table ARG1[34:32] from entry ARG1[31:0] on, one entry a line (crate::spatial::decode_engine::rtl::engine::Tables; table 6 the store).

§

EngineRun

With the engine: a step, the jobs from word ARG0[31:0] to word ARG1[31:0], the card port holding the channels; complete when the engine is idle again, RESULT0 = {the word the sequencer reached [63:32], the card port’s fault [1], the engine’s fault [0]}.

§

StoreRead

With the engine: ARG2[31:0] beats of its store from beat ARG1[31:0] into host lines from ARG0; complete when every host write burst is acknowledged.

Implementations§

Source§

impl Op

Source

pub const ALL: [Op; 13]

Source

pub fn code(self) -> u8

Source

pub fn name(self) -> &'static str

Trait Implementations§

Source§

impl Clone for Op

Source§

fn clone(&self) -> Op

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 Debug for Op

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Op

Source§

fn eq(&self, other: &Op) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Op

Source§

impl Eq for Op

Source§

impl StructuralPartialEq for Op

Auto Trait Implementations§

§

impl Freeze for Op

§

impl RefUnwindSafe for Op

§

impl Send for Op

§

impl Sync for Op

§

impl Unpin for Op

§

impl UnsafeUnpin for Op

§

impl UnwindSafe for Op

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,