Expand description
ACE circuit codegen for Plonky3-based Miden AIRs.
The pipeline is:
- Capture AIR constraints into the
miden-constraint-compilerIR. - Lower the constraint graph into a DAG that mirrors verifier constraints evaluation.
- Emit an ACE circuit plus an
InputLayoutdescribing the MASM ACE-READ section order.
The resulting circuit is intended to run inside the recursive verifier. All input layout decisions (point-major OOD ordering, aux/quotient coords, and alpha/beta randomness expansion) are centralized in this crate so tests can validate both layout and evaluation.
Quick start:
ⓘ
use miden_ace_codegen::{AceConfig, LayoutKind, build_ace_circuit_for_air};
use miden_air::ChipletsAir;
let config = AceConfig { num_quotient_chunks: 8, layout: LayoutKind::Masm, num_airs: 1 };
let circuit = build_ace_circuit_for_air(&ChipletsAir, config)?;Module map (data flow):
pipeline: public entry points that orchestrate layout + DAG + circuit emission.dag: verifier-style DAG IR and lowering helpers.circuit: off-VM circuit representation (inputs/constants/ops/root).factored: shuffle/common split of a multi-AIR circuit, so per-proof-order variants share one order-invariant section (used by the recursive verifier’s circuit registry).factory: cached per-order encoding and registry-leaf construction.layout: READ-section layout and index mapping.encode: ACE stream encoding + padding rules.masm: shared renderer for relation-local MASM constraint evaluators.randomness: challenge input planning for layouts + DAG lowering.quotient: barycentric quotient recomposition helpers (used by DAG + tests).registry: order tags, registry layout, subtree construction, and path authentication.
Structs§
- AceArtifacts
- Output of the ACE codegen pipeline.
- AceCircuit
- Emitted ACE circuit with layout and operation list.
- AceConfig
- Configuration for building an ACE DAG and its input layout.
- AceDag
- A built DAG with a designated root.
- DagBuilder
- A hash-consed DAG builder.
- DagSnapshot
- Exported DAG data that preserves the source DAG id across imports.
- Encoded
Circuit - Encoded ACE circuit ready for chiplet consumption.
- Factored
Circuit Factory - Factory caching the order-invariant parts of a factored multi-AIR composition.
- Factored
Encoded Circuit - One proof order’s encoded circuit plus its stream-segment commitments.
- Factored
Multi AirCircuit - Multi-AIR ACE circuit factored into a per-order shuffle section and an order-invariant common section.
- Input
Counts - Counts needed to build the ACE input layout.
- Input
Layout - ACE input layout for circuit evaluation.
- Masm
Constraints Eval Config - Relation-specific inputs to the shared MASM constraint-evaluator renderer.
- NodeId
- Identifier for a node in the DAG.
- Packed
Leaf Scratch - Reusable scratch for
FactoredCircuitFactory::leaves_for_orders. - Registry
Layout - Shape of a registry: how many orderings it covers and where its checked-in node row sits.
- Shuffle
Encode Buffer - Reusable scratch for
FactoredMultiAirCircuit::encode_shuffle_section_for_order.
Enums§
- AceError
- Errors returned by ACE codegen.
- Input
Key - Logical inputs required by the ACE circuit.
- Layout
Kind - Layout strategy for arranging ACE inputs.
- Node
Kind - Node kinds in the DAG.
Constants§
- EXT_
DEGREE - Extension field degree (quadratic extension for Miden VM).
- MAX_
REGISTRY_ AIRS - Largest AIR count whose complete permutation set fits in the
u32registry-tag space.
Functions§
- build_
ace_ circuit_ for_ air - Build a verifier-equivalent ACE circuit for the provided AIR.
- build_
ace_ dag_ for_ air - Build a verifier-equivalent DAG and layout for the provided AIR.
- build_
factored_ multi_ air_ ace_ circuit - Factored variant of
build_multi_air_ace_circuit. - build_
multi_ air_ ace_ circuit - Build one ACE circuit for several AIR instances.
- ceil_
log2 - Return the smallest
dsuch that2^d >= value. - emit_
circuit - Emit an ACE circuit from the DAG and input layout.
- factorial
- Compute
n!. - fold_
row_ to_ root - Fold a node row up to the tree root.
- order_
from_ tag - Decode a registry tag into its proof ordering over
num_airsAIRs. - order_
tag - Registry tag of a proof ordering: its Lehmer rank relative to the canonical (identity) instance order.
- padding_
leaf - Leaf value for registry slots that no proof ordering maps to.
- path_
in_ verified_ tree - Splice the authentication path for
tagfrom its recomputed subtree and the verified pyramid above the row. - render_
masm_ constraints_ eval - Render the MASM wrapper that prepares ACE inputs, authenticates the selected circuit, and executes it.
- subtree_
leaves - Compute the leaves of one row node’s subtree, in slot order.
- verify_
row - Hash a checked-in node row upward and authenticate it against the registry root.