openvm_circuit/system/memory/controller/
interface.rs1use openvm_stark_backend::{interaction::PermutationCheckBus, p3_field::PrimeField32};
2
3use crate::system::memory::{
4 merkle::{MemoryMerkleAir, MemoryMerkleChip},
5 persistent::{PersistentBoundaryAir, PersistentBoundaryChip},
6 MemoryImage, CHUNK,
7};
8
9#[derive(Clone)]
10pub struct MemoryInterfaceAirs {
11 pub boundary: PersistentBoundaryAir<CHUNK>,
12 pub merkle: MemoryMerkleAir<CHUNK>,
13}
14
15pub struct MemoryInterface<F> {
16 pub boundary_chip: PersistentBoundaryChip<F, CHUNK>,
17 pub merkle_chip: MemoryMerkleChip<CHUNK, F>,
18 pub initial_memory: MemoryImage,
19}
20
21impl<F: PrimeField32> MemoryInterface<F> {
22 pub fn compression_bus(&self) -> PermutationCheckBus {
23 self.merkle_chip.air.compression_bus
24 }
25}