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 6 stacked segments in the following form:
-
Hasher segment: contains the trace and selector for the hasher chiplet. This segment fills the first rows of the trace up to the length of the hasher
trace_len.- column 0: selector column with values set to ZERO
- columns 1-16: execution trace of hash chiplet
- columns 17-20: unused columns padded with ZERO
-
Bitwise segment: contains the trace and selectors for the bitwise chiplet. This segment begins at the end of the hasher segment and fills the next rows of the trace for the
trace_lenof the bitwise chiplet.- column 0: selector column with values set to ONE
- column 1: selector column with values set to ZERO
- columns 2-14: execution trace of bitwise chiplet
- columns 15-20: unused columns padded with ZERO
-
Memory segment: contains the trace and selectors for the memory chiplet. This segment begins at the end of the bitwise segment and fills the next rows of the trace for the
trace_lenof the memory chiplet.- column 0-1: selector columns with values set to ONE
- column 2: selector column with values set to ZERO
- columns 3-17: execution trace of memory chiplet
- columns 18-20: unused columns padded with ZERO
-
ACE segment: contains the trace and selectors for the arithmetic circuit evaluation chiplet. This segment begins at the end of the memory segment and fills the next rows of the trace for the
trace_lenof the ACE chiplet.- column 0-2: selector columns with values set to ONE
- column 3: selector column with values set to ZERO
- columns 4-20: execution trace of ACE chiplet
-
Kernel ROM segment: contains the trace and selectors for the kernel ROM chiplet * This segment begins at the end of the memory segment and fills the next rows of the trace for the
trace_lenof the kernel ROM chiplet.- column 0-3: selector columns with values set to ONE
- column 4: selector column with values set to ZERO
- columns 5-9: execution trace of kernel ROM chiplet
- columns 10-20: unused column padded with ZERO
-
Padding segment: unused. This segment begins at the end of the kernel ROM segment and fills the rest of the execution trace minus the number of random rows. When it finishes, the execution trace should have exactly enough rows remaining for the specified number of random rows.
- columns 0-4: selector columns with values set to ONE
- columns 5-20: unused columns padded with ZERO
The following is a pictorial representation of the chiplet module:
+---+--------------------------------------------------------------+------+
| 0 | |------|
| . | Hash chiplet |------|
| . | 16 columns |------|
| . | constraint degree 8 |------|
| 0 | |------|
+---+---+------------------------------------------------------+---+------+
| 1 | 0 | |----------|
| . | . | Bitwise chiplet |----------|
| . | . | 13 columns |----------|
| . | . | constraint degree 5 |----------|
| . | . | |----------|
| . | 0 | |----------|
| . +---+---+--------------------------------------------------+-----+----+
| . | 1 | 0 | |----|
| . | . | . | Memory chiplet |----|
| . | . | . | 15 columns |----|
| . | . | . | constraint degree 9 |----|
| . | . | 0 | |----|
| . + . +---+---+----------------------------------------------------+----+
| . | . | 1 | 0 | |
| . | . | . | . | ACE chiplet |
| . | . | . | . | 16 columns |
| . | . | . | . | constraint degree 5 |
| . | . | . | 0 | |
| . + . | . +---+---+---------------------------+-------------------------+
| . | . | . | 1 | 0 | |-------------------------|
| . | . | . | . | . | Kernel ROM chiplet |-------------------------|
| . | . | . | . | . | 5 columns |-------------------------|
| . | . | . | . | . | constraint degree 9 |-------------------------|
| . | . | . | . | 0 | |-------------------------|
| . + . | . | . +---+---+-----------------------+-------------------------+
| . | . | . | . | 1 | 0 |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------- Padding --------------------|
| . + . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| . | . | . | . | . | . |-------------------------------------------------|
| 1 | 1 | 1 | 1 | 1 | 0 |-------------------------------------------------|
+---+---+---+---+---------------------------------------------------------+Fields§
§hasher: Hasher§bitwise: Bitwise§memory: Memory§ace: Ace§kernel_rom: KernelRomImplementations§
Source§impl Chiplets
impl Chiplets
Sourcepub fn new(kernel: Kernel) -> Self
pub fn new(kernel: Kernel) -> Self
Returns a new Chiplets component instantiated with the provided Kernel.
Sourcepub fn trace_len(&self) -> usize
pub fn trace_len(&self) -> usize
Returns the length of the trace required to accommodate chiplet components and 1 mandatory padding row required for ensuring sufficient trace length for auxiliary connector columns that rely on the memory chiplet.
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 ace_start(&self) -> RowIndex
pub fn ace_start(&self) -> RowIndex
Returns the index of the first row of KernelRom 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 into_trace(
self,
trace_len: usize,
pc_transcript_state: PrecompileTranscriptState,
) -> ChipletsTrace
pub fn into_trace( self, trace_len: usize, pc_transcript_state: PrecompileTranscriptState, ) -> ChipletsTrace
Returns an execution trace of the chiplets containing the stacked traces of the Hasher, Bitwise, ACE, Memory chiplets, and kernel ROM chiplet.
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 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
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