pub struct SlotDescriptor {
pub key: SymbolKey,
pub offset: SlotOffset,
pub initial: Option<FourStateValue>,
pub net_info: Option<NetLayout>,
}Expand description
One signal’s slot within a StateLayout (state.md Key Data Structures;
ledger ST-141).
Reconciliation (ST-153): state.md’s {key, offset, initial, net_info}
(adopted here) vs. runtime.md’s independently drafted {name, byte_offset, bit_width, is_4state, kind} are reconciled by composition, not
duplication, not by picking one draft wholesale:
nameis available by composingkeywithcrate::netlist::NetlistView::hierarchical_path— never stored a second time here, since a second copy could drift from the netlist track’s own name table.byte_offset/bit_widthareoffset.word_offset/offset.bit_width(already present onSlotOffset— ST-144 — no renaming needed).is_4stateis dropped, not reconciled 1:1: 4-state-ness is a whole-arenaBuildMode(Task 2/10), not a per-slot property, so runtime.md’s per-slot field would be redundant with the arena’s own mode.kindisnet_info’s presence/absence (Some=> net,None=> variable/port) plusNetLayout::kindwhen present.
This is the one, documented SlotDescriptor shape this plan’s every later
task consumes identically, and the one CODEGEN/RUNTIME are expected to
consume once their own waves start.
initial is STATE’s own sv-lang-free FourStateValue, not
sv_lang::OwnedSVInt: this type is consumed by vj-runtime, which must
never reach the sv-lang family (ARCHITECTURE §3). The frontend-side layout
builder converts constants with four_state_of_constant before storing them.
Fields§
§key: SymbolKey§offset: SlotOffset§initial: Option<FourStateValue>§net_info: Option<NetLayout>