forked from libre-chip/fayalite
		
	tests/sim: add test for memory rw port
This commit is contained in:
		
							parent
							
								
									903ca1bf30
								
							
						
					
					
						commit
						c756aeec70
					
				
					 3 changed files with 2330 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -694,4 +694,277 @@ fn test_memories() {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[hdl_module(outline_generated)]
 | 
			
		||||
pub fn memories2() {
 | 
			
		||||
    #[hdl]
 | 
			
		||||
    let rw: fayalite::memory::ReadWriteStruct<UInt<2>, ConstUsize<3>> = m.input();
 | 
			
		||||
    #[hdl]
 | 
			
		||||
    let mut mem = memory_with_init([HdlSome(true); 5]);
 | 
			
		||||
    mem.read_latency(1);
 | 
			
		||||
    mem.write_latency(NonZeroUsize::new(1).unwrap());
 | 
			
		||||
    mem.read_under_write(ReadUnderWrite::New);
 | 
			
		||||
    let rw_port = mem.new_rw_port();
 | 
			
		||||
    connect_any(rw_port.addr, rw.addr);
 | 
			
		||||
    connect(rw_port.en, rw.en);
 | 
			
		||||
    connect(rw_port.clk, rw.clk);
 | 
			
		||||
    connect_any(rw.rdata, rw_port.rdata.cast_to_bits());
 | 
			
		||||
    connect(rw_port.wmode, rw.wmode);
 | 
			
		||||
    connect(rw_port.wdata, HdlNone());
 | 
			
		||||
    #[hdl]
 | 
			
		||||
    if rw.wdata[0] {
 | 
			
		||||
        connect(rw_port.wdata, HdlSome(rw.wdata[1]));
 | 
			
		||||
    }
 | 
			
		||||
    connect(rw_port.wmask, rw.wmask);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[hdl]
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_memories2() {
 | 
			
		||||
    let _n = SourceLocation::normalize_files_for_tests();
 | 
			
		||||
    let mut sim = Simulation::new(memories2());
 | 
			
		||||
    let mut writer = RcWriter::default();
 | 
			
		||||
    sim.add_trace_writer(VcdWriterDecls::new(writer.clone()));
 | 
			
		||||
    sim.write_clock(sim.io().rw.clk, false);
 | 
			
		||||
    #[derive(Debug, PartialEq, Eq)]
 | 
			
		||||
    struct IO {
 | 
			
		||||
        addr: u8,
 | 
			
		||||
        en: bool,
 | 
			
		||||
        rdata: u8,
 | 
			
		||||
        wmode: bool,
 | 
			
		||||
        wdata: u8,
 | 
			
		||||
        wmask: bool,
 | 
			
		||||
    }
 | 
			
		||||
    let io_cycles = [
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: false,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0x3,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: false,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 3,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 1,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 1,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 2,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 2,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 3,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 3,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 4,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 2,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 5,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 1,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 6,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 1,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 7,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: true,
 | 
			
		||||
            wdata: 1,
 | 
			
		||||
            wmask: true,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 7,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 6,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 5,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 4,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 3,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 3,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 2,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 1,
 | 
			
		||||
            en: true,
 | 
			
		||||
            rdata: 1,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
        IO {
 | 
			
		||||
            addr: 0,
 | 
			
		||||
            en: false,
 | 
			
		||||
            rdata: 0,
 | 
			
		||||
            wmode: false,
 | 
			
		||||
            wdata: 0,
 | 
			
		||||
            wmask: false,
 | 
			
		||||
        },
 | 
			
		||||
    ];
 | 
			
		||||
    for (
 | 
			
		||||
        cycle,
 | 
			
		||||
        expected @ IO {
 | 
			
		||||
            addr,
 | 
			
		||||
            en,
 | 
			
		||||
            rdata: _,
 | 
			
		||||
            wmode,
 | 
			
		||||
            wdata,
 | 
			
		||||
            wmask,
 | 
			
		||||
        },
 | 
			
		||||
    ) in io_cycles.into_iter().enumerate()
 | 
			
		||||
    {
 | 
			
		||||
        sim.write_bool_or_int(sim.io().rw.addr, addr.cast_to_static());
 | 
			
		||||
        sim.write_bool(sim.io().rw.en, en);
 | 
			
		||||
        sim.write_bool(sim.io().rw.wmode, wmode);
 | 
			
		||||
        sim.write_bool_or_int(sim.io().rw.wdata, wdata.cast_to_static());
 | 
			
		||||
        sim.write_bool(sim.io().rw.wmask, wmask);
 | 
			
		||||
        sim.advance_time(SimDuration::from_nanos(250));
 | 
			
		||||
        sim.write_clock(sim.io().rw.clk, true);
 | 
			
		||||
        sim.advance_time(SimDuration::from_nanos(250));
 | 
			
		||||
        let io = IO {
 | 
			
		||||
            addr,
 | 
			
		||||
            en,
 | 
			
		||||
            rdata: sim
 | 
			
		||||
                .read_bool_or_int(sim.io().rw.rdata)
 | 
			
		||||
                .to_bigint()
 | 
			
		||||
                .try_into()
 | 
			
		||||
                .expect("known to be in range"),
 | 
			
		||||
            wmode,
 | 
			
		||||
            wdata,
 | 
			
		||||
            wmask,
 | 
			
		||||
        };
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            expected,
 | 
			
		||||
            io,
 | 
			
		||||
            "cycle: {cycle}\nvcd:\n{}",
 | 
			
		||||
            String::from_utf8(writer.take()).unwrap(),
 | 
			
		||||
        );
 | 
			
		||||
        sim.advance_time(SimDuration::from_nanos(250));
 | 
			
		||||
        sim.write_clock(sim.io().rw.clk, false);
 | 
			
		||||
        sim.advance_time(SimDuration::from_nanos(250));
 | 
			
		||||
    }
 | 
			
		||||
    sim.flush_traces().unwrap();
 | 
			
		||||
    let vcd = String::from_utf8(writer.take()).unwrap();
 | 
			
		||||
    println!("####### VCD:\n{vcd}\n#######");
 | 
			
		||||
    if vcd != include_str!("sim/expected/memories2.vcd") {
 | 
			
		||||
        panic!();
 | 
			
		||||
    }
 | 
			
		||||
    let sim_debug = format!("{sim:#?}");
 | 
			
		||||
    println!("#######\n{sim_debug}\n#######");
 | 
			
		||||
    if sim_debug != include_str!("sim/expected/memories2.txt") {
 | 
			
		||||
        panic!();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO: add more tests for memories
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1694
									
								
								crates/fayalite/tests/sim/expected/memories2.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1694
									
								
								crates/fayalite/tests/sim/expected/memories2.txt
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										363
									
								
								crates/fayalite/tests/sim/expected/memories2.vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										363
									
								
								crates/fayalite/tests/sim/expected/memories2.vcd
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,363 @@
 | 
			
		|||
$timescale 1 ps $end
 | 
			
		||||
$scope module memories2 $end
 | 
			
		||||
$scope struct rw $end
 | 
			
		||||
$var wire 3 ! addr $end
 | 
			
		||||
$var wire 1 " en $end
 | 
			
		||||
$var wire 1 # clk $end
 | 
			
		||||
$var wire 2 $ rdata $end
 | 
			
		||||
$var wire 1 % wmode $end
 | 
			
		||||
$var wire 2 & wdata $end
 | 
			
		||||
$var wire 1 ' wmask $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$scope struct contents $end
 | 
			
		||||
$scope struct [0] $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$var string 1 1 \$tag $end
 | 
			
		||||
$var reg 1 6 HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct [1] $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$var string 1 2 \$tag $end
 | 
			
		||||
$var reg 1 7 HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct [2] $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$var string 1 3 \$tag $end
 | 
			
		||||
$var reg 1 8 HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct [3] $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$var string 1 4 \$tag $end
 | 
			
		||||
$var reg 1 9 HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct [4] $end
 | 
			
		||||
$scope struct mem $end
 | 
			
		||||
$var string 1 5 \$tag $end
 | 
			
		||||
$var reg 1 : HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$scope struct rw0 $end
 | 
			
		||||
$var wire 3 ( addr $end
 | 
			
		||||
$var wire 1 ) en $end
 | 
			
		||||
$var wire 1 * clk $end
 | 
			
		||||
$scope struct rdata $end
 | 
			
		||||
$var string 1 + \$tag $end
 | 
			
		||||
$var wire 1 , HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$var wire 1 - wmode $end
 | 
			
		||||
$scope struct wdata $end
 | 
			
		||||
$var string 1 . \$tag $end
 | 
			
		||||
$var wire 1 / HdlSome $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$var wire 1 0 wmask $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$upscope $end
 | 
			
		||||
$enddefinitions $end
 | 
			
		||||
$dumpvars
 | 
			
		||||
sHdlSome\x20(1) 1
 | 
			
		||||
16
 | 
			
		||||
sHdlSome\x20(1) 2
 | 
			
		||||
17
 | 
			
		||||
sHdlSome\x20(1) 3
 | 
			
		||||
18
 | 
			
		||||
sHdlSome\x20(1) 4
 | 
			
		||||
19
 | 
			
		||||
sHdlSome\x20(1) 5
 | 
			
		||||
1:
 | 
			
		||||
b0 !
 | 
			
		||||
0"
 | 
			
		||||
0#
 | 
			
		||||
b0 $
 | 
			
		||||
0%
 | 
			
		||||
b0 &
 | 
			
		||||
0'
 | 
			
		||||
b0 (
 | 
			
		||||
0)
 | 
			
		||||
0*
 | 
			
		||||
sHdlNone\x20(0) +
 | 
			
		||||
0,
 | 
			
		||||
0-
 | 
			
		||||
sHdlNone\x20(0) .
 | 
			
		||||
0/
 | 
			
		||||
00
 | 
			
		||||
$end
 | 
			
		||||
#250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#500000
 | 
			
		||||
#750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#1000000
 | 
			
		||||
1"
 | 
			
		||||
1)
 | 
			
		||||
#1250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b11 $
 | 
			
		||||
sHdlSome\x20(1) +
 | 
			
		||||
1,
 | 
			
		||||
#1500000
 | 
			
		||||
#1750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#2000000
 | 
			
		||||
0"
 | 
			
		||||
0)
 | 
			
		||||
#2250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b0 $
 | 
			
		||||
sHdlNone\x20(0) +
 | 
			
		||||
0,
 | 
			
		||||
#2500000
 | 
			
		||||
#2750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#3000000
 | 
			
		||||
1"
 | 
			
		||||
1%
 | 
			
		||||
1'
 | 
			
		||||
1)
 | 
			
		||||
