Example #1
0
File: table.py Project: e42s/pyeda
 def _iter_restrict(self, zeros, ones):
     """Iterate through indices of all table entries that vary."""
     inputs = list(self.inputs)
     unmapped = dict()
     for i, v in enumerate(self.inputs):
         if v.uniqid in zeros:
             inputs[i] = 0
         elif v.uniqid in ones:
             inputs[i] = 1
         else:
             unmapped[v] = i
     vs = sorted(unmapped.keys())
     for num in range(1 << len(vs)):
         for v, val in boolfunc.num2point(num, vs).items():
             inputs[unmapped[v]] = val
         yield sum((val << i) for i, val in enumerate(inputs))
Example #2
0
def test_num2point():
    assert num2point(0x0, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 0}
    assert num2point(0x1, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 0}
    assert num2point(0x2, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 0}
    assert num2point(0x3, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 0}
    assert num2point(0x4, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 0}
    assert num2point(0x5, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 0}
    assert num2point(0x6, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 0}
    assert num2point(0x7, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 0}
    assert num2point(0x8, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 1}
    assert num2point(0x9, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 1}
    assert num2point(0xA, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 1}
    assert num2point(0xB, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 1}
    assert num2point(0xC, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 1}
    assert num2point(0xD, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 1}
    assert num2point(0xE, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 1}
    assert num2point(0xF, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 1}
Example #3
0
def test_num2point():
    assert_raises(TypeError, num2point, 1.0, [a, b])
    assert_raises(ValueError, num2point, -1, [a, b])
    assert_raises(ValueError, num2point, 4, [a, b])

    assert num2point(0x0, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 0}
    assert num2point(0x1, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 0}
    assert num2point(0x2, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 0}
    assert num2point(0x3, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 0}
    assert num2point(0x4, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 0}
    assert num2point(0x5, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 0}
    assert num2point(0x6, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 0}
    assert num2point(0x7, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 0}
    assert num2point(0x8, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 1}
    assert num2point(0x9, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 1}
    assert num2point(0xA, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 1}
    assert num2point(0xB, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 1}
    assert num2point(0xC, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 1}
    assert num2point(0xD, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 1}
    assert num2point(0xE, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 1}
    assert num2point(0xF, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 1}
Example #4
0
File: table.py Project: e42s/pyeda
 def satisfy_all(self):
     for num in self.pcdata.iter_ones():
         yield boolfunc.num2point(num, self.inputs)
Example #5
0
File: table.py Project: e42s/pyeda
 def satisfy_one(self):
     num = self.pcdata.find_one()
     if num is None:
         return None
     else:
         return boolfunc.num2point(num, self.inputs)
Example #6
0
def test_num2point():
    assert_raises(TypeError, num2point, 1.0, [a, b])
    assert_raises(ValueError, num2point, -1, [a, b])
    assert_raises(ValueError, num2point, 4, [a, b])

    assert num2point(0x0, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 0}
    assert num2point(0x1, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 0}
    assert num2point(0x2, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 0}
    assert num2point(0x3, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 0}
    assert num2point(0x4, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 0}
    assert num2point(0x5, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 0}
    assert num2point(0x6, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 0}
    assert num2point(0x7, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 0}
    assert num2point(0x8, [a, b, c, d]) == {a: 0, b: 0, c: 0, d: 1}
    assert num2point(0x9, [a, b, c, d]) == {a: 1, b: 0, c: 0, d: 1}
    assert num2point(0xA, [a, b, c, d]) == {a: 0, b: 1, c: 0, d: 1}
    assert num2point(0xB, [a, b, c, d]) == {a: 1, b: 1, c: 0, d: 1}
    assert num2point(0xC, [a, b, c, d]) == {a: 0, b: 0, c: 1, d: 1}
    assert num2point(0xD, [a, b, c, d]) == {a: 1, b: 0, c: 1, d: 1}
    assert num2point(0xE, [a, b, c, d]) == {a: 0, b: 1, c: 1, d: 1}
    assert num2point(0xF, [a, b, c, d]) == {a: 1, b: 1, c: 1, d: 1}