pub struct KernelImage {Show 13 fields
pub symbol: u32,
pub frame_words: u32,
pub kind: ProcessKind,
pub instance: InstanceId,
pub role: KernelRole,
pub level_head: bool,
pub reactive: bool,
pub program_initial: bool,
pub registered: bool,
pub read_set: Vec<u32>,
pub read_windows: Vec<(u32, u32, u32)>,
pub reset: Option<(u32, EdgeKind)>,
pub disable_scopes: Vec<(u32, String, u32)>,
}Expand description
One compiled kernel the scheduler registers as a process.
Fields§
§symbol: u32Index into DesignImage::symbols: the kernel function’s name.
frame_words: u32§kind: ProcessKind§instance: InstanceId§role: KernelRole§level_head: boolalways @*-style head: registered first, so it is already waiting when
the time-zero updates change its inputs.
reactive: boolRuns in the Reactive region (a checker’s procedures).
program_initial: boolA program block’s initial thread (LRM 24.3): the simulation ends
implicitly once every such thread and its descendants have ended.
registered: boolfalse for a kernel the scheduler never registers (it only hosts an
assertion’s action blocks).
read_set: Vec<u32>AlwaysComb/AlwaysLatch: the template slots the whole procedure
reads, each an “any change” edge.
read_windows: Vec<(u32, u32, u32)>AlwaysComb/AlwaysLatch: (slot, lsb, width) windows narrowing a
read_set slot the body reads only through constant selects (LRM
9.2.2.2.1); a slot without a window is sensitive to its whole value.
reset: Option<(u32, EdgeKind)>AlwaysFF with an asynchronous reset: its template slot and edge.
disable_scopes: Vec<(u32, String, u32)>ProcessCfg::disable_scopes as (resume pc, label, exit pc): what a
disable of another process resumes this one at (LRM 9.6.2).