1-
 | 
			
		||||
10
 | 
			
		||||
#3250000
 | 
			
		||||
sHdlNone\x20(0) 1
 | 
			
		||||
06
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#3500000
 | 
			
		||||
#3750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#4000000
 | 
			
		||||
0%
 | 
			
		||||
0'
 | 
			
		||||
0-
 | 
			
		||||
00
 | 
			
		||||
#4250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#4500000
 | 
			
		||||
#4750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#5000000
 | 
			
		||||
1%
 | 
			
		||||
b11 &
 | 
			
		||||
1-
 | 
			
		||||
sHdlSome\x20(1) .
 | 
			
		||||
1/
 | 
			
		||||
#5250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#5500000
 | 
			
		||||
#5750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#6000000
 | 
			
		||||
b1 !
 | 
			
		||||
b1 &
 | 
			
		||||
1'
 | 
			
		||||
b1 (
 | 
			
		||||
0/
 | 
			
		||||
10
 | 
			
		||||
#6250000
 | 
			
		||||
sHdlSome\x20(1) 2
 | 
			
		||||
07
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#6500000
 | 
			
		||||
#6750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#7000000
 | 
			
		||||
b10 !
 | 
			
		||||
b10 &
 | 
			
		||||
b10 (
 | 
			
		||||
sHdlNone\x20(0) .
 | 
			
		||||
#7250000
 | 
			
		||||
sHdlNone\x20(0) 3
 | 
			
		||||
08
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#7500000
 | 
			
		||||
#7750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#8000000
 | 
			
		||||
b11 !
 | 
			
		||||
b11 &
 | 
			
		||||
b11 (
 | 
			
		||||
sHdlSome\x20(1) .
 | 
			
		||||
1/
 | 
			
		||||
#8250000
 | 
			
		||||
sHdlSome\x20(1) 4
 | 
			
		||||
19
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#8500000
 | 
			
		||||
#8750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#9000000
 | 
			
		||||
b100 !
 | 
			
		||||
b10 &
 | 
			
		||||
b100 (
 | 
			
		||||
sHdlNone\x20(0) .
 | 
			
		||||
0/
 | 
			
		||||
#9250000
 | 
			
		||||
sHdlNone\x20(0) 5
 | 
			
		||||
0:
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#9500000
 | 
			
		||||
#9750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#10000000
 | 
			
		||||
b101 !
 | 
			
		||||
b1 &
 | 
			
		||||
b101 (
 | 
			
		||||
sHdlSome\x20(1) .
 | 
			
		||||
#10250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#10500000
 | 
			
		||||
#10750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#11000000
 | 
			
		||||
b110 !
 | 
			
		||||
b110 (
 | 
			
		||||
#11250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#11500000
 | 
			
		||||
#11750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#12000000
 | 
			
		||||
b111 !
 | 
			
		||||
b111 (
 | 
			
		||||
#12250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#12500000
 | 
			
		||||
#12750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#13000000
 | 
			
		||||
0%
 | 
			
		||||
b0 &
 | 
			
		||||
0'
 | 
			
		||||
0-
 | 
			
		||||
sHdlNone\x20(0) .
 | 
			
		||||
00
 | 
			
		||||
#13250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#13500000
 | 
			
		||||
#13750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#14000000
 | 
			
		||||
b110 !
 | 
			
		||||
b110 (
 | 
			
		||||
#14250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#14500000
 | 
			
		||||
#14750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#15000000
 | 
			
		||||
b101 !
 | 
			
		||||
b101 (
 | 
			
		||||
#15250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#15500000
 | 
			
		||||
#15750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#16000000
 | 
			
		||||
b100 !
 | 
			
		||||
b100 (
 | 
			
		||||
#16250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#16500000
 | 
			
		||||
#16750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#17000000
 | 
			
		||||
b11 !
 | 
			
		||||
b11 (
 | 
			
		||||
#17250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b11 $
 | 
			
		||||
sHdlSome\x20(1) +
 | 
			
		||||
1,
 | 
			
		||||
#17500000
 | 
			
		||||
#17750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#18000000
 | 
			
		||||
b10 !
 | 
			
		||||
b10 (
 | 
			
		||||
#18250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b0 $
 | 
			
		||||
sHdlNone\x20(0) +
 | 
			
		||||
0,
 | 
			
		||||
#18500000
 | 
			
		||||
#18750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#19000000
 | 
			
		||||
b0 !
 | 
			
		||||
b0 (
 | 
			
		||||
#19250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
#19500000
 | 
			
		||||
#19750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#20000000
 | 
			
		||||
b1 !
 | 
			
		||||
b1 (
 | 
			
		||||
#20250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b1 $
 | 
			
		||||
sHdlSome\x20(1) +
 | 
			
		||||
#20500000
 | 
			
		||||
#20750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#21000000
 | 
			
		||||
b0 !
 | 
			
		||||
0"
 | 
			
		||||
b0 (
 | 
			
		||||
0)
 | 
			
		||||
#21250000
 | 
			
		||||
1#
 | 
			
		||||
1*
 | 
			
		||||
b0 $
 | 
			
		||||
sHdlNone\x20(0) +
 | 
			
		||||
#21500000
 | 
			
		||||
#21750000
 | 
			
		||||
0#
 | 
			
		||||
0*
 | 
			
		||||
#22000000
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue