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.
The chiplet system uses two physical selector columns (s_ctrl = column 0 and
s_perm = column 20) plus the virtual s0 = 1 - (s_ctrl + s_perm) to partition
rows into three top-level regions. Columns 1-4 (s1..s4) subdivide the s0 region.
-
Hasher segment: fills the first rows of the trace up to the hasher
trace_len. Split into controller (s_ctrl=1, s_perm=0) and permutation (s_ctrl=0, s_perm=1) sub-regions.- column 0 (s_ctrl): 1 on controller rows, 0 on permutation rows
- columns 1-19: execution trace of hash chiplet
- column 20 (s_perm): 0 on controller rows, 1 on permutation rows
-
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-20: unused columns padded with ZERO
-
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
- column 20: unused column padded with 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
-
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-20: unused columns padded with ZERO
-
Padding segment: fills the rest of the trace.
- column 0 (s_ctrl): ZERO
- columns 1-4 (s1..s4): ONE
- columns 5-20: unused columns padded with ZERO
The following is a pictorial representation of the chiplet module:
s_ctrl s1 s2 s3 s4 s_perm
[0] [1] [2] [3] [4] [20]
+---+----------------------------------------------------------+---+
ctrl | 1 | Hash chiplet (controller rows) | 0 |
| . | 20 columns | . |
| 1 | constraint degree 9 | 0 |
+---+ +---+
perm | 0 | Hash chiplet (permutation rows) | 1 |
| . | | . |
| 0 | | 1 |
+---+---+------------------------------------------------------+---+
| 0 | 0 | |---|
| . | . | Bitwise chiplet |---|
| . | . | 13 columns |---|
| 0 | 0 | constraint degree 5 |---|
| . +---+---+--------------------------------------------------+---+
| . | 1 | 0 | |---|
| . | . | . | Memory chiplet |---|
| . | . | . | 17 columns |---|
| . | . | 0 | constraint degree 9 |---|
| . + . +---+---+----------------------------------------------+---+
| . | . | 1 | 0 | |---|
| . | . | . | . | ACE chiplet |---|
| . | . | . | . | 16 columns |---|
| . | . | . | 0 | constraint degree 5 |---|
| . + . | . +---+---+-------------------------+--------------------+
| . | . | . | 1 | 0 | |--------------------|
| . | . | . | . | . | Kernel ROM chiplet |--------------------|
| . | . | . | . | . | 5 columns |--------------------|
| . | . | . | . | 0 | constraint degree 9 |--------------------|
| . + . | . | . +---+-------------------------+--------------------+
| . | . | . | . | 1 |-------- Padding ---------| |
| . | . | . | . | . | | |
| 0 | 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) -> ChipletsTrace
pub fn into_trace(self, trace_len: usize) -> 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 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
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