pub enum FabricTile {
Alu(AluOp),
Cmp(CmpKind),
Func(FuncUnit),
Mem,
Wire,
Control,
}Expand description
The fabric tile an Op lowers to. A compute tile (Alu/Cmp/Func) has independently-fuzzable
datapath semantics and MUST carry an eval == VM witness in the coverage lock; a structural tile
(Wire/Control) is realized by the fabric framework itself (a route, a const, a controller edge) and
is exercised by every fabric, so it carries no standalone fuzz witness.
Variants§
Alu(AluOp)
Combinational arithmetic — an AluOp tile (alu.v).
Cmp(CmpKind)
Combinational comparison — folds into a Select predicate tile.
Func(FuncUnit)
Sequential functional unit — the shared_divider (division/remainder), start/done handshake.
Mem
Memory read — a scratchpad/heap read tile (the induction counter drives the address bus). Today:
IterNext’s element read xs[iv] in a sequence loop (proven by fabric_mem_lock).
Wire
Plumbing — Move/LoadConst: realized as a wire / a baked constant, no compute tile.
Control
Control — Return/ReturnNothing: realized by the CFG controller (the fabric’s result edge).
Implementations§
Source§impl FabricTile
impl FabricTile
Sourcepub fn is_compute(&self) -> bool
pub fn is_compute(&self) -> bool
A compute tile has independently-fuzzable datapath semantics (so it needs a witness); structural
tiles (Wire/Control) are framework plumbing (exercised by every fabric, no standalone witness).
Sourcepub fn capability(&self) -> Option<Capability>
pub fn capability(&self) -> Option<Capability>
The capability a described target must provide to HOST this tile: the ALU op, the functional unit,
the predicated mux a comparison folds into, the state plane for a memory tile. A structural tile
(Wire/Control) is the fabric framework’s own and needs nothing from the descriptor.
Trait Implementations§
Source§impl Clone for FabricTile
impl Clone for FabricTile
Source§fn clone(&self) -> FabricTile
fn clone(&self) -> FabricTile
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FabricTile
impl Debug for FabricTile
impl Copy for FabricTile
Auto Trait Implementations§
impl Freeze for FabricTile
impl RefUnwindSafe for FabricTile
impl Send for FabricTile
impl Sync for FabricTile
impl Unpin for FabricTile
impl UnsafeUnpin for FabricTile
impl UnwindSafe for FabricTile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.