@@ -142,7 +142,7 @@ impl<'a> Default for ShardContext<'a> {
142142                    . map ( |_| BTreeMap :: new ( ) ) 
143143                    . collect :: < Vec < _ > > ( ) , 
144144            ) , 
145-             cur_shard_cycle_range :  0 ..usize:: MAX , 
145+             cur_shard_cycle_range :  Tracer :: SUBCYCLES_PER_INSN   as   usize ..usize:: MAX , 
146146        } 
147147    } 
148148} 
@@ -161,12 +161,15 @@ impl<'a> ShardContext<'a> {
161161            "implement mechanism to skip current shard proof" 
162162        ) ; 
163163
164+         let  subcycle_per_insn = Tracer :: SUBCYCLES_PER_INSN  as  usize ; 
164165        let  max_threads = max_usable_threads ( ) ; 
165166        // let max_record_per_thread = max_insts.div_ceil(max_threads as u64); 
166167        let  expected_inst_per_shard = executed_instructions. div_ceil ( max_num_shards)  as  usize ; 
167-         let  max_cycle = ( executed_instructions + 1 )  *  4 ;  // cycle start from 4 
168-         let  cur_shard_cycle_range = ( shard_id *  expected_inst_per_shard *  4  + 4 ) 
169-             ..( ( shard_id + 1 )  *  expected_inst_per_shard *  4  + 4 ) . min ( max_cycle) ; 
168+         let  max_cycle = ( executed_instructions + 1 )  *  subcycle_per_insn;  // cycle start from subcycle_per_insn 
169+         let  cur_shard_cycle_range = ( shard_id *  expected_inst_per_shard *  subcycle_per_insn
170+             + subcycle_per_insn) 
171+             ..( ( shard_id + 1 )  *  expected_inst_per_shard *  subcycle_per_insn + subcycle_per_insn) 
172+                 . min ( max_cycle) ; 
170173
171174        ShardContext  { 
172175            shard_id, 
@@ -248,15 +251,15 @@ impl<'a> ShardContext<'a> {
248251    #[ inline( always) ]  
249252    pub  fn  aligned_prev_ts ( & self ,  prev_cycle :  Cycle )  -> Cycle  { 
250253        let  mut  ts = prev_cycle. saturating_sub ( self . cur_shard_cycle_range . start  as  Cycle ) ; 
251-         if  ts < 4  { 
254+         if  ts < Tracer :: SUBCYCLES_PER_INSN  { 
252255            ts = 0 
253256        } 
254257        ts
255258    } 
256259
257260    pub  fn  current_shard_offset_cycle ( & self )  -> Cycle  { 
258-         // `-4` as  cycle of each local shard start from 4  
259-         ( self . cur_shard_cycle_range . start  as  Cycle )  - 4 
261+         // cycle of each local shard start from Tracer::SUBCYCLES_PER_INSN  
262+         ( self . cur_shard_cycle_range . start  as  Cycle )  - Tracer :: SUBCYCLES_PER_INSN 
260263    } 
261264
262265    #[ inline( always) ]  
@@ -383,8 +386,6 @@ pub fn emulate_program<'a>(
383386        vm. get_pc ( ) . into ( ) , 
384387        end_cycle, 
385388        shards. shard_id  as  u32 , 
386-         !shards. is_first_shard ( ) ,  // first shard disable global read 
387-         !shards. is_last_shard ( ) ,   // last shard disable global write 
388389        io_init. iter ( ) . map ( |rec| rec. value ) . collect_vec ( ) , 
389390    ) ; 
390391
0 commit comments