openvm_circuit/system/program/
mod.rs

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