openvm-circuit 2.0.1

OpenVM circuits
Documentation
use openvm_stark_backend::{interaction::PermutationCheckBus, p3_field::PrimeField32};

use crate::system::memory::{
    merkle::{MemoryMerkleAir, MemoryMerkleChip},
    persistent::{PersistentBoundaryAir, PersistentBoundaryChip},
    MemoryImage, CHUNK,
};

#[derive(Clone)]
pub struct MemoryInterfaceAirs {
    pub boundary: PersistentBoundaryAir<CHUNK>,
    pub merkle: MemoryMerkleAir<CHUNK>,
}

pub struct MemoryInterface<F> {
    pub boundary_chip: PersistentBoundaryChip<F, CHUNK>,
    pub merkle_chip: MemoryMerkleChip<CHUNK, F>,
    pub initial_memory: MemoryImage,
}

impl<F: PrimeField32> MemoryInterface<F> {
    pub fn compression_bus(&self) -> PermutationCheckBus {
        self.merkle_chip.air.compression_bus
    }
}