pub struct MaskedNbaUpdate {
pub cell: StateCellId,
pub row: Option<u64>,
pub value: FourStateValue,
pub mask: Vec<u64>,
pub window: Option<u32>,
pub source: ProcessId,
pub order: u32,
pub pulse: bool,
pub coll: Option<CollWrite>,
pub obj: Option<ObjWrite>,
}Expand description
A staged nonblocking write to PART of a cell – the bits set in mask
(q[3:0] <= v, {a, b} <= v) – and/or to one row of a memory cell
(mem[i] <= v, row: Some(i)). value carries the new bits already
shifted into position; bits outside mask are ignored. mask has one
word per 64 bits of the cell (or row) – or, when window is Some(w)
(a write to part of a huge vector), one word per word of the span
starting at plane word w, value and mask covering only that span.
Fields§
§cell: StateCellId§row: Option<u64>§value: FourStateValue§mask: Vec<u64>§window: Option<u32>§source: ProcessId§order: u32§pulse: boolA nonblocking event trigger (->> e, LRM 15.5.2): the update is not a
value to merge but “trigger the named event” – the commit pass bumps
the event cell’s trigger count and stamps it with the commit time
(value and mask are unused).
coll: Option<CollWrite>A nonblocking write of one element of the queue or dynamic array
whose handle the cell (or row) holds (a[2][k] <= v, LRM 1800-2023
10.4.2, 7.10): the commit pass looks the handle up then, so an
out-of-range index is ignored at update time. mask carries the
element’s words; value is unused.
obj: Option<ObjWrite>A nonblocking write of (part of) a class property
(obj.p <= v, obj.v[3:0] <= v, LRM 1800-2023 10.4.2, 8.x): the
update names no cell, only the object, which the staged write keeps
alive until it commits. value and mask are unused.