pub struct Chiplets {
pub hasher: Hasher,
pub bitwise: Bitwise,
pub memory: Memory,
pub ace: Ace,
pub kernel_rom: KernelRom,
}Expand description
This module manages the VM’s hasher, bitwise, memory, arithmetic circuit evaluation (ACE) and kernel ROM chiplets and is responsible for building a final execution trace from their stacked execution traces and chiplet selectors.
The module’s trace can be thought of as 5 stacked segments in the following form.
The chiplet system uses s_ctrl = column 0 to select the hasher controller.
Columns 1-4 (s1..s4) subdivide the remaining region. The final shared data column is
row-local: bitwise rows use it as normal/AEAD stream mode, while controller rows use it as
the Merkle/padding flag.
-
Hasher segment: fills the first rows of the trace up to the hasher
trace_len.- column 0 (s_ctrl): ONE
- columns 1-19: hasher-controller trace
- column 22: Merkle/padding discriminator
-
Bitwise segment: begins at the end of the hasher segment.
- column 0 (s_ctrl): ZERO
- column 1 (s1): ZERO
- columns 2-14: execution trace of bitwise chiplet
- columns 15-21: unused columns padded with ZERO
- column 22: ZERO for normal bitwise rows
-
Memory segment: begins at the end of the bitwise segment.
- column 0 (s_ctrl): ZERO
- column 1 (s1): ONE
- column 2 (s2): ZERO
- columns 3-19: execution trace of memory chiplet
- columns 20-21: unused columns padded with ZERO
- column 22: ZERO
-
ACE segment: begins at the end of the memory segment.
- column 0 (s_ctrl): ZERO
- column 1-2 (s1, s2): ONE
- column 3 (s3): ZERO
- columns 4-20: execution trace of ACE chiplet
- column 22: ZERO
-
Kernel ROM segment: begins at the end of the ACE segment.
- column 0 (s_ctrl): ZERO
- columns 1-3 (s1, s2, s3): ONE
- column 4 (s4): ZERO
- columns 5-9: execution trace of kernel ROM chiplet
- columns 10-21: unused columns padded with ZERO
- column 22: ZERO
-
Padding segment: fills the rest of the trace.
- column 0 (s_ctrl): ZERO
- columns 1-4 (s1..s4): ONE
- columns 5-22: ZERO
Column ranges are stable for existing chiplets: controller uses columns 1..20, normal bitwise uses 2..15, memory uses 3..18, ACE uses 4..20, and kernel ROM uses 5..10. AEAD stream rows reuse the bitwise region and use columns 2..21 as payload, with column 22 as the AEAD stream selector.
Fields§
§hasher: Hasher§bitwise: Bitwise§memory: Memory§ace: Ace§kernel_rom: KernelRomImplementations§
Source§impl Chiplets
impl Chiplets
Sourcepub fn new(kernel: KernelDescriptor) -> Self
pub fn new(kernel: KernelDescriptor) -> Self
Returns a new chiplet set instantiated with the provided kernel descriptor.
Sourcepub fn trace_len(&self) -> usize
pub fn trace_len(&self) -> usize
Returns the chiplets trace length, including the mandatory padding row used by auxiliary connector columns that read the memory chiplet.
Sourcepub fn eidos_compression_trace_len(&self) -> usize
pub fn eidos_compression_trace_len(&self) -> usize
Returns the unpadded trace length of the standalone Eidos compression AIR.
Sourcepub fn bitwise_start(&self) -> RowIndex
pub fn bitwise_start(&self) -> RowIndex
Returns the index of the first row of Bitwise execution trace.
Sourcepub fn memory_start(&self) -> RowIndex
pub fn memory_start(&self) -> RowIndex
Returns the index of the first row of the Memory execution trace.
Sourcepub fn kernel_rom_start(&self) -> RowIndex
pub fn kernel_rom_start(&self) -> RowIndex
Returns the index of the first row of KernelRom execution trace.
Sourcepub fn padding_start(&self) -> RowIndex
pub fn padding_start(&self) -> RowIndex
Returns the index of the first row of the padding section of the execution trace.
Sourcepub fn append_range_checks(&self, range_checker: &mut RangeChecker)
pub fn append_range_checks(&self, range_checker: &mut RangeChecker)
Adds all range checks required by the memory chiplet to the provided RangeChecker
instance.
Sourcepub fn append_eidos_compression_range_checks(
&self,
eidos_compression_height: usize,
range_checker: &mut RangeChecker,
)
pub fn append_eidos_compression_range_checks( &self, eidos_compression_height: usize, range_checker: &mut RangeChecker, )
Adds range checks emitted by the standalone Eidos compression AIR.
Sourcepub fn into_traces(
self,
trace_len: usize,
eidos_compression_trace_len: usize,
) -> (ChipletsTrace, EidosCompressionTrace, Vec<u64>)
pub fn into_traces( self, trace_len: usize, eidos_compression_trace_len: usize, ) -> (ChipletsTrace, EidosCompressionTrace, Vec<u64>)
Returns execution traces for ChipletsAir and EidosCompressionAir.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Chiplets
impl RefUnwindSafe for Chiplets
impl Send for Chiplets
impl Sync for Chiplets
impl Unpin for Chiplets
impl UnsafeUnpin for Chiplets
impl UnwindSafe for Chiplets
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more