Skip to content

Commit ee51964

Browse files
committed
fix goldilocks circuit
1 parent 2632e5b commit ee51964

File tree

13 files changed

+46
-14
lines changed

13 files changed

+46
-14
lines changed

ceno_zkvm/src/e2e.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ pub struct ShardContext<'a> {
115115
shard_id: usize,
116116
max_num_shards: usize,
117117
max_cycle: Cycle,
118-
// TODO this map is super huge
118+
// TODO optimize this map as it's super huge
119119
addr_future_accesses: Cow<'a, HashMap<(WordAddr, Cycle), Cycle>>,
120120
read_thread_based_record_storage:
121121
Either<Vec<BTreeMap<WordAddr, RAMRecord>>, &'a mut BTreeMap<WordAddr, RAMRecord>>,

ceno_zkvm/src/instructions/riscv/arith_imm/arith_imm_circuit.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::{
22
Value,
33
circuit_builder::CircuitBuilder,
4+
e2e::ShardContext,
45
error::ZKVMError,
56
instructions::{
67
Instruction,
@@ -58,6 +59,7 @@ impl<E: ExtensionField> Instruction<E> for AddiInstruction<E> {
5859

5960
fn assign_instance(
6061
config: &Self::InstructionConfig,
62+
shard_ctx: &mut ShardContext,
6163
instance: &mut [<E as ExtensionField>::BaseField],
6264
lk_multiplicity: &mut LkMultiplicity,
6365
step: &StepRecord,
@@ -77,7 +79,7 @@ impl<E: ExtensionField> Instruction<E> for AddiInstruction<E> {
7779

7880
config
7981
.i_insn
80-
.assign_instance(instance, lk_multiplicity, step)?;
82+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
8183

8284
Ok(())
8385
}

ceno_zkvm/src/instructions/riscv/div/div_circuit.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ use super::{
7575
};
7676
use crate::{
7777
circuit_builder::CircuitBuilder,
78+
e2e::ShardContext,
7879
error::ZKVMError,
7980
gadgets::{AssertLtConfig, IsEqualConfig, IsLtConfig, IsZeroConfig, Signed},
8081
instructions::{Instruction, riscv::constants::LIMB_BITS},
@@ -310,6 +311,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for ArithInstruction<E
310311

311312
fn assign_instance(
312313
config: &Self::InstructionConfig,
314+
shard_ctx: &mut ShardContext,
313315
instance: &mut [E::BaseField],
314316
lkm: &mut LkMultiplicity,
315317
step: &StepRecord,
@@ -419,7 +421,9 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for ArithInstruction<E
419421
div_pos as u64,
420422
)?;
421423

422-
config.r_insn.assign_instance(instance, lkm, step)?;
424+
config
425+
.r_insn
426+
.assign_instance(instance, shard_ctx, lkm, step)?;
423427

424428
Ok(())
425429
}

ceno_zkvm/src/instructions/riscv/jump/jal.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use ff_ext::ExtensionField;
55
use crate::{
66
Value,
77
circuit_builder::CircuitBuilder,
8+
e2e::ShardContext,
89
error::ZKVMError,
910
instructions::{
1011
Instruction,
@@ -64,13 +65,14 @@ impl<E: ExtensionField> Instruction<E> for JalInstruction<E> {
6465

6566
fn assign_instance(
6667
config: &Self::InstructionConfig,
68+
shard_ctx: &mut ShardContext,
6769
instance: &mut [E::BaseField],
6870
lk_multiplicity: &mut LkMultiplicity,
6971
step: &ceno_emul::StepRecord,
7072
) -> Result<(), ZKVMError> {
7173
config
7274
.j_insn
73-
.assign_instance(instance, lk_multiplicity, step)?;
75+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
7476

7577
let rd_written = Value::new(step.rd().unwrap().value.after, lk_multiplicity);
7678
config.rd_written.assign_value(instance, rd_written);

ceno_zkvm/src/instructions/riscv/jump/jalr.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use ff_ext::ExtensionField;
55
use crate::{
66
Value,
77
circuit_builder::CircuitBuilder,
8+
e2e::ShardContext,
89
error::ZKVMError,
910
instructions::{
1011
Instruction,
@@ -111,6 +112,7 @@ impl<E: ExtensionField> Instruction<E> for JalrInstruction<E> {
111112

112113
fn assign_instance(
113114
config: &Self::InstructionConfig,
115+
shard_ctx: &mut ShardContext,
114116
instance: &mut [E::BaseField],
115117
lk_multiplicity: &mut LkMultiplicity,
116118
step: &ceno_emul::StepRecord,
@@ -150,7 +152,7 @@ impl<E: ExtensionField> Instruction<E> for JalrInstruction<E> {
150152

151153
config
152154
.i_insn
153-
.assign_instance(instance, lk_multiplicity, step)?;
155+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
154156

155157
Ok(())
156158
}

ceno_zkvm/src/instructions/riscv/logic_imm/logic_imm_circuit.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::marker::PhantomData;
66

77
use crate::{
88
circuit_builder::CircuitBuilder,
9+
e2e::ShardContext,
910
error::ZKVMError,
1011
instructions::{
1112
Instruction,
@@ -48,6 +49,7 @@ impl<E: ExtensionField, I: LogicOp> Instruction<E> for LogicInstruction<E, I> {
4849

4950
fn assign_instance(
5051
config: &Self::InstructionConfig,
52+
shard_ctx: &mut ShardContext,
5153
instance: &mut [<E as ExtensionField>::BaseField],
5254
lkm: &mut LkMultiplicity,
5355
step: &StepRecord,
@@ -58,7 +60,7 @@ impl<E: ExtensionField, I: LogicOp> Instruction<E> for LogicInstruction<E, I> {
5860
InsnRecord::<E::BaseField>::imm_internal(&step.insn()).0 as u64,
5961
);
6062

61-
config.assign_instance(instance, lkm, step)
63+
config.assign_instance(instance, shard_ctx, lkm, step)
6264
}
6365
}
6466

@@ -102,10 +104,12 @@ impl<E: ExtensionField> LogicConfig<E> {
102104
fn assign_instance(
103105
&self,
104106
instance: &mut [<E as ExtensionField>::BaseField],
107+
shard_ctx: &mut ShardContext,
105108
lkm: &mut LkMultiplicity,
106109
step: &StepRecord,
107110
) -> Result<(), ZKVMError> {
108-
self.i_insn.assign_instance(instance, lkm, step)?;
111+
self.i_insn
112+
.assign_instance(instance, shard_ctx, lkm, step)?;
109113

110114
let rs1_read = split_to_u8(step.rs1().unwrap().value);
111115
self.rs1_read.assign_limbs(instance, &rs1_read);

ceno_zkvm/src/instructions/riscv/memory/load.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::{
22
Value,
33
circuit_builder::CircuitBuilder,
4+
e2e::ShardContext,
45
error::ZKVMError,
56
gadgets::SignedExtendConfig,
67
instructions::{
@@ -165,6 +166,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for LoadInstruction<E,
165166

166167
fn assign_instance(
167168
config: &Self::InstructionConfig,
169+
shard_ctx: &mut ShardContext,
168170
instance: &mut [E::BaseField],
169171
lk_multiplicity: &mut LkMultiplicity,
170172
step: &StepRecord,
@@ -184,7 +186,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for LoadInstruction<E,
184186
set_val!(instance, config.imm, imm.1);
185187
config
186188
.im_insn
187-
.assign_instance(instance, lk_multiplicity, step)?;
189+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
188190
config.rs1_read.assign_value(instance, rs1);
189191
config.memory_read.assign_value(instance, memory_read);
190192
config

ceno_zkvm/src/instructions/riscv/memory/store.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::{
22
Value,
33
circuit_builder::CircuitBuilder,
4+
e2e::ShardContext,
45
error::ZKVMError,
56
instructions::{
67
Instruction,
@@ -111,6 +112,7 @@ impl<E: ExtensionField, I: RIVInstruction, const N_ZEROS: usize> Instruction<E>
111112

112113
fn assign_instance(
113114
config: &Self::InstructionConfig,
115+
shard_ctx: &mut ShardContext,
114116
instance: &mut [E::BaseField],
115117
lk_multiplicity: &mut LkMultiplicity,
116118
step: &StepRecord,
@@ -124,7 +126,7 @@ impl<E: ExtensionField, I: RIVInstruction, const N_ZEROS: usize> Instruction<E>
124126
let addr = ByteAddr::from(step.rs1().unwrap().value.wrapping_add_signed(imm.0 as i32));
125127
config
126128
.s_insn
127-
.assign_instance(instance, lk_multiplicity, step)?;
129+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
128130
config.rs1_read.assign_value(instance, rs1);
129131
config.rs2_read.assign_value(instance, rs2);
130132
set_val!(instance, config.imm, imm.1);

ceno_zkvm/src/instructions/riscv/mulh/mulh_circuit.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ use p3::{field::FieldAlgebra, goldilocks::Goldilocks};
8686

8787
use crate::{
8888
circuit_builder::CircuitBuilder,
89+
e2e::ShardContext,
8990
error::ZKVMError,
9091
gadgets::{IsEqualConfig, Signed},
9192
instructions::{
@@ -286,6 +287,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for MulhInstructionBas
286287

287288
fn assign_instance(
288289
config: &Self::InstructionConfig,
290+
shard_ctx: &mut ShardContext,
289291
instance: &mut [<E as ExtensionField>::BaseField],
290292
lk_multiplicity: &mut LkMultiplicity,
291293
step: &StepRecord,
@@ -312,7 +314,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for MulhInstructionBas
312314
// R-type instruction
313315
config
314316
.r_insn
315-
.assign_instance(instance, lk_multiplicity, step)?;
317+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
316318

317319
// Assign signed values, if any, and compute low 32-bit limb of product
318320
let prod_lo_hi = match &config.sign_deps {

ceno_zkvm/src/instructions/riscv/shift/shift_circuit.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::{
22
Value,
3+
e2e::ShardContext,
34
error::ZKVMError,
45
gadgets::SignedExtendConfig,
56
instructions::{
@@ -151,6 +152,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for ShiftLogicalInstru
151152

152153
fn assign_instance(
153154
config: &Self::InstructionConfig,
155+
shard_ctx: &mut ShardContext,
154156
instance: &mut [<E as ExtensionField>::BaseField],
155157
lk_multiplicity: &mut crate::witness::LkMultiplicity,
156158
step: &ceno_emul::StepRecord,
@@ -211,7 +213,7 @@ impl<E: ExtensionField, I: RIVInstruction> Instruction<E> for ShiftLogicalInstru
211213

212214
config
213215
.r_insn
214-
.assign_instance(instance, lk_multiplicity, step)?;
216+
.assign_instance(instance, shard_ctx, lk_multiplicity, step)?;
215217

216218
Ok(())
217219
}

0 commit comments

Comments
 (0)