3#include "barretenberg/common/throw_or_abort.hpp"
4#include "barretenberg/ecc/curves/bn254/fr.hpp"
5#include "barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp"
6#include "barretenberg/proof_system/circuit_builder/generated/AvmMini_circuit_builder.hpp"
8#include "barretenberg/flavor/generated/AvmMini_flavor.hpp"
10#include "barretenberg/relations/generated/AvmMini/avm_mini.hpp"
16namespace proof_system {
26 static const size_t N = 256;
27 static const size_t MemSize = 1024;
29 static const uint32_t SubClkLoadA = 0;
30 static const uint32_t SubClkLoadB = 1;
31 static const uint32_t SubClkLoadC = 2;
32 static const uint32_t SubClkStoreA = 3;
33 static const uint32_t SubClkStoreB = 4;
34 static const uint32_t SubClkStoreC = 5;
45 void add(uint32_t s0, uint32_t s1, uint32_t d0);
49 void callDataCopy(uint32_t s0, uint32_t s1, uint32_t d0, std::vector<FF>
const& callDataMem);
53 std::vector<FF>
returnOP(uint32_t s0, uint32_t s1);
56 struct MemoryTraceEntry {
64 std::vector<Row> mainTrace;
65 std::vector<MemoryTraceEntry> memTrace;
66 std::array<FF, MemSize> ffMemory{};
69 static bool compareMemEntries(
const MemoryTraceEntry& left,
const MemoryTraceEntry& right);
70 void insertInMemTrace(uint32_t m_clk, uint32_t m_sub_clk, uint32_t m_addr, FF m_val,
bool m_rw);
71 void loadAInMemTrace(uint32_t addr, FF val);
72 void loadBInMemTrace(uint32_t addr, FF val);
73 void loadCInMemTrace(uint32_t addr, FF val);
74 void storeAInMemTrace(uint32_t addr, FF val);
75 void storeBInMemTrace(uint32_t addr, FF val);
76 void storeCInMemTrace(uint32_t addr, FF val);
Definition: AvmMini_trace.hpp:22
void callDataCopy(uint32_t s0, uint32_t s1, uint32_t d0, std::vector< FF > const &callDataMem)
CALLDATACOPY opcode with direct memory access, i.e., M_F[d0:d0+s1] = M_calldata[s0:s0+s1] Simplified ...
Definition: AvmMini_trace.cpp:219
void setFFMem(size_t idx, FF el)
Helper to initialize ffMemory. (Testing purpose mostly.)
Definition: AvmMini_trace.cpp:382
std::vector< Row > finalize()
Finalisation of the memory trace and incorporating it to the main trace. In particular,...
Definition: AvmMini_trace.cpp:395
std::vector< FF > returnOP(uint32_t s0, uint32_t s1)
RETURN opcode with direct memory access, i.e., return M_F[s0:s0+s1] Simplified version with exclusive...
Definition: AvmMini_trace.cpp:308
void add(uint32_t s0, uint32_t s1, uint32_t d0)
Addition over finite field with direct memory access.
Definition: AvmMini_trace.cpp:167
void reset()
Resetting the internal state so that a new trace can be rebuilt using the same object.
Definition: AvmMini_trace.cpp:30
AvmMiniTraceBuilder()
Constructor of a trace builder of AVM. Only serves to set the capacity of the underlying traces.
Definition: AvmMini_trace.cpp:20
Definition: AvmMini_flavor.hpp:21
Definition: AvmMini_circuit_builder.hpp:18