コード例 #1
0
ファイル: test_espresso.py プロジェクト: shenchena/pyeda
def test_issue75():
    """Reference: https://github.com/cjdrake/pyeda/issues/75"""
    b, x = map(exprvar, "bx")

    f_out = ~(b | ~x)
    f_out_dnf = f_out.to_dnf()
    assert f_out.equivalent(f_out_dnf)
    f_out_r, = espresso_exprs(f_out_dnf)
    assert f_out.equivalent(f_out_r)
コード例 #2
0
def test_espresso():
    A = bitvec('a', 16)
    B = bitvec('b', 16)
    S, C = ripple_carry_add(A, B)
    s0, s1, s2, s3 = espresso_exprs(S[0].to_dnf(), S[1].to_dnf(),
                                    S[2].to_dnf(), S[3].to_dnf())

    assert s0.equivalent(S[0])
    assert s1.equivalent(S[1])
    assert s2.equivalent(S[2])
    assert s3.equivalent(S[3])

    X = bitvec('x', 4)
    f1 = truthtable(X, "0000011111------")
    f2 = truthtable(X, "0001111100------")
    f1m, f2m = espresso_tts(f1, f2)
    truthtable2expr(f1).equivalent(f1m)
    truthtable2expr(f2).equivalent(f2m)
コード例 #3
0
ファイル: test_espresso.py プロジェクト: shenchena/pyeda
def test_espresso():
    assert espresso.FTYPE == 1
    assert espresso.DTYPE == 2
    assert espresso.RTYPE == 4

    A = exprvars('a', 16)
    B = exprvars('b', 16)
    S, C = ripple_carry_add(A, B)
    s0, s1, s2, s3 = espresso_exprs(S[0].to_dnf(), S[1].to_dnf(),
                                    S[2].to_dnf(), S[3].to_dnf())
    assert s0.equivalent(S[0])
    assert s1.equivalent(S[1])
    assert s2.equivalent(S[2])
    assert s3.equivalent(S[3])

    X = exprvars('x', 4)
    f1 = truthtable(X, "0000011111------")
    f2 = truthtable(X, "0001111100------")
    f1m, f2m = espresso_tts(f1, f2)
    truthtable2expr(f1).equivalent(f1m)
    truthtable2expr(f2).equivalent(f2m)
コード例 #4
0
 def _minimize(function):
     dnf = function.to_dnf()
     if dnf.is_zero() or dnf.is_one(): return dnf
     return minimization.espresso_exprs(dnf)[0]