module tb_alu(); reg [31:0] a, b; reg [2:0] op; reg sign, add_one, negate; wire [31:0] out; wire zero_flag; alu uut( .op(op), .a(a), .b(b), .out(out), .b_negate(negate), .b_add_one(add_one), .sign(sign), .zero_flag(zero_flag) ); initial begin $dumpfile("waves/tb_alu.vcd"); $dumpvars; a = 30; b = 20; op = 3'b000; negate = 1'b0; add_one = 1'b0; sign = 1'b0; // add #10 // subtract negate = 1'b1; add_one = 1'b1; #10 // shift left a = 1; b = 2; negate = 1'b0; add_one = 1'b0; op = 3'b001; #10 // signed comparison a < b op = 3'b010; #10 a = -10; b = 10; #10 // unsigned comparison op = 3'b011; #10 // xor op = 3'b100; #10 // shift right logical a = -1; b = 2; op = 3'b101; #10 // shift right arithmetical sign = 1'b1; #10 // or sign = 1'b0; op = 3'b110; #10 // and op = 3'b111; #10 $finish; end endmodule