コード例 #1
0
    def _inner_setup(self):
        # Verify that all necessary files are present
        files = gather_files(self.tb)
        for i in files:
            if not os.path.exists(i):
                raise FileNotFoundError(
                    "Please download and save the vendor "
                    "SDRAM model in %s (not redistributable)" % i)

        runner = icarus.Runner(extra_files=files)
        #vcd = "test_%s.vcd" % self.__class__.__name__
        vcd = None
        self.sim = Simulator(self.tb, TopLevel(None), sim_runner=runner)
コード例 #2
0
    def _run(self, dummy_data, dummy_idle, max_burst_length, host_burst_length):
        self.tb = TestBench("mt48lc16m16a2", dummy_data, dummy_idle, max_burst_length, host_burst_length)
        # Verify that all necessary files are present
        files = gather_files(self.tb)
        for i in files:
            if not os.path.exists(i):
                raise FileNotFoundError("Please download and save the vendor "
                                        "SDRAM model in %s (not redistributable)"
                                        % i)

        runner = icarus.Runner(extra_files=files)
        vcd = "test_%s.vcd" % self.__class__.__name__
        self.sim = Simulator(self.tb, TopLevel(vcd), sim_runner=runner) 
        with self.sim:
            self.sim.run(10000)
コード例 #3
0
                # stop bit
                selfp.pads.rx = 1
            elif (i == 10):
                selfp.pads.rx = 1
                break
            else:
                selfp.pads.rx = 1 if (rx_value & 1) else 0
                rx_value >>= 1
            yield from self.wait_for(uart_period)

        rx_value = ord(rx_string)
        received_value = selfp.slave._r_rxtx.w
        if (received_value == rx_value):
            print("RX SUCCESS: ")
        else:
            print("RX FAILURE: ")

        print("received " + chr(received_value))

        while True:
            yield


if __name__ == "__main__":
    from migen.sim.generic import Simulator, TopLevel
    from migen.sim import icarus
    with Simulator(UARTTB(), TopLevel("top.vcd",
                                      clk_period=int(1 / 0.08333333)),
                   icarus.Runner(keep_files=False)) as s:
        s.run(20000)
コード例 #4
0
ファイル: cfilt.py プロジェクト: zhangjinxing/ov_ftdi
        self.byte_list = [(1,0x40), (0,0xCA), (1,0x10), (0, 0xFE), (1, 0x41)]

    def do_simulation(self, s):
        if s.cycle_counter > 5 and s.cycle_counter %2 and self.byte_list:
            b = self.byte_list[0]
            print("WR %s" % repr(b))
            self.byte_list = self.byte_list[1:]

            s.wr(self.tr.sink.stb, 1) 
            s.wr(self.tr.sink.payload.d, b[1])
            s.wr(self.tr.sink.payload.rxcmd, b[0])
        else:
            s.wr(self.tr.sink.stb,0)
    

        if s.rd(self.tr.source.stb):
            print("%02x %d" % (s.rd(self.tr.source.payload.d), s.rd(self.tr.source.payload.rxcmd)))


        
if __name__ == "__main__":
    from migen.sim.generic import Simulator, TopLevel

    tl = TopLevel("sdram.vcd")

    test = TestFilt(tl.clock_domains[0])
    sim = Simulator(test, tl)
    sim.run(500)

コード例 #5
0
ファイル: ttl_serdes_generic.py プロジェクト: weiT1993/artiq
        selfp.dut.rtlink.o.stb = 1  # falling edge at fine_ts = 0
        yield
        selfp.dut.rtlink.o.stb = 0
        yield
        self.check_output(selfp, data=0)

        yield
        self.check_output(selfp, data=0)

        selfp.dut.rtlink.o.data = 1
        selfp.dut.rtlink.o.fine_ts = 7
        selfp.dut.rtlink.o.stb = 1  # rising edge at fine_ts = 7
        yield
        selfp.dut.rtlink.o.stb = 0
        yield
        self.check_output(selfp, data=0b10000000)


if __name__ == "__main__":
    import sys
    from migen.sim.generic import Simulator, TopLevel

    if len(sys.argv) != 2:
        print("Incorrect command line")
        sys.exit(1)

    cls = {"output": _OutputTB, "inout": _InOutTB}[sys.argv[1]]

    with Simulator(cls(), TopLevel("top.vcd", clk_period=int(1 / 0.125))) as s:
        s.run()
コード例 #6
0
ファイル: ulpi.py プロジェクト: zozo123/ov_ftdi
				t = self.tr.pop(0)
				s.wr(self.ulpi_reg.raddr, t[1])
				s.wr(self.ulpi_reg.rreq, 1)
			
			if len(self.tw) > 0 and ~s.rd(self.ulpi_reg.wack) & ~s.rd(self.ulpi_reg.wreq) & s.cycle_counter >= self.tw[0][0]:
				t = self.tw.pop(0)
				s.wr(self.ulpi_reg.waddr, t[1])
				s.wr(self.ulpi_reg.wreq, 1)
				s.wr(self.ulpi_reg.wdata, t[2])

		if s.rd(self.ulpi_reg.rack) & s.rd(self.ulpi_reg.rreq):
			print("%06d TestULPI REGR [%02x] = %02x" % (s.cycle_counter, s.rd(self.ulpi_reg.raddr), s.rd(self.ulpi_reg.rdata)))
			s.wr(self.ulpi_reg.rreq, 0)

		if s.rd(self.ulpi_reg.wack) & s.rd(self.ulpi_reg.wreq):
			print("%06d TestULPI REGW [%02x] = %02x" % (s.cycle_counter, s.rd(self.ulpi_reg.waddr), s.rd(self.ulpi_reg.wdata)))
			s.wr(self.ulpi_reg.wreq, 0)

		if s.rd(self.ulpi.data_out_source.stb):
			print("%06d TestULPI [%02x] RXCMD=%d" % (s.cycle_counter, s.rd(self.ulpi.data_out_source.payload.d), s.rd(self.ulpi.data_out_source.payload.rxcmd)))

	do_simulation.initialize = True

