module cmp2x4 title 'Compare two 4 bit numbers' cmp2x4 device 'p16v8c'; A0, A1, A2, A3 pin 1, 2, 3, 4; B0, B1, B2, B3 pin 5, 6, 7, 8; LT_low, GT_low pin 14, 15 istype 'com'; LT, EQ, GT pin 16, 17, 18 istype 'com'; declarations A = [ A3, A2, A1, A0 ]; A_low = [ A2, A1, A0 ]; B = [ B3, B2, B1, B0 ]; B_low = [ B2, B1, B0 ]; equations LT_low = A_low < B_low; GT_low = A_low > B_low; LT = (!A3 & B3) # ((A3 == B3) & LT_low); GT = (A3 & !B3) # ((A3 == B3) & GT_low); EQ = !LT & !GT; test_vectors ([ A, B ] -> [ LT, EQ, GT ]) [ 0, 0 ] -> [ 0, 1, 0 ]; [ 0, 1 ] -> [ 1, 0, 0 ]; [ 0, 2 ] -> [ 1, 0, 0 ]; [ 0, 3 ] -> [ 1, 0, 0 ]; [ 0, 4 ] -> [ 1, 0, 0 ]; [ 0, 5 ] -> [ 1, 0, 0 ]; [ 0, 6 ] -> [ 1, 0, 0 ]; [ 0, 7 ] -> [ 1, 0, 0 ]; [ 0, 8 ] -> [ 1, 0, 0 ]; [ 0, 9 ] -> [ 1, 0, 0 ]; [ 0, 10 ] -> [ 1, 0, 0 ]; [ 0, 11 ] -> [ 1, 0, 0 ]; [ 0, 12 ] -> [ 1, 0, 0 ]; [ 0, 13 ] -> [ 1, 0, 0 ]; [ 0, 14 ] -> [ 1, 0, 0 ]; [ 0, 15 ] -> [ 1, 0, 0 ]; [ 1, 0 ] -> [ 0, 0, 1 ]; [ 1, 1 ] -> [ 0, 1, 0 ]; [ 1, 2 ] -> [ 1, 0, 0 ]; [ 1, 3 ] -> [ 1, 0, 0 ]; [ 1, 4 ] -> [ 1, 0, 0 ]; [ 1, 5 ] -> [ 1, 0, 0 ]; [ 1, 6 ] -> [ 1, 0, 0 ]; [ 1, 7 ] -> [ 1, 0, 0 ]; [ 1, 8 ] -> [ 1, 0, 0 ]; [ 1, 9 ] -> [ 1, 0, 0 ]; [ 1, 10 ] -> [ 1, 0, 0 ]; [ 1, 11 ] -> [ 1, 0, 0 ]; [ 1, 12 ] -> [ 1, 0, 0 ]; [ 1, 13 ] -> [ 1, 0, 0 ]; [ 1, 14 ] -> [ 1, 0, 0 ]; [ 1, 15 ] -> [ 1, 0, 0 ]; [ 2, 0 ] -> [ 0, 0, 1 ]; [ 2, 1 ] -> [ 0, 0, 1 ]; [ 2, 2 ] -> [ 0, 1, 0 ]; [ 2, 3 ] -> [ 1, 0, 0 ]; [ 2, 4 ] -> [ 1, 0, 0 ]; [ 2, 5 ] -> [ 1, 0, 0 ]; [ 2, 6 ] -> [ 1, 0, 0 ]; [ 2, 7 ] -> [ 1, 0, 0 ]; [ 2, 8 ] -> [ 1, 0, 0 ]; [ 2, 9 ] -> [ 1, 0, 0 ]; [ 2, 10 ] -> [ 1, 0, 0 ]; [ 2, 11 ] -> [ 1, 0, 0 ]; [ 2, 12 ] -> [ 1, 0, 0 ]; [ 2, 13 ] -> [ 1, 0, 0 ]; [ 2, 14 ] -> [ 1, 0, 0 ]; [ 2, 15 ] -> [ 1, 0, 0 ]; [ 3, 0 ] -> [ 0, 0, 1 ]; [ 3, 1 ] -> [ 0, 0, 1 ]; [ 3, 2 ] -> [ 0, 0, 1 ]; [ 3, 3 ] -> [ 0, 1, 0 ]; [ 3, 4 ] -> [ 1, 0, 0 ]; [ 3, 5 ] -> [ 1, 0, 0 ]; [ 3, 6 ] -> [ 1, 0, 0 ]; [ 3, 7 ] -> [ 1, 0, 0 ]; [ 3, 8 ] -> [ 1, 0, 0 ]; [ 3, 9 ] -> [ 1, 0, 0 ]; [ 3, 10 ] -> [ 1, 0, 0 ]; [ 3, 11 ] -> [ 1, 0, 0 ]; [ 3, 12 ] -> [ 1, 0, 0 ]; [ 3, 13 ] -> [ 1, 0, 0 ]; [ 3, 14 ] -> [ 1, 0, 0 ]; [ 3, 15 ] -> [ 1, 0, 0 ]; [ 4, 0 ] -> [ 0, 0, 1 ]; [ 4, 1 ] -> [ 0, 0, 1 ]; [ 4, 2 ] -> [ 0, 0, 1 ]; [ 4, 3 ] -> [ 0, 0, 1 ]; [ 4, 4 ] -> [ 0, 1, 0 ]; [ 4, 5 ] -> [ 1, 0, 0 ]; [ 4, 6 ] -> [ 1, 0, 0 ]; [ 4, 7 ] -> [ 1, 0, 0 ]; [ 4, 8 ] -> [ 1, 0, 0 ]; [ 4, 9 ] -> [ 1, 0, 0 ]; [ 4, 10 ] -> [ 1, 0, 0 ]; [ 4, 11 ] -> [ 1, 0, 0 ]; [ 4, 12 ] -> [ 1, 0, 0 ]; [ 4, 13 ] -> [ 1, 0, 0 ]; [ 4, 14 ] -> [ 1, 0, 0 ]; [ 4, 15 ] -> [ 1, 0, 0 ]; [ 5, 0 ] -> [ 0, 0, 1 ]; [ 5, 1 ] -> [ 0, 0, 1 ]; [ 5, 2 ] -> [ 0, 0, 1 ]; [ 5, 3 ] -> [ 0, 0, 1 ]; [ 5, 4 ] -> [ 0, 0, 1 ]; [ 5, 5 ] -> [ 0, 1, 0 ]; [ 5, 6 ] -> [ 1, 0, 0 ]; [ 5, 7 ] -> [ 1, 0, 0 ]; [ 5, 8 ] -> [ 1, 0, 0 ]; [ 5, 9 ] -> [ 1, 0, 0 ]; [ 5, 10 ] -> [ 1, 0, 0 ]; [ 5, 11 ] -> [ 1, 0, 0 ]; [ 5, 12 ] -> [ 1, 0, 0 ]; [ 5, 13 ] -> [ 1, 0, 0 ]; [ 5, 14 ] -> [ 1, 0, 0 ]; [ 5, 15 ] -> [ 1, 0, 0 ]; [ 6, 0 ] -> [ 0, 0, 1 ]; [ 6, 1 ] -> [ 0, 0, 1 ]; [ 6, 2 ] -> [ 0, 0, 1 ]; [ 6, 3 ] -> [ 0, 0, 1 ]; [ 6, 4 ] -> [ 0, 0, 1 ]; [ 6, 5 ] -> [ 0, 0, 1 ]; [ 6, 6 ] -> [ 0, 1, 0 ]; [ 6, 7 ] -> [ 1, 0, 0 ]; [ 6, 8 ] -> [ 1, 0, 0 ]; [ 6, 9 ] -> [ 1, 0, 0 ]; [ 6, 10 ] -> [ 1, 0, 0 ]; [ 6, 11 ] -> [ 1, 0, 0 ]; [ 6, 12 ] -> [ 1, 0, 0 ]; [ 6, 13 ] -> [ 1, 0, 0 ]; [ 6, 14 ] -> [ 1, 0, 0 ]; [ 6, 15 ] -> [ 1, 0, 0 ]; [ 7, 0 ] -> [ 0, 0, 1 ]; [ 7, 1 ] -> [ 0, 0, 1 ]; [ 7, 2 ] -> [ 0, 0, 1 ]; [ 7, 3 ] -> [ 0, 0, 1 ]; [ 7, 4 ] -> [ 0, 0, 1 ]; [ 7, 5 ] -> [ 0, 0, 1 ]; [ 7, 6 ] -> [ 0, 0, 1 ]; [ 7, 7 ] -> [ 0, 1, 0 ]; [ 7, 8 ] -> [ 1, 0, 0 ]; [ 7, 9 ] -> [ 1, 0, 0 ]; [ 7, 10 ] -> [ 1, 0, 0 ]; [ 7, 11 ] -> [ 1, 0, 0 ]; [ 7, 12 ] -> [ 1, 0, 0 ]; [ 7, 13 ] -> [ 1, 0, 0 ]; [ 7, 14 ] -> [ 1, 0, 0 ]; [ 7, 15 ] -> [ 1, 0, 0 ]; [ 8, 0 ] -> [ 0, 0, 1 ]; [ 8, 1 ] -> [ 0, 0, 1 ]; [ 8, 2 ] -> [ 0, 0, 1 ]; [ 8, 3 ] -> [ 0, 0, 1 ]; [ 8, 4 ] -> [ 0, 0, 1 ]; [ 8, 5 ] -> [ 0, 0, 1 ]; [ 8, 6 ] -> [ 0, 0, 1 ]; [ 8, 7 ] -> [ 0, 0, 1 ]; [ 8, 8 ] -> [ 0, 1, 0 ]; [ 8, 9 ] -> [ 1, 0, 0 ]; [ 8, 10 ] -> [ 1, 0, 0 ]; [ 8, 11 ] -> [ 1, 0, 0 ]; [ 8, 12 ] -> [ 1, 0, 0 ]; [ 8, 13 ] -> [ 1, 0, 0 ]; [ 8, 14 ] -> [ 1, 0, 0 ]; [ 8, 15 ] -> [ 1, 0, 0 ]; [ 9, 0 ] -> [ 0, 0, 1 ]; [ 9, 1 ] -> [ 0, 0, 1 ]; [ 9, 2 ] -> [ 0, 0, 1 ]; [ 9, 3 ] -> [ 0, 0, 1 ]; [ 9, 4 ] -> [ 0, 0, 1 ]; [ 9, 5 ] -> [ 0, 0, 1 ]; [ 9, 6 ] -> [ 0, 0, 1 ]; [ 9, 7 ] -> [ 0, 0, 1 ]; [ 9, 8 ] -> [ 0, 0, 1 ]; [ 9, 9 ] -> [ 0, 1, 0 ]; [ 9, 10 ] -> [ 1, 0, 0 ]; [ 9, 11 ] -> [ 1, 0, 0 ]; [ 9, 12 ] -> [ 1, 0, 0 ]; [ 9, 13 ] -> [ 1, 0, 0 ]; [ 9, 14 ] -> [ 1, 0, 0 ]; [ 9, 15 ] -> [ 1, 0, 0 ]; [ 10, 0 ] -> [ 0, 0, 1 ]; [ 10, 1 ] -> [ 0, 0, 1 ]; [ 10, 2 ] -> [ 0, 0, 1 ]; [ 10, 3 ] -> [ 0, 0, 1 ]; [ 10, 4 ] -> [ 0, 0, 1 ]; [ 10, 5 ] -> [ 0, 0, 1 ]; [ 10, 6 ] -> [ 0, 0, 1 ]; [ 10, 7 ] -> [ 0, 0, 1 ]; [ 10, 8 ] -> [ 0, 0, 1 ]; [ 10, 9 ] -> [ 0, 0, 1 ]; [ 10, 10 ] -> [ 0, 1, 0 ]; [ 10, 11 ] -> [ 1, 0, 0 ]; [ 10, 12 ] -> [ 1, 0, 0 ]; [ 10, 13 ] -> [ 1, 0, 0 ]; [ 10, 14 ] -> [ 1, 0, 0 ]; [ 10, 15 ] -> [ 1, 0, 0 ]; [ 11, 0 ] -> [ 0, 0, 1 ]; [ 11, 1 ] -> [ 0, 0, 1 ]; [ 11, 2 ] -> [ 0, 0, 1 ]; [ 11, 3 ] -> [ 0, 0, 1 ]; [ 11, 4 ] -> [ 0, 0, 1 ]; [ 11, 5 ] -> [ 0, 0, 1 ]; [ 11, 6 ] -> [ 0, 0, 1 ]; [ 11, 7 ] -> [ 0, 0, 1 ]; [ 11, 8 ] -> [ 0, 0, 1 ]; [ 11, 9 ] -> [ 0, 0, 1 ]; [ 11, 10 ] -> [ 0, 0, 1 ]; [ 11, 11 ] -> [ 0, 1, 0 ]; [ 11, 12 ] -> [ 1, 0, 0 ]; [ 11, 13 ] -> [ 1, 0, 0 ]; [ 11, 14 ] -> [ 1, 0, 0 ]; [ 11, 15 ] -> [ 1, 0, 0 ]; [ 12, 0 ] -> [ 0, 0, 1 ]; [ 12, 1 ] -> [ 0, 0, 1 ]; [ 12, 2 ] -> [ 0, 0, 1 ]; [ 12, 3 ] -> [ 0, 0, 1 ]; [ 12, 4 ] -> [ 0, 0, 1 ]; [ 12, 5 ] -> [ 0, 0, 1 ]; [ 12, 6 ] -> [ 0, 0, 1 ]; [ 12, 7 ] -> [ 0, 0, 1 ]; [ 12, 8 ] -> [ 0, 0, 1 ]; [ 12, 9 ] -> [ 0, 0, 1 ]; [ 12, 10 ] -> [ 0, 0, 1 ]; [ 12, 11 ] -> [ 0, 0, 1 ]; [ 12, 12 ] -> [ 0, 1, 0 ]; [ 12, 13 ] -> [ 1, 0, 0 ]; [ 12, 14 ] -> [ 1, 0, 0 ]; [ 12, 15 ] -> [ 1, 0, 0 ]; [ 13, 0 ] -> [ 0, 0, 1 ]; [ 13, 1 ] -> [ 0, 0, 1 ]; [ 13, 2 ] -> [ 0, 0, 1 ]; [ 13, 3 ] -> [ 0, 0, 1 ]; [ 13, 4 ] -> [ 0, 0, 1 ]; [ 13, 5 ] -> [ 0, 0, 1 ]; [ 13, 6 ] -> [ 0, 0, 1 ]; [ 13, 7 ] -> [ 0, 0, 1 ]; [ 13, 8 ] -> [ 0, 0, 1 ]; [ 13, 9 ] -> [ 0, 0, 1 ]; [ 13, 10 ] -> [ 0, 0, 1 ]; [ 13, 11 ] -> [ 0, 0, 1 ]; [ 13, 12 ] -> [ 0, 0, 1 ]; [ 13, 13 ] -> [ 0, 1, 0 ]; [ 13, 14 ] -> [ 1, 0, 0 ]; [ 13, 15 ] -> [ 1, 0, 0 ]; [ 14, 0 ] -> [ 0, 0, 1 ]; [ 14, 1 ] -> [ 0, 0, 1 ]; [ 14, 2 ] -> [ 0, 0, 1 ]; [ 14, 3 ] -> [ 0, 0, 1 ]; [ 14, 4 ] -> [ 0, 0, 1 ]; [ 14, 5 ] -> [ 0, 0, 1 ]; [ 14, 6 ] -> [ 0, 0, 1 ]; [ 14, 7 ] -> [ 0, 0, 1 ]; [ 14, 8 ] -> [ 0, 0, 1 ]; [ 14, 9 ] -> [ 0, 0, 1 ]; [ 14, 10 ] -> [ 0, 0, 1 ]; [ 14, 11 ] -> [ 0, 0, 1 ]; [ 14, 12 ] -> [ 0, 0, 1 ]; [ 14, 13 ] -> [ 0, 0, 1 ]; [ 14, 14 ] -> [ 0, 1, 0 ]; [ 14, 15 ] -> [ 1, 0, 0 ]; [ 15, 0 ] -> [ 0, 0, 1 ]; [ 15, 1 ] -> [ 0, 0, 1 ]; [ 15, 2 ] -> [ 0, 0, 1 ]; [ 15, 3 ] -> [ 0, 0, 1 ]; [ 15, 4 ] -> [ 0, 0, 1 ]; [ 15, 5 ] -> [ 0, 0, 1 ]; [ 15, 6 ] -> [ 0, 0, 1 ]; [ 15, 7 ] -> [ 0, 0, 1 ]; [ 15, 8 ] -> [ 0, 0, 1 ]; [ 15, 9 ] -> [ 0, 0, 1 ]; [ 15, 10 ] -> [ 0, 0, 1 ]; [ 15, 11 ] -> [ 0, 0, 1 ]; [ 15, 12 ] -> [ 0, 0, 1 ]; [ 15, 13 ] -> [ 0, 0, 1 ]; [ 15, 14 ] -> [ 0, 0, 1 ]; [ 15, 15 ] -> [ 0, 1, 0 ]; end