openvm_circuit/system/memory/controller/
interface.rs

1use 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}