if __name__ == "__main__":
	from migen.sim.generic import Simulator, TopLevel
	tl = TopLevel("ulpi.vcd")
	test = TestULPI(tl.clock_domains[0], True)
	sim = Simulator(test, tl)
	sim.run(5000)
	#print(verilog.convert(test, set(ulpi_data.flatten()) | set(ulpi_reg.flatten()) ))
コード例 #7
0
ファイル: test_producer.py プロジェクト: zhangjinxing/ov_ftdi
 def setUp(self):
     self.tb = TestBench()
     vcd = None
     #vcd = "test_producer.vcd"
     self.sim = Simulator(self.tb, TopLevel(vcd, vcd_level=3))
コード例 #8
0
 def setUp(self):
     self.tb = TestBench()
     vcd = None
     vcd = "test_cmdproc.vcd"
     self.sim = Simulator(self.tb, TopLevel(vcd, vcd_level=3))
コード例 #9
0
def main():
    dut = Counter()
    # Instantiating the generic top-level ourselves lets us
    # specify a VCD output file.
    sim = Simulator(dut.get_fragment(), Runner(), TopLevel("my.vcd"))
    sim.run(20)
コード例 #10
0
ファイル: whacker.py プロジェクト: ymz000/ov_ftdi
            for i in packet(10, 0x20, 4):
                yield i

            for i in packet(10, 0x30, 2):
                yield i

        class SimSource(SimActor):
            def __init__(self):
                self.source = Endpoint(ULPI_DATA_D)
                SimActor.__init__(self, gen())

        self.submodules.w = Whacker(1024)

        self.submodules.src = SimSource()
        self.comb += self.src.source.connect(self.w.sink)
        self.comb += self.src.busy.eq(0)

        self.submodules.dmp = Dumper(D_LAST)
        self.comb += self.w.source.connect(self.dmp.result)
        self.comb += self.dmp.busy.eq(0)


if __name__ == '__main__':
    from migen.sim.generic import Simulator, TopLevel
    from migen.sim.icarus import Runner
    tl = TopLevel("testwhacker.vcd")
    tl.clock_domains[0].name_override = 'sys_clk'
    test = TestWhacker()
    sim = Simulator(test, tl, Runner(keep_files=True))
    sim.run(2000)
コード例 #11
0
ファイル: consumer.py プロジェクト: zozo123/ov_ftdi
        def gen():
            yield  Token('source', {"start": 0, "count" : 4})
            yield None
            yield  Token('source', {"start": 555, "count" : 77})
            

        class SimSource(SimActor):
            def __init__(self):
                self.source = Source(dmatpl(1024))
                SimActor.__init__(self, gen())

        self.submodules.src = SimSource()
        self.submodules.c = Consumer(self.port, 1024)
        self.comb += self.c.sink.connect(self.src.source)
        self.comb += self.src.busy.eq(0)

        self.submodules.dmp = Dumper(D_LAST)
        self.comb += self.c.source.connect(self.dmp.result)
        self.comb += self.dmp.busy.eq(0)



if __name__ == '__main__':
    from migen.sim.generic import Simulator, TopLevel
    tl = TopLevel("testcons.vcd")
    test = TestConsumer()
    sim = Simulator(test, tl)
    sim.run(200)
    

コード例 #12
0
ファイル: echo.py プロジェクト: jix/ezusbfifo
            NET "{clk_ezusbfifo}" TNM_NET = "GRP_clk_ezusbfifo";

            TIMESPEC "TS_cdc_fwd" =
                FROM "GRP_clk_sys" TO "GRP_clk_ezusbfifo"
                [delay] ns DATAPATHONLY;
            TIMESPEC "TS_cdc_bwd" =
                FROM "GRP_clk_ezusbfifo" TO "GRP_clk_sys"
                [delay] ns DATAPATHONLY;

            OFFSET = IN 15 ns VALID 30 ns BEFORE "{clk_if}";
            OFFSET = OUT 15 ns AFTER "{clk_if}";
            """.replace('[delay]',
                        str(0.5 * 33.33 * fraction[1] / fraction[0])),
            clk_if=clk_if,
            clk_sys=clk_sys,
            clk_ezusbfifo=clk_ezusbfifo,
        )

        plat.build_cmdline(echo)
    elif command == 'sim':
        from migen.sim.generic import Simulator, TopLevel

        echo = Echo(SimUSBActor(loop=True))

        sim = Simulator(echo, TopLevel("echo.vcd"))

        with sim:
            sim.run()
    else:
        print('usage: python %s build|sim [options]' % sys.argv[0])