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