forked from libre-chip/fayalite
		
	tests/sim: split expected output text into separate files
This commit is contained in:
		
							parent
							
								
									643816d5b5
								
							
						
					
					
						commit
						259bee39c2
					
				
					 13 changed files with 3508 additions and 3513 deletions
				
			
		
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										130
									
								
								crates/fayalite/tests/sim/expected/connect_const.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								crates/fayalite/tests/sim/expected/connect_const.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,130 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 2, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const: connect_const).connect_const::o", | ||||||
|  |                                 ty: UInt<8>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<8>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "", ty: UInt<8> }, | ||||||
|  |                     value: 5, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(connect_const: connect_const).connect_const::o", ty: UInt<8> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "", ty: UInt<8> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 2, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 5, | ||||||
|  |                 5, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::connect_const, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: connect_const, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::connect_const, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: connect_const, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: UInt<8>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const: connect_const).connect_const::o", | ||||||
|  |                                 ty: UInt<8>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "connect_const", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "o", | ||||||
|  |                 child: TraceUInt { | ||||||
|  |                     id: TraceScalarId(0), | ||||||
|  |                     name: "o", | ||||||
|  |                     ty: UInt<8>, | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: UInt<8>, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |                 ty: UInt<8>, | ||||||
|  |             }, | ||||||
|  |             state: 0x05, | ||||||
|  |             last_state: 0x05, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [], | ||||||
|  |     instant: 0 s, | ||||||
|  |     clocks_triggered: [], | ||||||
|  | } | ||||||
							
								
								
									
										217
									
								
								crates/fayalite/tests/sim/expected/connect_const_reset.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								crates/fayalite/tests/sim/expected/connect_const_reset.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,217 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 5, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::reset_out", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::bit_out", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     value: 1, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "", ty: AsyncReset }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::reset_out", ty: AsyncReset }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "", ty: AsyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::reset_out", ty: AsyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:5:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::bit_out", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 5, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 1, | ||||||
