openvm_circuit/system/program/
mod.rs

1use openvm_cpu_backend::CpuBackend;
2use openvm_instructions::instruction::Instruction;
3use openvm_stark_backend::{prover::CommittedTraceData, StarkProtocolConfig};
4
5#[cfg(test)]
6pub mod tests;
7
8mod air;
9mod bus;
10pub mod trace;
11
12pub use air::*;
13pub use bus::*;
14
15const EXIT_CODE_FAIL: usize = 1;
16
17// For CPU backend only
18pub struct ProgramChip<SC: StarkProtocolConfig> {
19    /// `i` -> frequency of instruction in `i`th row of trace matrix. This requires filtering
20    /// `program.instructions_and_debug_infos` to remove gaps.
21    pub(super) filtered_exec_frequencies: Vec<u32>,
22    pub(super) cached: Option<CommittedTraceData<CpuBackend<SC>>>,
23    _marker: std::marker::PhantomData<SC>,
24}
25
26impl<SC: StarkProtocolConfig> ProgramChip<SC> {
27    pub(super) fn unloaded() -> Self {
28        Self {
29            filtered_exec_frequencies: Vec::new(),
30            cached: None,
31            _marker: std::marker::PhantomData,
32        }
33    }
34}