from utils.variable import Variable c = Circuit(inputs=['x0', 'x1', 'y'], outputs=['a4', 'a3', 'a2', 'a1', 'a0'], devices=[ Xor([Variable('x1'), 'y'], 'a0'), Wire('0', 'a1'), Not('x0', 'not_x0'), And(['not_x0', 'x1', 'y'], 'half_a2_0'), Not('x1', 'not_x1'), Not('y', 'not_y'), And(['x0', 'not_x1', 'not_y'], 'half_a2_1'), Or(['half_a2_0', 'half_a2_1'], 'a2'), Xor(['x1', 'y'], 'xor_x1_y'), And(['x0', 'xor_x1_y'], 'a3'), And(['x0', 'x1', 'y'], 'a4') ]) print(c.build_table()) print(c == c) v = Variable('v') u = Variable('u') print(v ^ u) c = Circuit(inputs=['x','y'], outputs=['z'], devices=[ Decoder(['x','y'], outputs=['a0', 'a1', 'a2', 'a3']), DFF('a0', 'A'), Not('A', 'K'), Nor(['a2', 'a3'], 'J'), JKFF(['J', 'K'], outputs=['B', 'nB']), Xor(['nB', 'A', 'y'], 'z') ]) print(c.build_table())