|  |                 1, | ||||||
|  |                 1, | ||||||
|  |                 1, | ||||||
|  |                 1, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::connect_const_reset, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: connect_const_reset, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::connect_const_reset, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: connect_const_reset, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.bit_out: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bool, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::bit_out", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 1, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::connect_const_reset, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: connect_const_reset, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.reset_out: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: AsyncReset, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(connect_const_reset: connect_const_reset).connect_const_reset::reset_out", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "connect_const_reset", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "reset_out", | ||||||
|  |                 child: TraceAsyncReset { | ||||||
|  |                     id: TraceScalarId(0), | ||||||
|  |                     name: "reset_out", | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: AsyncReset, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "bit_out", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(1), | ||||||
|  |                     name: "bit_out", | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigAsyncReset { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |             }, | ||||||
|  |             state: 0x1, | ||||||
|  |             last_state: 0x1, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(1), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(1), | ||||||
|  |             }, | ||||||
|  |             state: 0x1, | ||||||
|  |             last_state: 0x1, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [ | ||||||
|  |         Running( | ||||||
|  |             VcdWriter { | ||||||
|  |                 finished_init: true, | ||||||
|  |                 timescale: 1 ps, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  |     instant: 1 μs, | ||||||
|  |     clocks_triggered: [], | ||||||
|  | } | ||||||
							
								
								
									
										11
									
								
								crates/fayalite/tests/sim/expected/connect_const_reset.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								crates/fayalite/tests/sim/expected/connect_const_reset.vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | $timescale 1 ps $end | ||||||
|  | $scope module connect_const_reset $end | ||||||
|  | $var wire 1 ! reset_out $end | ||||||
|  | $var wire 1 " bit_out $end | ||||||
|  | $upscope $end | ||||||
|  | $enddefinitions $end | ||||||
|  | $dumpvars | ||||||
|  | 1! | ||||||
|  | 1" | ||||||
|  | $end | ||||||
|  | #1000000 | ||||||
							
								
								
									
										509
									
								
								crates/fayalite/tests/sim/expected/counter_async.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										509
									
								
								crates/fayalite/tests/sim/expected/counter_async.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,509 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 4, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 10, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.rst", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count_reg", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count_reg$next", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<1>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<5>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "", ty: UInt<1> }, | ||||||
|  |                     value: 1, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::cd.rst", ty: AsyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::cd.rst", ty: AsyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     value: 3, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 BranchIfZero { | ||||||
|  |                     target: 6, | ||||||
|  |                     value: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Add { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "", ty: UInt<5> }, | ||||||
|  |                     lhs: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     rhs: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "", ty: UInt<1> }, | ||||||
|  |                 }, | ||||||
|  |                 CastToUInt { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "", ty: UInt<5> }, | ||||||
|  |                     dest_width: 4, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg$next", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:6:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::cd.clk", ty: Clock }, | ||||||
|  |                 }, | ||||||
|  |                 AndSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     lhs: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     rhs: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 16, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 17, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg$next", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 17, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 NotSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 18, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 18446744073709551614, | ||||||
|  |                 0, | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |                 3, | ||||||
|  |                 3, | ||||||
|  |                 4, | ||||||
|  |                 3, | ||||||
|  |                 0, | ||||||
|  |                 1, | ||||||
|  |                 4, | ||||||
|  |                 4, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::counter, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: counter, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: AsyncReset, | ||||||
|  |                 }, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 2, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.rst", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Bundle { | ||||||
|  |                     fields: [ | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(0), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: Clock, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: Clock, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(1), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: AsyncReset, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 2 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.clk: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Clock, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.rst: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: AsyncReset, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: AsyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 1, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.count: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 2, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "counter", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "cd", | ||||||
|  |                 child: TraceBundle { | ||||||
|  |                     name: "cd", | ||||||
|  |                     fields: [ | ||||||
|  |                         TraceClock { | ||||||
|  |                             id: TraceScalarId(0), | ||||||
|  |                             name: "clk", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceAsyncReset { | ||||||
|  |                             id: TraceScalarId(1), | ||||||
|  |                             name: "rst", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                     ty: Bundle { | ||||||
|  |                         /* offset = 0 */ | ||||||
|  |                         clk: Clock, | ||||||
|  |                         /* offset = 1 */ | ||||||
|  |                         rst: AsyncReset, | ||||||
|  |                     }, | ||||||
|  |                     flow: Source, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: AsyncReset, | ||||||
|  |                 }, | ||||||
|  |                 flow: Source, | ||||||
|  |             }, | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "count", | ||||||
|  |                 child: TraceUInt { | ||||||
|  |                     id: TraceScalarId(2), | ||||||
|  |                     name: "count", | ||||||
|  |                     ty: UInt<4>, | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "count_reg", | ||||||
|  |                 child: TraceUInt { | ||||||
|  |                     id: TraceScalarId(3), | ||||||
|  |                     name: "count_reg", | ||||||
|  |                     ty: UInt<4>, | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigClock { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |             }, | ||||||
|  |             state: 0x1, | ||||||
|  |             last_state: 0x1, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(1), | ||||||
|  |             kind: BigAsyncReset { | ||||||
|  |                 index: StatePartIndex<BigSlots>(1), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(2), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(2), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0x3, | ||||||
|  |             last_state: 0x2, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(3), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(3), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0x3, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [ | ||||||
|  |         Running( | ||||||
|  |             VcdWriter { | ||||||
|  |                 finished_init: true, | ||||||
|  |                 timescale: 1 ps, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  |     instant: 66 μs, | ||||||
|  |     clocks_triggered: [ | ||||||
|  |         StatePartIndex<SmallSlots>(1), | ||||||
|  |     ], | ||||||
|  | } | ||||||
							
								
								
									
										217
									
								
								crates/fayalite/tests/sim/expected/counter_async.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								crates/fayalite/tests/sim/expected/counter_async.vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,217 @@ | ||||||
|  | $timescale 1 ps $end | ||||||
|  | $scope module counter $end | ||||||
|  | $scope struct cd $end | ||||||
|  | $var wire 1 ! clk $end | ||||||
|  | $var wire 1 " rst $end | ||||||
|  | $upscope $end | ||||||
|  | $var wire 4 # count $end | ||||||
|  | $var reg 4 $ count_reg $end | ||||||
|  | $upscope $end | ||||||
|  | $enddefinitions $end | ||||||
|  | $dumpvars | ||||||
|  | 0! | ||||||
|  | 0" | ||||||
|  | b0 # | ||||||
|  | b0 $ | ||||||
|  | $end | ||||||
|  | #500000 | ||||||
|  | 1" | ||||||
|  | b11 # | ||||||
|  | b11 $ | ||||||
|  | #1000000 | ||||||
|  | 1! | ||||||
|  | #1500000 | ||||||
|  | 0" | ||||||
|  | #2000000 | ||||||
|  | 0! | ||||||
|  | #3000000 | ||||||
|  | 1! | ||||||
|  | b100 $ | ||||||
|  | b100 # | ||||||
|  | #4000000 | ||||||
|  | 0! | ||||||
|  | #5000000 | ||||||
|  | 1! | ||||||
|  | b101 $ | ||||||
|  | b101 # | ||||||
|  | #6000000 | ||||||
|  | 0! | ||||||
|  | #7000000 | ||||||
|  | 1! | ||||||
|  | b110 $ | ||||||
|  | b110 # | ||||||
|  | #8000000 | ||||||
|  | 0! | ||||||
|  | #9000000 | ||||||
|  | 1! | ||||||
|  | b111 $ | ||||||
|  | b111 # | ||||||
|  | #10000000 | ||||||
|  | 0! | ||||||
|  | #11000000 | ||||||
|  | 1! | ||||||
|  | b1000 $ | ||||||
|  | b1000 # | ||||||
|  | #12000000 | ||||||
|  | 0! | ||||||
|  | #13000000 | ||||||
|  | 1! | ||||||
|  | b1001 $ | ||||||
|  | b1001 # | ||||||
|  | #14000000 | ||||||
|  | 0! | ||||||
|  | #15000000 | ||||||
|  | 1! | ||||||
|  | b1010 $ | ||||||
|  | b1010 # | ||||||
|  | #16000000 | ||||||
|  | 0! | ||||||
|  | #17000000 | ||||||
|  | 1! | ||||||
|  | b1011 $ | ||||||
|  | b1011 # | ||||||
|  | #18000000 | ||||||
|  | 0! | ||||||
|  | #19000000 | ||||||
|  | 1! | ||||||
|  | b1100 $ | ||||||
|  | b1100 # | ||||||
|  | #20000000 | ||||||
|  | 0! | ||||||
|  | #21000000 | ||||||
|  | 1! | ||||||
|  | b1101 $ | ||||||
|  | b1101 # | ||||||
|  | #22000000 | ||||||
|  | 0! | ||||||
|  | #23000000 | ||||||
|  | 1! | ||||||
|  | b1110 $ | ||||||
|  | b1110 # | ||||||
|  | #24000000 | ||||||
|  | 0! | ||||||
|  | #25000000 | ||||||
|  | 1! | ||||||
|  | b1111 $ | ||||||
|  | b1111 # | ||||||
|  | #26000000 | ||||||
|  | 0! | ||||||
|  | #27000000 | ||||||
|  | 1! | ||||||
|  | b0 $ | ||||||
|  | b0 # | ||||||
|  | #28000000 | ||||||
|  | 0! | ||||||
|  | #29000000 | ||||||
|  | 1! | ||||||
|  | b1 $ | ||||||
|  | b1 # | ||||||
|  | #30000000 | ||||||
|  | 0! | ||||||
|  | #31000000 | ||||||
|  | 1! | ||||||
|  | b10 $ | ||||||
|  | b10 # | ||||||
|  | #32000000 | ||||||
|  | 0! | ||||||
|  | #33000000 | ||||||
|  | 1! | ||||||
|  | b11 $ | ||||||
|  | b11 # | ||||||
|  | #34000000 | ||||||
|  | 0! | ||||||
|  | #35000000 | ||||||
|  | 1! | ||||||
|  | b100 $ | ||||||
|  | b100 # | ||||||
|  | #36000000 | ||||||
|  | 0! | ||||||
|  | #37000000 | ||||||
|  | 1! | ||||||
|  | b101 $ | ||||||
|  | b101 # | ||||||
|  | #38000000 | ||||||
|  | 0! | ||||||
|  | #39000000 | ||||||
|  | 1! | ||||||
|  | b110 $ | ||||||
|  | b110 # | ||||||
|  | #40000000 | ||||||
|  | 0! | ||||||
|  | #41000000 | ||||||
|  | 1! | ||||||
|  | b111 $ | ||||||
|  | b111 # | ||||||
|  | #42000000 | ||||||
|  | 0! | ||||||
|  | #43000000 | ||||||
|  | 1! | ||||||
|  | b1000 $ | ||||||
|  | b1000 # | ||||||
|  | #44000000 | ||||||
|  | 0! | ||||||
|  | #45000000 | ||||||
|  | 1! | ||||||
|  | b1001 $ | ||||||
|  | b1001 # | ||||||
|  | #46000000 | ||||||
|  | 0! | ||||||
|  | #47000000 | ||||||
|  | 1! | ||||||
|  | b1010 $ | ||||||
|  | b1010 # | ||||||
|  | #48000000 | ||||||
|  | 0! | ||||||
|  | #49000000 | ||||||
|  | 1! | ||||||
|  | b1011 $ | ||||||
|  | b1011 # | ||||||
|  | #50000000 | ||||||
|  | 0! | ||||||
|  | #51000000 | ||||||
|  | 1! | ||||||
|  | b1100 $ | ||||||
|  | b1100 # | ||||||
|  | #52000000 | ||||||
|  | 0! | ||||||
|  | #53000000 | ||||||
|  | 1! | ||||||
|  | b1101 $ | ||||||
|  | b1101 # | ||||||
|  | #54000000 | ||||||
|  | 0! | ||||||
|  | #55000000 | ||||||
|  | 1! | ||||||
|  | b1110 $ | ||||||
|  | b1110 # | ||||||
|  | #56000000 | ||||||
|  | 0! | ||||||
|  | #57000000 | ||||||
|  | 1! | ||||||
|  | b1111 $ | ||||||
|  | b1111 # | ||||||
|  | #58000000 | ||||||
|  | 0! | ||||||
|  | #59000000 | ||||||
|  | 1! | ||||||
|  | b0 $ | ||||||
|  | b0 # | ||||||
|  | #60000000 | ||||||
|  | 0! | ||||||
|  | #61000000 | ||||||
|  | 1! | ||||||
|  | b1 $ | ||||||
|  | b1 # | ||||||
|  | #62000000 | ||||||
|  | 0! | ||||||
|  | #63000000 | ||||||
|  | 1! | ||||||
|  | b10 $ | ||||||
|  | b10 # | ||||||
|  | #64000000 | ||||||
|  | 0! | ||||||
|  | #65000000 | ||||||
|  | 1! | ||||||
|  | b11 $ | ||||||
|  | b11 # | ||||||
|  | #66000000 | ||||||
							
								
								
									
										490
									
								
								crates/fayalite/tests/sim/expected/counter_sync.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										490
									
								
								crates/fayalite/tests/sim/expected/counter_sync.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,490 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 4, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 9, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.rst", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count_reg", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count_reg$next", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<1>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<5>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:6:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: UInt<1> }, | ||||||
|  |                     value: 1, | ||||||
|  |                 }, | ||||||
|  |                 Add { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "", ty: UInt<5> }, | ||||||
|  |                     lhs: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     rhs: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: UInt<1> }, | ||||||
|  |                 }, | ||||||
|  |                 CastToUInt { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "", ty: UInt<5> }, | ||||||
|  |                     dest_width: 4, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg$next", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::cd.rst", ty: SyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     value: 3, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:3:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::cd.clk", ty: Clock }, | ||||||
|  |                 }, | ||||||
|  |                 AndSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     lhs: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     rhs: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 14, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 13, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg$next", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 14, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(counter: counter).counter::count_reg", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 NotSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 15, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 18446744073709551614, | ||||||
|  |                 0, | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |                 3, | ||||||
|  |                 3, | ||||||
|  |                 4, | ||||||
|  |                 3, | ||||||
|  |                 1, | ||||||
|  |                 4, | ||||||
|  |                 4, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::counter, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: counter, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: SyncReset, | ||||||
|  |                 }, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 2, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::cd.rst", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Bundle { | ||||||
|  |                     fields: [ | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(0), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: Clock, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: Clock, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(1), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: SyncReset, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 2 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.clk: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Clock, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.rst: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: SyncReset, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 1, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::counter, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: counter, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.count: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(counter: counter).counter::count", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 2, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "counter", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "cd", | ||||||
|  |                 child: TraceBundle { | ||||||
|  |                     name: "cd", | ||||||
|  |                     fields: [ | ||||||
|  |                         TraceClock { | ||||||
|  |                             id: TraceScalarId(0), | ||||||
|  |                             name: "clk", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceSyncReset { | ||||||
|  |                             id: TraceScalarId(1), | ||||||
|  |                             name: "rst", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                     ty: Bundle { | ||||||
|  |                         /* offset = 0 */ | ||||||
|  |                         clk: Clock, | ||||||
|  |                         /* offset = 1 */ | ||||||
|  |                         rst: SyncReset, | ||||||
|  |                     }, | ||||||
|  |                     flow: Source, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: SyncReset, | ||||||
|  |                 }, | ||||||
|  |                 flow: Source, | ||||||
|  |             }, | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "count", | ||||||
|  |                 child: TraceUInt { | ||||||
|  |                     id: TraceScalarId(2), | ||||||
|  |                     name: "count", | ||||||
|  |                     ty: UInt<4>, | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "count_reg", | ||||||
|  |                 child: TraceUInt { | ||||||
|  |                     id: TraceScalarId(3), | ||||||
|  |                     name: "count_reg", | ||||||
|  |                     ty: UInt<4>, | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigClock { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |             }, | ||||||
|  |             state: 0x1, | ||||||
|  |             last_state: 0x1, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(1), | ||||||
|  |             kind: BigSyncReset { | ||||||
|  |                 index: StatePartIndex<BigSlots>(1), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(2), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(2), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0x3, | ||||||
|  |             last_state: 0x2, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(3), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(3), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0x3, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [ | ||||||
|  |         Running( | ||||||
|  |             VcdWriter { | ||||||
|  |                 finished_init: true, | ||||||
|  |                 timescale: 1 ps, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  |     instant: 66 μs, | ||||||
|  |     clocks_triggered: [ | ||||||
|  |         StatePartIndex<SmallSlots>(1), | ||||||
|  |     ], | ||||||
|  | } | ||||||
							
								
								
									
										214
									
								
								crates/fayalite/tests/sim/expected/counter_sync.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								crates/fayalite/tests/sim/expected/counter_sync.vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,214 @@ | ||||||
|  | $timescale 1 ps $end | ||||||
|  | $scope module counter $end | ||||||
|  | $scope struct cd $end | ||||||
|  | $var wire 1 ! clk $end | ||||||
|  | $var wire 1 " rst $end | ||||||
|  | $upscope $end | ||||||
|  | $var wire 4 # count $end | ||||||
|  | $var reg 4 $ count_reg $end | ||||||
|  | $upscope $end | ||||||
|  | $enddefinitions $end | ||||||
|  | $dumpvars | ||||||
|  | 0! | ||||||
|  | 1" | ||||||
|  | b0 # | ||||||
|  | b0 $ | ||||||
|  | $end | ||||||
|  | #1000000 | ||||||
|  | 1! | ||||||
|  | b11 $ | ||||||
|  | b11 # | ||||||
|  | 0" | ||||||
|  | #2000000 | ||||||
|  | 0! | ||||||
|  | #3000000 | ||||||
|  | 1! | ||||||
|  | b100 $ | ||||||
|  | b100 # | ||||||
|  | #4000000 | ||||||
|  | 0! | ||||||
|  | #5000000 | ||||||
|  | 1! | ||||||
|  | b101 $ | ||||||
|  | b101 # | ||||||
|  | #6000000 | ||||||
|  | 0! | ||||||
|  | #7000000 | ||||||
|  | 1! | ||||||
|  | b110 $ | ||||||
|  | b110 # | ||||||
|  | #8000000 | ||||||
|  | 0! | ||||||
|  | #9000000 | ||||||
|  | 1! | ||||||
|  | b111 $ | ||||||
|  | b111 # | ||||||
|  | #10000000 | ||||||
|  | 0! | ||||||
|  | #11000000 | ||||||
|  | 1! | ||||||
|  | b1000 $ | ||||||
|  | b1000 # | ||||||
|  | #12000000 | ||||||
|  | 0! | ||||||
|  | #13000000 | ||||||
|  | 1! | ||||||
|  | b1001 $ | ||||||
|  | b1001 # | ||||||
|  | #14000000 | ||||||
|  | 0! | ||||||
|  | #15000000 | ||||||
|  | 1! | ||||||
|  | b1010 $ | ||||||
|  | b1010 # | ||||||
|  | #16000000 | ||||||
|  | 0! | ||||||
|  | #17000000 | ||||||
|  | 1! | ||||||
|  | b1011 $ | ||||||
|  | b1011 # | ||||||
|  | #18000000 | ||||||
|  | 0! | ||||||
|  | #19000000 | ||||||
|  | 1! | ||||||
|  | b1100 $ | ||||||
|  | b1100 # | ||||||
|  | #20000000 | ||||||
|  | 0! | ||||||
|  | #21000000 | ||||||
|  | 1! | ||||||
|  | b1101 $ | ||||||
|  | b1101 # | ||||||
|  | #22000000 | ||||||
|  | 0! | ||||||
|  | #23000000 | ||||||
|  | 1! | ||||||
|  | b1110 $ | ||||||
|  | b1110 # | ||||||
|  | #24000000 | ||||||
|  | 0! | ||||||
|  | #25000000 | ||||||
|  | 1! | ||||||
|  | b1111 $ | ||||||
|  | b1111 # | ||||||
|  | #26000000 | ||||||
|  | 0! | ||||||
|  | #27000000 | ||||||
|  | 1! | ||||||
|  | b0 $ | ||||||
|  | b0 # | ||||||
|  | #28000000 | ||||||
|  | 0! | ||||||
|  | #29000000 | ||||||
|  | 1! | ||||||
|  | b1 $ | ||||||
|  | b1 # | ||||||
|  | #30000000 | ||||||
|  | 0! | ||||||
|  | #31000000 | ||||||
|  | 1! | ||||||
|  | b10 $ | ||||||
|  | b10 # | ||||||
|  | #32000000 | ||||||
|  | 0! | ||||||
|  | #33000000 | ||||||
|  | 1! | ||||||
|  | b11 $ | ||||||
|  | b11 # | ||||||
|  | #34000000 | ||||||
|  | 0! | ||||||
|  | #35000000 | ||||||
|  | 1! | ||||||
|  | b100 $ | ||||||
|  | b100 # | ||||||
|  | #36000000 | ||||||
|  | 0! | ||||||
|  | #37000000 | ||||||
|  | 1! | ||||||
|  | b101 $ | ||||||
|  | b101 # | ||||||
|  | #38000000 | ||||||
|  | 0! | ||||||
|  | #39000000 | ||||||
|  | 1! | ||||||
|  | b110 $ | ||||||
|  | b110 # | ||||||
|  | #40000000 | ||||||
|  | 0! | ||||||
|  | #41000000 | ||||||
|  | 1! | ||||||
|  | b111 $ | ||||||
|  | b111 # | ||||||
|  | #42000000 | ||||||
|  | 0! | ||||||
|  | #43000000 | ||||||
|  | 1! | ||||||
|  | b1000 $ | ||||||
|  | b1000 # | ||||||
|  | #44000000 | ||||||
|  | 0! | ||||||
|  | #45000000 | ||||||
|  | 1! | ||||||
|  | b1001 $ | ||||||
|  | b1001 # | ||||||
|  | #46000000 | ||||||
|  | 0! | ||||||
|  | #47000000 | ||||||
|  | 1! | ||||||
|  | b1010 $ | ||||||
|  | b1010 # | ||||||
|  | #48000000 | ||||||
|  | 0! | ||||||
|  | #49000000 | ||||||
|  | 1! | ||||||
|  | b1011 $ | ||||||
|  | b1011 # | ||||||
|  | #50000000 | ||||||
|  | 0! | ||||||
|  | #51000000 | ||||||
|  | 1! | ||||||
|  | b1100 $ | ||||||
|  | b1100 # | ||||||
|  | #52000000 | ||||||
|  | 0! | ||||||
|  | #53000000 | ||||||
|  | 1! | ||||||
|  | b1101 $ | ||||||
|  | b1101 # | ||||||
|  | #54000000 | ||||||
|  | 0! | ||||||
|  | #55000000 | ||||||
|  | 1! | ||||||
|  | b1110 $ | ||||||
|  | b1110 # | ||||||
|  | #56000000 | ||||||
|  | 0! | ||||||
|  | #57000000 | ||||||
|  | 1! | ||||||
|  | b1111 $ | ||||||
|  | b1111 # | ||||||
|  | #58000000 | ||||||
|  | 0! | ||||||
|  | #59000000 | ||||||
|  | 1! | ||||||
|  | b0 $ | ||||||
|  | b0 # | ||||||
|  | #60000000 | ||||||
|  | 0! | ||||||
|  | #61000000 | ||||||
|  | 1! | ||||||
|  | b1 $ | ||||||
|  | b1 # | ||||||
|  | #62000000 | ||||||
|  | 0! | ||||||
|  | #63000000 | ||||||
|  | 1! | ||||||
|  | b10 $ | ||||||
|  | b10 # | ||||||
|  | #64000000 | ||||||
|  | 0! | ||||||
|  | #65000000 | ||||||
|  | 1! | ||||||
|  | b11 $ | ||||||
|  | b11 # | ||||||
|  | #66000000 | ||||||
							
								
								
									
										798
									
								
								crates/fayalite/tests/sim/expected/mod1.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										798
									
								
								crates/fayalite/tests/sim/expected/mod1.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,798 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 17, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.i", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.o", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.i2", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.o2", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::child.i", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::child.o", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::child.i2", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::child.o2", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i2", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o2", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.i2", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::o.i2", ty: SInt<2> }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.i", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::o.i", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:2:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(10), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i2", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.i2", ty: SInt<2> }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.i", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(16), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     value: 15, | ||||||
|  |                 }, | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(14), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     value: 5, | ||||||
|  |                 }, | ||||||
|  |                 CmpLt { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(15), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     lhs: StatePartIndex<BigSlots>(14), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     rhs: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 CastToUInt { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(13), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(10), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i2", ty: SInt<2> }, | ||||||
|  |                     dest_width: 4, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:7:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o2", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(13), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:8:1 | ||||||
|  |                 BranchIfZero { | ||||||
|  |                     target: 11, | ||||||
|  |                     value: StatePartIndex<BigSlots>(15), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:9:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o2", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(16), // SlotDebugData { name: "", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:2:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.o2", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o2", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::o.o2", ty: UInt<4> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.o2", ty: UInt<4> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:1:1 | ||||||
|  |                 CastToSInt { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(12), // SlotDebugData { name: "", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::i", ty: UInt<4> }, | ||||||
|  |                     dest_width: 2, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX-2.rs:6:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(12), // SlotDebugData { name: "", ty: SInt<2> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:2:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.o", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "InstantiatedModule(mod1.child: mod1_child).mod1_child::o", ty: SInt<2> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:4:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::o.o", ty: SInt<2> }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "InstantiatedModule(mod1: mod1).mod1::child.o", ty: SInt<2> }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 17, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 10, | ||||||
|  |                 -2, | ||||||
|  |                 -2, | ||||||
|  |                 15, | ||||||
|  |                 10, | ||||||
|  |                 -2, | ||||||
|  |                 -2, | ||||||
|  |                 15, | ||||||
|  |                 10, | ||||||
|  |                 -2, | ||||||
|  |                 -2, | ||||||
|  |                 15, | ||||||
|  |                 -2, | ||||||
|  |                 14, | ||||||
|  |                 5, | ||||||
|  |                 1, | ||||||
|  |                 15, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::mod1, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: mod1, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::mod1, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: mod1, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     #[hdl(flip)] /* offset = 0 */ | ||||||
|  |                     i: UInt<4>, | ||||||
|  |                     /* offset = 4 */ | ||||||
|  |                     o: SInt<2>, | ||||||
|  |                     #[hdl(flip)] /* offset = 6 */ | ||||||
|  |                     i2: SInt<2>, | ||||||
|  |                     /* offset = 8 */ | ||||||
|  |                     o2: UInt<4>, | ||||||
|  |                 }, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 4, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.i", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.o", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.i2", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(mod1: mod1).mod1::o.o2", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Bundle { | ||||||
|  |                     fields: [ | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(0), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: UInt<4>, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(1), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: SInt<2>, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(2), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: SInt<2>, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(3), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: UInt<4>, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 4 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::mod1, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: mod1, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o.i: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::mod1, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: mod1, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o.i2: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 2, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::mod1, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: mod1, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o.o: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 1, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::mod1, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: mod1, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.o.o2: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 3, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "mod1", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "o", | ||||||
|  |                 child: TraceBundle { | ||||||
|  |                     name: "o", | ||||||
|  |                     fields: [ | ||||||
|  |                         TraceUInt { | ||||||
|  |                             id: TraceScalarId(0), | ||||||
|  |                             name: "i", | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceSInt { | ||||||
|  |                             id: TraceScalarId(1), | ||||||
|  |                             name: "o", | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                         TraceSInt { | ||||||
|  |                             id: TraceScalarId(2), | ||||||
|  |                             name: "i2", | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceUInt { | ||||||
|  |                             id: TraceScalarId(3), | ||||||
|  |                             name: "o2", | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                     ty: Bundle { | ||||||
|  |                         #[hdl(flip)] /* offset = 0 */ | ||||||
|  |                         i: UInt<4>, | ||||||
|  |                         /* offset = 4 */ | ||||||
|  |                         o: SInt<2>, | ||||||
|  |                         #[hdl(flip)] /* offset = 6 */ | ||||||
|  |                         i2: SInt<2>, | ||||||
|  |                         /* offset = 8 */ | ||||||
|  |                         o2: UInt<4>, | ||||||
|  |                     }, | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     #[hdl(flip)] /* offset = 0 */ | ||||||
|  |                     i: UInt<4>, | ||||||
|  |                     /* offset = 4 */ | ||||||
|  |                     o: SInt<2>, | ||||||
|  |                     #[hdl(flip)] /* offset = 6 */ | ||||||
|  |                     i2: SInt<2>, | ||||||
|  |                     /* offset = 8 */ | ||||||
|  |                     o2: UInt<4>, | ||||||
|  |                 }, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |             TraceInstance { | ||||||
|  |                 name: "child", | ||||||
|  |                 instance_io: TraceBundle { | ||||||
|  |                     name: "child", | ||||||
|  |                     fields: [ | ||||||
|  |                         TraceUInt { | ||||||
|  |                             id: TraceScalarId(8), | ||||||
|  |                             name: "i", | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                         TraceSInt { | ||||||
|  |                             id: TraceScalarId(9), | ||||||
|  |                             name: "o", | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceSInt { | ||||||
|  |                             id: TraceScalarId(10), | ||||||
|  |                             name: "i2", | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                         TraceUInt { | ||||||
|  |                             id: TraceScalarId(11), | ||||||
|  |                             name: "o2", | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                     ty: Bundle { | ||||||
|  |                         #[hdl(flip)] /* offset = 0 */ | ||||||
|  |                         i: UInt<4>, | ||||||
|  |                         /* offset = 4 */ | ||||||
|  |                         o: SInt<2>, | ||||||
|  |                         #[hdl(flip)] /* offset = 6 */ | ||||||
|  |                         i2: SInt<2>, | ||||||
|  |                         /* offset = 8 */ | ||||||
|  |                         o2: UInt<4>, | ||||||
|  |                     }, | ||||||
|  |                     flow: Source, | ||||||
|  |                 }, | ||||||
|  |                 module: TraceModule { | ||||||
|  |                     name: "mod1_child", | ||||||
|  |                     children: [ | ||||||
|  |                         TraceModuleIO { | ||||||
|  |                             name: "i", | ||||||
|  |                             child: TraceUInt { | ||||||
|  |                                 id: TraceScalarId(4), | ||||||
|  |                                 name: "i", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                                 flow: Source, | ||||||
|  |                             }, | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceModuleIO { | ||||||
|  |                             name: "o", | ||||||
|  |                             child: TraceSInt { | ||||||
|  |                                 id: TraceScalarId(5), | ||||||
|  |                                 name: "o", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                                 flow: Sink, | ||||||
|  |                             }, | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                         TraceModuleIO { | ||||||
|  |                             name: "i2", | ||||||
|  |                             child: TraceSInt { | ||||||
|  |                                 id: TraceScalarId(6), | ||||||
|  |                                 name: "i2", | ||||||
|  |                                 ty: SInt<2>, | ||||||
|  |                                 flow: Source, | ||||||
|  |                             }, | ||||||
|  |                             ty: SInt<2>, | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceModuleIO { | ||||||
|  |                             name: "o2", | ||||||
|  |                             child: TraceUInt { | ||||||
|  |                                 id: TraceScalarId(7), | ||||||
|  |                                 name: "o2", | ||||||
|  |                                 ty: UInt<4>, | ||||||
|  |                                 flow: Sink, | ||||||
|  |                             }, | ||||||
|  |                             ty: UInt<4>, | ||||||
|  |                             flow: Sink, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     #[hdl(flip)] /* offset = 0 */ | ||||||
|  |                     i: UInt<4>, | ||||||
|  |                     /* offset = 4 */ | ||||||
|  |                     o: SInt<2>, | ||||||
|  |                     #[hdl(flip)] /* offset = 6 */ | ||||||
|  |                     i2: SInt<2>, | ||||||
|  |                     /* offset = 8 */ | ||||||
|  |                     o2: UInt<4>, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xa, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(1), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(1), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(2), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(2), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x2, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(3), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(3), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xf, | ||||||
|  |             last_state: 0xe, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(4), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(8), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xa, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(5), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(9), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(6), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(10), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x2, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(7), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(11), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xf, | ||||||
|  |             last_state: 0xe, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(8), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(4), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xa, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(9), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(5), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x3, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(10), | ||||||
|  |             kind: BigSInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(6), | ||||||
|  |                 ty: SInt<2>, | ||||||
|  |             }, | ||||||
|  |             state: 0x2, | ||||||
|  |             last_state: 0x2, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(11), | ||||||
|  |             kind: BigUInt { | ||||||
|  |                 index: StatePartIndex<BigSlots>(7), | ||||||
|  |                 ty: UInt<4>, | ||||||
|  |             }, | ||||||
|  |             state: 0xf, | ||||||
|  |             last_state: 0xe, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [ | ||||||
|  |         Running( | ||||||
|  |             VcdWriter { | ||||||
|  |                 finished_init: true, | ||||||
|  |                 timescale: 1 ps, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  |     instant: 2 μs, | ||||||
|  |     clocks_triggered: [], | ||||||
|  | } | ||||||
							
								
								
									
										47
									
								
								crates/fayalite/tests/sim/expected/mod1.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								crates/fayalite/tests/sim/expected/mod1.vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | ||||||
|  | $timescale 1 ps $end | ||||||
|  | $scope module mod1 $end | ||||||
|  | $scope struct o $end | ||||||
|  | $var wire 4 ! i $end | ||||||
|  | $var wire 2 " o $end | ||||||
|  | $var wire 2 # i2 $end | ||||||
|  | $var wire 4 $ o2 $end | ||||||
|  | $upscope $end | ||||||
|  | $scope struct child $end | ||||||
|  | $var wire 4 ) i $end | ||||||
|  | $var wire 2 * o $end | ||||||
|  | $var wire 2 + i2 $end | ||||||
|  | $var wire 4 , o2 $end | ||||||
|  | $upscope $end | ||||||
|  | $scope module mod1_child $end | ||||||
|  | $var wire 4 % i $end | ||||||
|  | $var wire 2 & o $end | ||||||
|  | $var wire 2 ' i2 $end | ||||||
|  | $var wire 4 ( o2 $end | ||||||
|  | $upscope $end | ||||||
|  | $upscope $end | ||||||
|  | $enddefinitions $end | ||||||
|  | $dumpvars | ||||||
|  | b11 ! | ||||||
|  | b11 " | ||||||
|  | b10 # | ||||||
|  | b1110 $ | ||||||
|  | b11 % | ||||||
|  | b11 & | ||||||
|  | b10 ' | ||||||
|  | b1110 ( | ||||||
|  | b11 ) | ||||||
|  | b11 * | ||||||
|  | b10 + | ||||||
|  | b1110 , | ||||||
|  | $end | ||||||
|  | #1000000 | ||||||
|  | b1010 ! | ||||||
|  | b10 " | ||||||
|  | b1111 $ | ||||||
|  | b1010 % | ||||||
|  | b10 & | ||||||
|  | b1111 ( | ||||||
|  | b1010 ) | ||||||
|  | b10 * | ||||||
|  | b1111 , | ||||||
|  | #2000000 | ||||||
							
								
								
									
										670
									
								
								crates/fayalite/tests/sim/expected/shift_register.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										670
									
								
								crates/fayalite/tests/sim/expected/shift_register.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,670 @@ | ||||||
|  | Simulation { | ||||||
|  |     state: State { | ||||||
|  |         insns: Insns { | ||||||
|  |             state_layout: StateLayout { | ||||||
|  |                 ty: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 4, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 13, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.rst", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::d", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::q", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0$next", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1$next", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2$next", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3$next", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             insns: [ | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:13:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(3), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::q", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:12:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(12), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3$next", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:10:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(10), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2$next", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:8:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1$next", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:6:1 | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0$next", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(2), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::d", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:5:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(1), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.rst", ty: SyncReset }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Const { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     value: 0, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:5:1 | ||||||
|  |                 IsNonZeroDestIsSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(0), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.clk", ty: Clock }, | ||||||
|  |                 }, | ||||||
|  |                 AndSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     lhs: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     rhs: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 14, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 13, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(5), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0$next", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 14, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(4), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg0", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:7:1 | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 19, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 18, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(8), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1$next", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 19, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(7), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg1", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:9:1 | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 24, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 23, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(10), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2$next", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 24, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(9), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg2", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:11:1 | ||||||
|  |                 BranchIfSmallZero { | ||||||
|  |                     target: 29, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(1), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 BranchIfSmallNonZero { | ||||||
|  |                     target: 28, | ||||||
|  |                     value: StatePartIndex<SmallSlots>(3), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(12), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3$next", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 Branch { | ||||||
|  |                     target: 29, | ||||||
|  |                 }, | ||||||
|  |                 Copy { | ||||||
|  |                     dest: StatePartIndex<BigSlots>(11), // SlotDebugData { name: "InstantiatedModule(shift_register: shift_register).shift_register::reg3", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<BigSlots>(6), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:5:1 | ||||||
|  |                 NotSmall { | ||||||
|  |                     dest: StatePartIndex<SmallSlots>(0), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                     src: StatePartIndex<SmallSlots>(2), // SlotDebugData { name: "", ty: Bool }, | ||||||
|  |                 }, | ||||||
|  |                 // at: module-XXXXXXXXXX.rs:1:1 | ||||||
|  |                 Return, | ||||||
|  |             ], | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |         pc: 30, | ||||||
|  |         small_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 18446744073709551614, | ||||||
|  |                 0, | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |         big_slots: StatePart { | ||||||
|  |             value: [ | ||||||
|  |                 1, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |                 0, | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     io: Instance { | ||||||
|  |         name: <simulator>::shift_register, | ||||||
|  |         instantiated: Module { | ||||||
|  |             name: shift_register, | ||||||
|  |             .. | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     uninitialized_inputs: {}, | ||||||
|  |     io_targets: { | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::shift_register, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: shift_register, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: SyncReset, | ||||||
|  |                 }, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 2, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.clk", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::cd.rst", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Bundle { | ||||||
|  |                     fields: [ | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(0), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: Clock, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: Clock, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                         CompiledBundleField { | ||||||
|  |                             offset: TypeIndex { | ||||||
|  |                                 small_slots: StatePartIndex<SmallSlots>(0), | ||||||
|  |                                 big_slots: StatePartIndex<BigSlots>(1), | ||||||
|  |                             }, | ||||||
|  |                             ty: CompiledTypeLayout { | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                                 layout: TypeLayout { | ||||||
|  |                                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                                         len: 0, | ||||||
|  |                                         debug_data: [], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                                         len: 1, | ||||||
|  |                                         debug_data: [ | ||||||
|  |                                             SlotDebugData { | ||||||
|  |                                                 name: "", | ||||||
|  |                                                 ty: SyncReset, | ||||||
|  |                                             }, | ||||||
|  |                                         ], | ||||||
|  |                                         .. | ||||||
|  |                                     }, | ||||||
|  |                                 }, | ||||||
|  |                                 body: Scalar, | ||||||
|  |                             }, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 2 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::shift_register, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: shift_register, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.clk: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Clock, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: Clock, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 0, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::shift_register, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: shift_register, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.cd.rst: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: SyncReset, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "", | ||||||
|  |                                 ty: SyncReset, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 1, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::shift_register, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: shift_register, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.d: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bool, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::d", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 2, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |         Instance { | ||||||
|  |             name: <simulator>::shift_register, | ||||||
|  |             instantiated: Module { | ||||||
|  |                 name: shift_register, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         }.q: CompiledValue { | ||||||
|  |             layout: CompiledTypeLayout { | ||||||
|  |                 ty: Bool, | ||||||
|  |                 layout: TypeLayout { | ||||||
|  |                     small_slots: StatePartAllocationLayout<SmallSlots> { | ||||||
|  |                         len: 0, | ||||||
|  |                         debug_data: [], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                     big_slots: StatePartAllocationLayout<BigSlots> { | ||||||
|  |                         len: 1, | ||||||
|  |                         debug_data: [ | ||||||
|  |                             SlotDebugData { | ||||||
|  |                                 name: "InstantiatedModule(shift_register: shift_register).shift_register::q", | ||||||
|  |                                 ty: Bool, | ||||||
|  |                             }, | ||||||
|  |                         ], | ||||||
|  |                         .. | ||||||
|  |                     }, | ||||||
|  |                 }, | ||||||
|  |                 body: Scalar, | ||||||
|  |             }, | ||||||
|  |             range: TypeIndexRange { | ||||||
|  |                 small_slots: StatePartIndexRange<SmallSlots> { start: 0, len: 0 }, | ||||||
|  |                 big_slots: StatePartIndexRange<BigSlots> { start: 3, len: 1 }, | ||||||
|  |             }, | ||||||
|  |             write: None, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     made_initial_step: true, | ||||||
|  |     needs_settle: false, | ||||||
|  |     trace_decls: TraceModule { | ||||||
|  |         name: "shift_register", | ||||||
|  |         children: [ | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "cd", | ||||||
|  |                 child: TraceBundle { | ||||||
|  |                     name: "cd", | ||||||
|  |                     fields: [ | ||||||
|  |                         TraceClock { | ||||||
|  |                             id: TraceScalarId(0), | ||||||
|  |                             name: "clk", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                         TraceSyncReset { | ||||||
|  |                             id: TraceScalarId(1), | ||||||
|  |                             name: "rst", | ||||||
|  |                             flow: Source, | ||||||
|  |                         }, | ||||||
|  |                     ], | ||||||
|  |                     ty: Bundle { | ||||||
|  |                         /* offset = 0 */ | ||||||
|  |                         clk: Clock, | ||||||
|  |                         /* offset = 1 */ | ||||||
|  |                         rst: SyncReset, | ||||||
|  |                     }, | ||||||
|  |                     flow: Source, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bundle { | ||||||
|  |                     /* offset = 0 */ | ||||||
|  |                     clk: Clock, | ||||||
|  |                     /* offset = 1 */ | ||||||
|  |                     rst: SyncReset, | ||||||
|  |                 }, | ||||||
|  |                 flow: Source, | ||||||
|  |             }, | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "d", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(2), | ||||||
|  |                     name: "d", | ||||||
|  |                     flow: Source, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |                 flow: Source, | ||||||
|  |             }, | ||||||
|  |             TraceModuleIO { | ||||||
|  |                 name: "q", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(3), | ||||||
|  |                     name: "q", | ||||||
|  |                     flow: Sink, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |                 flow: Sink, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "reg0", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(4), | ||||||
|  |                     name: "reg0", | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "reg1", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(5), | ||||||
|  |                     name: "reg1", | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "reg2", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(6), | ||||||
|  |                     name: "reg2", | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |             }, | ||||||
|  |             TraceReg { | ||||||
|  |                 name: "reg3", | ||||||
|  |                 child: TraceBool { | ||||||
|  |                     id: TraceScalarId(7), | ||||||
|  |                     name: "reg3", | ||||||
|  |                     flow: Duplex, | ||||||
|  |                 }, | ||||||
|  |                 ty: Bool, | ||||||
|  |             }, | ||||||
|  |         ], | ||||||
|  |     }, | ||||||
|  |     traces: [ | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(0), | ||||||
|  |             kind: BigClock { | ||||||
|  |                 index: StatePartIndex<BigSlots>(0), | ||||||
|  |             }, | ||||||
|  |             state: 0x1, | ||||||
|  |             last_state: 0x1, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(1), | ||||||
|  |             kind: BigSyncReset { | ||||||
|  |                 index: StatePartIndex<BigSlots>(1), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(2), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(2), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(3), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(3), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(4), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(4), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(5), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(7), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(6), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(9), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |         SimTrace { | ||||||
|  |             id: TraceScalarId(7), | ||||||
|  |             kind: BigBool { | ||||||
|  |                 index: StatePartIndex<BigSlots>(11), | ||||||
|  |             }, | ||||||
|  |             state: 0x0, | ||||||
|  |             last_state: 0x0, | ||||||
|  |         }, | ||||||
|  |     ], | ||||||
|  |     trace_writers: [ | ||||||
|  |         Running( | ||||||
|  |             VcdWriter { | ||||||
|  |                 finished_init: true, | ||||||
|  |                 timescale: 1 ps, | ||||||
|  |                 .. | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  |     instant: 66 μs, | ||||||
|  |     clocks_triggered: [ | ||||||
|  |         StatePartIndex<SmallSlots>(1), | ||||||
|  |     ], | ||||||
|  | } | ||||||
							
								
								
									
										193
									
								
								crates/fayalite/tests/sim/expected/shift_register.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								crates/fayalite/tests/sim/expected/shift_register.vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,193 @@ | ||||||
|  | $timescale 1 ps $end | ||||||
|  | $scope module shift_register $end | ||||||
|  | $scope struct cd $end | ||||||
|  | $var wire 1 ! clk $end | ||||||
|  | $var wire 1 " rst $end | ||||||
|  | $upscope $end | ||||||
|  | $var wire 1 # d $end | ||||||
|  | $var wire 1 $ q $end | ||||||
|  | $var reg 1 % reg0 $end | ||||||
|  | $var reg 1 & reg1 $end | ||||||
|  | $var reg 1 ' reg2 $end | ||||||
|  | $var reg 1 ( reg3 $end | ||||||
|  | $upscope $end | ||||||
|  | $enddefinitions $end | ||||||
|  | $dumpvars | ||||||
|  | 0! | ||||||
|  | 1" | ||||||
|  | 0# | ||||||
|  | 0$ | ||||||
|  | 0% | ||||||
|  | 0& | ||||||
|  | 0' | ||||||
|  | 0( | ||||||
|  | $end | ||||||
|  | #1000000 | ||||||
|  | 1! | ||||||
|  | #1100000 | ||||||
|  | 0" | ||||||
|  | #2000000 | ||||||
|  | 0! | ||||||
|  | #3000000 | ||||||
|  | 1! | ||||||
|  | #4000000 | ||||||
|  | 0! | ||||||
|  | 1# | ||||||
|  | #5000000 | ||||||
|  | 1! | ||||||
|  | 1% | ||||||
|  | #6000000 | ||||||
|  | 0! | ||||||
|  | #7000000 | ||||||
|  | 1! | ||||||
|  | 1& | ||||||
|  | #8000000 | ||||||
|  | 0! | ||||||
|  | 0# | ||||||
|  | #9000000 | ||||||
|  | 1! | ||||||
|  | 0% | ||||||
|  | 1' | ||||||
|  | #10000000 | ||||||
|  | 0! | ||||||
|  | #11000000 | ||||||
|  | 1! | ||||||
|  | 0& | ||||||
|  | 1( | ||||||
|  | 1$ | ||||||
|  | #12000000 | ||||||
|  | 0! | ||||||
|  | 1# | ||||||
|  | #13000000 | ||||||
|  | 1! | ||||||
|  | 1% | ||||||
|  | 0' | ||||||
|  | #14000000 | ||||||
|  | 0! | ||||||
|  | 0# | ||||||
|  | #15000000 | ||||||
|  | 1! | ||||||
|  | 0% | ||||||
|  | 1& | ||||||
|  | 0( | ||||||
|  | 0$ | ||||||
|  | #16000000 | ||||||
|  | 0! | ||||||
|  | 1# | ||||||
|  | #17000000 | ||||||
|  | 1! | ||||||
|  | 1% | ||||||
|  | 0& | ||||||
|  | 1' | ||||||
|  | #18000000 | ||||||
|  | 0! | ||||||
|  | #19000000 | ||||||
|  | 1! | ||||||
|  | 1& | ||||||
|  | 0' | ||||||
|  | 1( | ||||||
|  | 1$ | ||||||
|  | #20000000 | ||||||
|  | 0! | ||||||
|  | #21000000 | ||||||
|  | 1! | ||||||
|  | 1' | ||||||
|  | 0( | ||||||
|  | 0$ | ||||||
|  | #22000000 | ||||||
|  | 0! | ||||||
|  | #23000000 | ||||||
|  | 1! | ||||||
|  | 1( | ||||||
|  | 1$ | ||||||
|  | #24000000 | ||||||
|  | 0! | ||||||
|  | 0# | ||||||
|  | #25000000 | ||||||
|  | 1! | ||||||
|  | 0% | ||||||
|  | #26000000 | ||||||
|  | 0! | ||||||
|  | #27000000 | ||||||
|  | 1! | ||||||
|  | 0& | ||||||
|  | #28000000 | ||||||
|  | 0! | ||||||
|  | #29000000 | ||||||
|  | 1! | ||||||
|  | 0' | ||||||
|  | #30000000 | ||||||
|  | 0! | ||||||
|  | #31000000 | ||||||
|  | 1! | ||||||
|  | 0( | ||||||
|  | 0$ | ||||||
|  | #32000000 | ||||||
|  | 0! | ||||||
|  | #33000000 | ||||||
|  | 1! | ||||||
|  | #34000000 | ||||||
|  | 0! | ||||||
|  | #35000000 | ||||||
|  | 1! | ||||||
|  | #36000000 | ||||||
|  | 0! | ||||||
|  | #37000000 | ||||||
|  | 1! | ||||||
|  | #38000000 | ||||||
|  | 0! | ||||||
|  | #39000000 | ||||||
|  | 1! | ||||||
|  | #40000000 | ||||||
|  | 0! | ||||||
|  | #41000000 | ||||||
|  | 1! | ||||||
|  | #42000000 | ||||||
|  | 0! | ||||||
|  | #43000000 | ||||||
|  | 1! | ||||||
|  | #44000000 | ||||||
|  | 0! | ||||||
|  | #45000000 | ||||||
|  | 1! | ||||||
|  | #46000000 | ||||||
|  | 0! | ||||||
|  | #47000000 | ||||||
|  | 1! | ||||||
|  | #48000000 | ||||||
|  | 0! | ||||||
|  | #49000000 | ||||||
|  | 1! | ||||||
|  | #50000000 | ||||||
|  | 0! | ||||||
|  | #51000000 | ||||||
|  | 1! | ||||||
|  | #52000000 | ||||||
|  | 0! | ||||||
|  | #53000000 | ||||||
|  | 1! | ||||||
|  | #54000000 | ||||||
|  | 0! | ||||||
|  | #55000000 | ||||||
|  | 1! | ||||||
|  | #56000000 | ||||||
|  | 0! | ||||||
|  | #57000000 | ||||||
|  | 1! | ||||||
|  | #58000000 | ||||||
|  | 0! | ||||||
|  | #59000000 | ||||||
|  | 1! | ||||||
|  | #60000000 | ||||||
|  | 0! | ||||||
|  | #61000000 | ||||||
|  | 1! | ||||||
|  | #62000000 | ||||||
|  | 0! | ||||||
|  | #63000000 | ||||||
|  | 1! | ||||||
|  | #64000000 | ||||||
|  | 0! | ||||||
|  | #65000000 | ||||||
|  | 1! | ||||||
|  | #66000000 | ||||||
|  | @ -46,7 +46,7 @@ function main() | ||||||
|         */LICENSE.md|*/Notices.txt) |         */LICENSE.md|*/Notices.txt) | ||||||
|             # copyright file |             # copyright file | ||||||
|             ;; |             ;; | ||||||
|         /crates/fayalite/tests/ui/*.stderr) |         /crates/fayalite/tests/ui/*.stderr|/crates/fayalite/tests/sim/expected/*.vcd|/crates/fayalite/tests/sim/expected/*.txt) | ||||||
|             # file that can't contain copyright header |             # file that can't contain copyright header | ||||||
|             ;; |             ;; | ||||||
|         /.forgejo/workflows/*.yml|*/.gitignore|*.toml) |         /.forgejo/workflows/*.yml|*/.gitignore|*.toml) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue