module SetOps title 'Set Operation Examples' " Input and output pins N3..N0, M3..M0, SEL pin; Y1..Y4, Z0..Z3, EQ, GE, GTR, LTH, UNLUCKY pin istype 'com'; " Definitions N = [N3,N2,N1,N0]; M = [M3,M2,M1,M0]; YOUT = [Y1..Y4]; ZOUT = [Z3..Z0]; COMP = [EQ,GE]; GT = [ 0, 1]; LT = [ 0, 0]; equations YOUT = N & M; ZOUT = (SEL & N) # (!SEL & M); EQ = (N == M); GE = (N >= M); GTR = (COMP == GT); LTH = (COMP == LT); UNLUCKY = (N == 13) # (M == ^hD) # ((N + M) == ^b1101); test_vectors ([ N, M] -> UNLUCKY) [ 0, 0] -> 0; [ 0, 1] -> 0; [ 0, 2] -> 0; [ 0, 4] -> 0; [ 1,12] -> 1; [ 2,11] -> 1; [ 3,10] -> 1; [ 4, 9] -> 1; [ 5, 8] -> 1; [ 6, 7] -> 1; [ 7, 6] -> 1; [ 8, 5] -> 1; [ 9, 4] -> 1; [10, 3] -> 1; [11, 2] -> 1; [12, 1] -> 1; end SetOps