use super::{
utils::range as create_range, Felt, Word, CHIPLETS_OFFSET, HASHER_AUX_TRACE_OFFSET, ONE, ZERO,
};
use core::ops::Range;
pub mod bitwise;
pub mod hasher;
pub mod kernel_rom;
pub mod memory;
pub const NUM_HASHER_SELECTORS: usize = 1;
pub const NUM_BITWISE_SELECTORS: usize = 2;
pub const NUM_MEMORY_SELECTORS: usize = 3;
pub const NUM_KERNEL_ROM_SELECTORS: usize = 4;
pub const HASHER_TRACE_OFFSET: usize = CHIPLETS_OFFSET + NUM_HASHER_SELECTORS;
pub const BITWISE_TRACE_OFFSET: usize = CHIPLETS_OFFSET + NUM_BITWISE_SELECTORS;
pub const MEMORY_TRACE_OFFSET: usize = CHIPLETS_OFFSET + NUM_MEMORY_SELECTORS;
pub const HASHER_SELECTOR_COL_RANGE: Range<usize> =
create_range(HASHER_TRACE_OFFSET, hasher::NUM_SELECTORS);
pub const HASHER_ROW_COL_IDX: usize = HASHER_TRACE_OFFSET + hasher::ROW_COL_IDX;
pub const HASHER_STATE_COL_RANGE: Range<usize> = Range {
start: HASHER_TRACE_OFFSET + hasher::STATE_COL_RANGE.start,
end: HASHER_TRACE_OFFSET + hasher::STATE_COL_RANGE.end,
};
pub const HASHER_CAPACITY_COL_RANGE: Range<usize> = Range {
start: HASHER_TRACE_OFFSET + hasher::CAPACITY_COL_RANGE.start,
end: HASHER_TRACE_OFFSET + hasher::CAPACITY_COL_RANGE.end,
};
pub const HASHER_RATE_COL_RANGE: Range<usize> = Range {
start: HASHER_TRACE_OFFSET + hasher::RATE_COL_RANGE.start,
end: HASHER_TRACE_OFFSET + hasher::RATE_COL_RANGE.end,
};
pub const HASHER_NODE_INDEX_COL_IDX: usize = HASHER_STATE_COL_RANGE.end;
pub const BITWISE_SELECTOR_COL_IDX: usize = BITWISE_TRACE_OFFSET;
pub const BITWISE_A_COL_IDX: usize = BITWISE_TRACE_OFFSET + bitwise::A_COL_IDX;
pub const BITWISE_B_COL_IDX: usize = BITWISE_TRACE_OFFSET + bitwise::B_COL_IDX;
pub const BITWISE_A_COL_RANGE: Range<usize> = Range {
start: BITWISE_TRACE_OFFSET + bitwise::A_COL_RANGE.start,
end: BITWISE_TRACE_OFFSET + bitwise::A_COL_RANGE.end,
};
pub const BITWISE_B_COL_RANGE: Range<usize> = Range {
start: BITWISE_TRACE_OFFSET + bitwise::B_COL_RANGE.start,
end: BITWISE_TRACE_OFFSET + bitwise::B_COL_RANGE.end,
};
pub const BITWISE_TRACE_RANGE: Range<usize> = Range {
start: BITWISE_TRACE_OFFSET,
end: BITWISE_TRACE_OFFSET + bitwise::OUTPUT_COL_IDX + 1,
};
pub const BITWISE_PREV_OUTPUT_COL_IDX: usize = BITWISE_TRACE_OFFSET + bitwise::PREV_OUTPUT_COL_IDX;
pub const BITWISE_OUTPUT_COL_IDX: usize = BITWISE_TRACE_OFFSET + bitwise::OUTPUT_COL_IDX;
pub const MEMORY_SELECTORS_COL_IDX: usize = MEMORY_TRACE_OFFSET;
pub const MEMORY_CTX_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::CTX_COL_IDX;
pub const MEMORY_ADDR_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::ADDR_COL_IDX;
pub const MEMORY_CLK_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::CLK_COL_IDX;
pub const MEMORY_V_COL_RANGE: Range<usize> = Range {
start: MEMORY_TRACE_OFFSET + memory::V_COL_RANGE.start,
end: MEMORY_TRACE_OFFSET + memory::V_COL_RANGE.end,
};
pub const MEMORY_D0_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::D0_COL_IDX;
pub const MEMORY_D1_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::D1_COL_IDX;
pub const MEMORY_D_INV_COL_IDX: usize = MEMORY_TRACE_OFFSET + memory::D_INV_COL_IDX;