module alu_design(a,b,cin,s,y,cout); input [3:0] a,b; input [2:0] s; input cin; output [3:0] y; output cout; reg [3:0] y; reg cout; always @ (a or b or cin or s); begin if (s == 0) // Transfer A {cout,y} <= a; // Y <= A else if (s == 1) // Decrement A {cout,y} <= (a-1); // Y <= A – 1 else if (s == 2) // Increment A {cout,y} <= (a+1); // Y <= A + 1 else if (s == 3) // Complement A {cout,y} <= (~a); // Y <= Abar else if (s == 4) // Logical AND {cout,y} <= (a&b); // Y <= A and B else if (s == 5) // Logical XOR {cout,y} <= (a^b); // Y <= A xor B else if (s == 6) // Add with Carry {cout,y} <= (a+b+cin); // Y <= A + B + Cin else // Subtraction {cout,y} <= (a+(~b)+1); // Y <= A + Bbar + 1 end endmodule