예제 #1
0
 def test_longer_wires(self):
     a = pyrtl.Input(3, 'a')
     b = pyrtl.Input(2, 'b')
     out = pyrtl.Output(name='out')
     out <<= a + b
     pyrtl.synthesize()
     self.assertTrue(simulators.circuit_equivalence(lambda i, j: i + j, in_wires=(a, b)))
예제 #2
0
    def test_equivalence_fail(self):
        a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
        out = pyrtl.Output(1, 'out')
        out <<= a & b

        def soft_or(a, b):
            return a | b

        self.assertFalse(simulators.circuit_equivalence(soft_or))
예제 #3
0
 def test_longer_wires(self):
     a = pyrtl.Input(3, 'a')
     b = pyrtl.Input(2, 'b')
     out = pyrtl.Output(name='out')
     out <<= a + b
     pyrtl.synthesize()
     self.assertTrue(
         simulators.circuit_equivalence(lambda i, j: i + j,
                                        in_wires=(a, b)))
예제 #4
0
    def test_equivalence_fail(self):
        a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
        out = pyrtl.Output(1, 'out')
        out <<= a & b

        def soft_or(a, b):
            return a | b

        self.assertFalse(simulators.circuit_equivalence(soft_or))
예제 #5
0
 def test_equivalence_asymetrical(self):
     a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
     out = pyrtl.Output(1, 'out')
     out <<= a & ~b
     self.assertFalse(simulators.circuit_equivalence(lambda i, j: i ^ ~j))
예제 #6
0
 def test_equivalence_pass(self):
     a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
     out = pyrtl.Output(1, 'out')
     out <<= a & b
     self.assertTrue(simulators.circuit_equivalence(lambda i, j: i & j))
예제 #7
0
 def test_equivalence_asymetrical(self):
     a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
     out = pyrtl.Output(1, 'out')
     out <<= a & ~b
     self.assertFalse(simulators.circuit_equivalence(lambda i, j: i ^ ~j))
예제 #8
0
 def test_equivalence_pass(self):
     a, b = pyrtl.Input(1, 'a'), pyrtl.Input(1, 'b')
     out = pyrtl.Output(1, 'out')
     out <<= a & b
     self.assertTrue(simulators.circuit_equivalence(lambda i, j: i & j))