openvm_circuit/arch/testing/
utils.rs

1use openvm_circuit::{
2    arch::testing::{BITWISE_OP_LOOKUP_BUS, RANGE_CHECKER_BUS},
3    system::memory::SharedMemoryHelper,
4};
5use openvm_circuit_primitives::{
6    bitwise_op_lookup::{
7        BitwiseOperationLookupBus, BitwiseOperationLookupChip, SharedBitwiseOperationLookupChip,
8    },
9    range_tuple::{RangeTupleCheckerBus, RangeTupleCheckerChip, SharedRangeTupleCheckerChip},
10    var_range::{
11        SharedVariableRangeCheckerChip, VariableRangeCheckerBus, VariableRangeCheckerChip,
12    },
13};
14use openvm_stark_backend::{p3_field::Field, p3_util::log2_strict_usize};
15
16use crate::{
17    arch::MemoryConfig,
18    system::memory::{adapter::records::arena_size_bound, online::TracingMemory},
19};
20
21pub fn default_var_range_checker_bus() -> VariableRangeCheckerBus {
22    // setting default range_max_bits to 17 because that's the default decomp value in MemoryConfig
23    VariableRangeCheckerBus::new(RANGE_CHECKER_BUS, 17)
24}
25
26pub fn default_bitwise_lookup_bus() -> BitwiseOperationLookupBus {
27    BitwiseOperationLookupBus::new(BITWISE_OP_LOOKUP_BUS)
28}
29
30pub fn dummy_range_checker(bus: VariableRangeCheckerBus) -> SharedVariableRangeCheckerChip {
31    SharedVariableRangeCheckerChip::new(VariableRangeCheckerChip::new(bus))
32}
33
34pub fn dummy_bitwise_op_lookup(
35    bus: BitwiseOperationLookupBus,
36) -> SharedBitwiseOperationLookupChip<8> {
37    SharedBitwiseOperationLookupChip::new(BitwiseOperationLookupChip::new(bus))
38}
39
40pub fn dummy_range_tuple_checker(bus: RangeTupleCheckerBus<2>) -> SharedRangeTupleCheckerChip<2> {
41    SharedRangeTupleCheckerChip::new(RangeTupleCheckerChip::new(bus))
42}
43
44pub fn dummy_memory_helper<F: Field>(
45    bus: VariableRangeCheckerBus,
46    timestamp_max_bits: usize,
47) -> SharedMemoryHelper<F> {
48    SharedMemoryHelper::new(dummy_range_checker(bus), timestamp_max_bits)
49}
50
51pub fn default_tracing_memory(mem_config: &MemoryConfig, init_block_size: usize) -> TracingMemory {
52    let max_access_adapter_n = log2_strict_usize(mem_config.max_access_adapter_n);
53    let arena_size_bound = arena_size_bound(&vec![1 << 16; max_access_adapter_n]);
54    TracingMemory::new(mem_config, init_block_size, arena_size_bound)
55}