sp1_core_executor/events/cpu.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
use serde::{Deserialize, Serialize};
use crate::Instruction;
use super::{memory::MemoryRecordEnum, LookupId};
/// CPU Event.
///
/// This object encapsulates the information needed to prove a CPU operation. This includes its
/// shard, opcode, operands, and other relevant information.
#[derive(Debug, Copy, Clone, Serialize, Deserialize)]
pub struct CpuEvent {
/// The shard number.
pub shard: u32,
/// The clock cycle.
pub clk: u32,
/// The program counter.
pub pc: u32,
/// The next program counter.
pub next_pc: u32,
/// The instruction.
pub instruction: Instruction,
/// The first operand.
pub a: u32,
/// The first operand memory record.
pub a_record: Option<MemoryRecordEnum>,
/// The second operand.
pub b: u32,
/// The second operand memory record.
pub b_record: Option<MemoryRecordEnum>,
/// The third operand.
pub c: u32,
/// The third operand memory record.
pub c_record: Option<MemoryRecordEnum>,
/// The memory value.
pub memory: Option<u32>,
/// The memory record.
pub memory_record: Option<MemoryRecordEnum>,
/// The exit code.
pub exit_code: u32,
/// The ALU lookup id.
pub alu_lookup_id: LookupId,
/// The syscall lookup id.
pub syscall_lookup_id: LookupId,
/// The memory add lookup id.
pub memory_add_lookup_id: LookupId,
/// The memory sub lookup id.
pub memory_sub_lookup_id: LookupId,
/// The branch gt lookup id.
pub branch_gt_lookup_id: LookupId,
/// The branch lt lookup id.
pub branch_lt_lookup_id: LookupId,
/// The branch add lookup id.
pub branch_add_lookup_id: LookupId,
/// The jump jal lookup id.
pub jump_jal_lookup_id: LookupId,
/// The jump jalr lookup id.
pub jump_jalr_lookup_id: LookupId,
/// The auipc lookup id.
pub auipc_lookup_id: LookupId,
}