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
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue