Ejemplo n.º 1
0
def test_latch2init():
    circ = aigbv.rebundle_aig(
        aiger.delay(['x[0]', 'y[0]'], initials=[False, True]))
    assert circ.latch2init == {'x': (False, ), 'y': (True, )}

    circ = aigbv.rebundle_aig(
        aiger.delay(['x[0]', 'x[1]'], initials=[False, True]))
    assert circ.latch2init == {'x': (False, True)}
Ejemplo n.º 2
0
def sys3():
    mdp = sys1()
    mdp |= C.circ2mdp(BV.tee(1, {'c': ['c', 'c_next']}))
    coin = (~C.coin((1, 2), name='c')).with_output('c')
    mdp <<= coin

    delay = BV.aig2aigbv(aiger.delay(['c'], [True]))
    delay = C.circ2mdp(delay)

    return mdp >> delay
Ejemplo n.º 3
0
def test_rebundle():
    circ = aigbv.aig2aigbv(aiger.and_gate(['x', 'y'], output='z'))
    circ2 = aigbv.rebundle_aig(circ.aig)
    assert circ.imap == circ2.imap
    assert circ.omap == circ2.omap
    assert circ.lmap == circ2.lmap
    assert circ2.aig.inputs == {'x[0]', 'y[0]'}
    assert circ2.aig.outputs == {'z[0]'}

    circ = aigbv.rebundle_aig(
        aiger.delay(['x[0]', 'y[0]'], initials=[False, True]))
    assert circ.inputs == circ.latches == circ.outputs == {'x', 'y'}
    assert circ.aig.inputs == circ.aig.outputs == circ.aig.latches \
        == {'x[0]', 'y[0]'}
Ejemplo n.º 4
0
def test_AIGBV_smoke():
    circ = aigbv.aig2aigbv(aiger.and_gate(['x', 'y'], output='z'))

    assert circ.inputs == {'x', 'y'}
    assert circ.outputs == {'z'}
    assert circ.latches == set()

    assert circ.aig.inputs == {'x[0]', 'y[0]'}
    assert circ.aig.outputs == {'z[0]'}

    assert circ.imap == bdl.BundleMap({'x': 1, 'y': 1})

    circ = aigbv.aig2aigbv(aiger.delay(['x', 'y'], initials=[False, True]))
    assert circ.aig.inputs == {'x[0]', 'y[0]'}
    assert circ.aig.outputs == {'x[0]', 'y[0]'}
    assert circ.aig.latches == {'x[0]', 'y[0]'}
Ejemplo n.º 5
0
def test_relabel():
    circ = aigbv.aig2aigbv(aiger.and_gate(['x', 'y'], output='out'))
    circ2 = circ['i', {'x': 'z'}]
    assert circ2.inputs == {'y', 'z'}
    assert circ2.aig.inputs == {'y[0]', 'z[0]'}

    circ2 = circ['o', {'out': 'tmp'}]
    assert circ2.outputs == {'tmp'}
    assert circ2.aig.outputs == {'tmp[0]'}

    with pytest.raises(AssertionError):
        circ['i', {
            'x': 'y',
        }]

    circ = aigbv.rebundle_aig(
        aiger.delay(['x[0]', 'y[0]'], initials=[False, True]))
    circ2 = circ['l', {'x': 'z'}]
    assert circ2.latches == {'z', 'y'}
    assert circ2.aig.latches == {'z[0]', 'y[0]'}
Ejemplo n.º 6
0
def vyest_monitor(name):
    return aiger.delay(inputs=[name],
                       initials=[True],
                       latches=[aiger.common._fresh()],
                       outputs=[aiger.common._fresh()])