Example #1
0
    def test_jump(self):
            dlx_instance = dlx(program=os.path.join(ROOT, 'programs/test6.txt'), data_mem=self.data_mem, reg_mem=self.reg_mem, Clk=None)

            def test():
                yield delay(10)
                self.assertEqual(self.reg_mem[5].val, 0)
                yield delay(2)
                self.assertEqual(self.reg_mem[3].val, 8)
                yield delay(2)
                self.assertEqual(self.reg_mem[5].val, 4)
                yield delay(2)
                self.assertEqual(self.reg_mem[2].val, -4)
                yield delay(6)
                self.assertEqual(self.reg_mem[31].val, 7)
                yield delay(12)
                self.assertEqual(self.reg_mem[5].val, 8)
                yield delay(2)
                self.assertEqual(self.reg_mem[2].val, 0)
                yield delay(2)
                self.assertEqual(self.reg_mem[31].val, 24)
                yield delay(6)
                self.assertEqual(self.reg_mem[31].val, 52)
                yield delay(6)
                self.assertEqual(self.reg_mem[31].val, 7)

            check = test()
            sim = Simulation(dlx_instance, check)
            sim.run(60, quiet=True)
Example #2
0
    def test_merge_sort(self):
        ram = load_data_memory(os.path.join(ROOT, 'programs/hash/ram.txt'))
        dlx_instance = dlx(program=os.path.join(ROOT, 'programs/hash/rom.txt'), data_mem=ram, reg_mem=self.zreg_mem, Clk=None)

        def test():
            yield delay(1480*2)
            cared = ram[-80:]
            data = group(cared, 4)
            string = ' '.join(map(m2int, data))
            self.assertEqual(string, "262144 0 -645 -22 7 9 11 13 31 37 64 86 111 282 502 502 502 733 262144 0")
            print 'stack: %s' % string

        check = test()
        sim = Simulation(dlx_instance, check)
        sim.run(1480*2, quiet=True)
Example #3
0
    def test_branch(self):
        dlx_instance = dlx(program=os.path.join(ROOT, 'programs/test3.txt'), data_mem=self.data_mem, reg_mem=self.reg_mem, Clk=None)

        def test():
            yield delay(10)
            self.assertEqual(self.reg_mem[2].val, 2)
            yield delay(2)
            self.assertEqual(self.reg_mem[3].val, 3)
            yield delay(2)
            self.assertEqual(self.reg_mem[4].val, 4)
            yield delay(2)
            self.assertEqual(self.reg_mem[6].val, 6)
            yield delay(2)
            self.assertEqual(self.reg_mem[7].val, 5)
            yield delay(2)
            self.assertEqual(self.reg_mem[5].val, 1)
            yield delay(2)
            self.assertEqual(self.reg_mem[3].val, 7)
            yield delay(2)
            self.assertEqual(self.reg_mem[5].val, 2)
            yield delay(4)
            self.assertEqual(self.reg_mem[7].val, 11)
            yield delay(4)
            self.assertEqual(self.reg_mem[5].val, 4)
            yield delay(6)
            self.assertEqual(self.reg_mem[5].val, 0)
            yield delay(4)
            self.assertEqual(self.reg_mem[7].val, 13)
            yield delay(10)
            self.assertEqual(self.reg_mem[8].val, 11)
            yield delay(14)
            self.assertEqual(self.reg_mem[8].val, 12)
            yield delay(22)
            self.assertEqual(self.reg_mem[8].val, 13)
            yield delay(14)
            self.assertEqual(self.reg_mem[8].val, 14)

        check = test()
        sim = Simulation(dlx_instance, check)
        sim.run(120, quiet=True)
Example #4
0
    def test_mem(self):
        dlx_instance = dlx(program=os.path.join(ROOT, 'programs/test1.txt'), data_mem=self.data_mem, reg_mem=self.reg_mem, Clk=None)

        def test():
            #yield delay(10)
            #self.assertEqual(self.reg_mem[5].val, 0)
            yield delay(14)
            self.assertEqual(self.reg_mem[2].val, 255)
            yield delay(2)
            self.assertEqual(self.reg_mem[3].val, 254)
            yield delay(6)
            self.assertEqual(self.reg_mem[4].val, -1)
            yield delay(4)
            self.assertEqual(self.reg_mem[6].val, 254)
            yield delay(4)
            self.assertEqual(self.reg_mem[7].val, 254)
            yield delay(6)
            self.assertEqual(self.reg_mem[8].val, 254)

        check = test()
        sim = Simulation(dlx_instance, check)
        sim.run(30, quiet=True)
Example #5
0
    def test_arithmetic(self):
        dlx_instance = dlx(program=os.path.join(ROOT, 'programs/test8.txt'), data_mem=self.data_mem, reg_mem=self.zreg_mem, Clk=None)

        def test():
            yield delay(10)
            self.assertEqual(self.zreg_mem[2].val, 5)
            yield delay(2)
            self.assertEqual(self.zreg_mem[3].val, 6)
            yield delay(2)
            self.assertEqual(self.zreg_mem[4].val, 1)
            yield delay(2)
            self.assertEqual(self.zreg_mem[4].val, 0)
            yield delay(2)
            self.assertEqual(self.zreg_mem[3].val, 6)
            yield delay(2)
            self.assertEqual(self.zreg_mem[2].val, 1)
            yield delay(2)
            self.assertEqual(self.zreg_mem[3].val, 0)

        check = test()
        sim = Simulation(dlx_instance, check)
        sim.run(30, quiet=True)
Example #6
0
    def test_shift(self):
        dlx_instance = dlx(program=os.path.join(ROOT, 'programs/test7.txt'), data_mem=self.data_mem, reg_mem=self.reg_mem, Clk=None)

        def test():
            yield delay(10)
            self.assertEqual(self.reg_mem[5].val, 0)
            yield delay(2)
            self.assertEqual(self.reg_mem[3].val, 8)
            yield delay(4)
            self.assertEqual(self.reg_mem[2].val, -16776978)
            yield delay(2)
            self.assertEqual(self.reg_mem[7], -536863296)
            yield delay(2)
            self.assertEqual(self.reg_mem[7], 60928)
            yield delay(2)
            self.assertEqual(self.reg_mem[7], 133693447)
            yield delay(2)
            self.assertEqual(self.reg_mem[7], -524281)
            yield delay(2)
            self.assertEqual(self.reg_mem[7], -65536)

        check = test()
        sim = Simulation(dlx_instance, check)
        sim.run(30, quiet=True)