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)}
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
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]'}
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]'}
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]'}
def vyest_monitor(name): return aiger.delay(inputs=[name], initials=[True], latches=[aiger.common._fresh()], outputs=[aiger.common._fresh()])