diff --git a/src/plonk/circuit_builder.rs b/src/plonk/circuit_builder.rs index c063aa85..c6c49826 100644 --- a/src/plonk/circuit_builder.rs +++ b/src/plonk/circuit_builder.rs @@ -973,6 +973,22 @@ impl, const D: usize> CircuitBuilder { } } + /// Fill the remaining unused random access operations with zeros, so that all + /// `RandomAccessGenerator`s are run. + fn fill_random_access_gates(&mut self) { + let zero = self.zero(); + for (vec_size, (_, i)) in self.batched_gates.free_random_access.clone() { + let max_copies = RandomAccessGate::::max_num_copies( + self.config.num_routed_wires, + self.config.num_wires, + vec_size, + ); + for _ in i..max_copies { + self.random_access(zero, zero, vec![zero; vec_size]); + } + } + } + /// Fill the remaining unused switch gates with dummy values, so that all /// `SwitchGenerator`s are run. fn fill_switch_gates(&mut self) { @@ -1048,6 +1064,7 @@ impl, const D: usize> CircuitBuilder { fn fill_batched_gates(&mut self) { self.fill_arithmetic_gates(); + self.fill_random_access_gates(); self.fill_switch_gates(); self.fill_u32_arithmetic_gates(); self.fill_u32_subtraction_gates();