mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	fstdata.cc: Fix last step
Includes test file for sanity checking simulation steps.
This commit is contained in:
		
							parent
							
								
									d0b9a0cb98
								
							
						
					
					
						commit
						afd5bbc7fa
					
				
					 2 changed files with 53 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -261,12 +261,12 @@ void FstData::reconstructAllAtTimes(std::vector<fstHandle> &signal, uint64_t sta
 | 
			
		|||
	fstReaderSetUnlimitedTimeRange(ctx);
 | 
			
		||||
	fstReaderSetFacProcessMaskAll(ctx);
 | 
			
		||||
	fstReaderIterBlocks2(ctx, reconstruct_clb_attimes, reconstruct_clb_varlen_attimes, this, nullptr);
 | 
			
		||||
	if (last_time!=end_time && curr_cycle < last_cycle) {
 | 
			
		||||
	if (last_time!=end_time && curr_cycle <= last_cycle) {
 | 
			
		||||
		past_data = last_data;
 | 
			
		||||
		callback(last_time);
 | 
			
		||||
		curr_cycle++;
 | 
			
		||||
	}
 | 
			
		||||
	if (curr_cycle < last_cycle) {
 | 
			
		||||
	if (curr_cycle <= last_cycle) {
 | 
			
		||||
		past_data = last_data;
 | 
			
		||||
		callback(end_time);
 | 
			
		||||
		curr_cycle++;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										51
									
								
								tests/sim/sim_cycles.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								tests/sim/sim_cycles.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
read_verilog dff.v
 | 
			
		||||
prep
 | 
			
		||||
 | 
			
		||||
# create fst with 20 clock cycles (41 samples, 202ns)
 | 
			
		||||
sim -clock clk -fst sim_cycles.fst -n 20
 | 
			
		||||
 | 
			
		||||
logger -expect-no-warnings
 | 
			
		||||
 | 
			
		||||
# final step is 41
 | 
			
		||||
logger -expect log "Co-simulating cycle 41" 2
 | 
			
		||||
logger -warn "Co-simulating cycle 42"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 21 -sim-cmp
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 202 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
 | 
			
		||||
# over limit stops at final step
 | 
			
		||||
logger -expect log "Co-simulating cycle 41" 2
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 30 -sim-cmp
 | 
			
		||||
# -stop warns for over limit
 | 
			
		||||
logger -nowarn "Stop time is after simulation file end time"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 300 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
 | 
			
		||||
# don't auto step last
 | 
			
		||||
logger -expect log "Co-simulating cycle 40" 2
 | 
			
		||||
logger -warn "Co-simulating cycle 41"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 20 -sim-cmp
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 200 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
 | 
			
		||||
# -n 10 == -stop 100
 | 
			
		||||
# should simulate up to 20 and not more
 | 
			
		||||
logger -expect log "Co-simulating cycle 20" 2
 | 
			
		||||
logger -warn "Co-simulating cycle 21"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 10 -sim-cmp
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 100 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
 | 
			
		||||
# -n 1 == -stop 10
 | 
			
		||||
logger -expect log "Co-simulating cycle 2" 2
 | 
			
		||||
logger -warn "Co-simulating cycle 3"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 1 -sim-cmp
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 10 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
 | 
			
		||||
# -n 0 == -stop 0
 | 
			
		||||
logger -expect log "Co-simulating cycle 0" 2
 | 
			
		||||
logger -warn "Co-simulating cycle 1"
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -n 0 -sim-cmp
 | 
			
		||||
sim -clock clk -r sim_cycles.fst -scope dff -stop 0 -sim-cmp
 | 
			
		||||
logger -check-expected
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue