module my_module( output reg[4:0] o, // o trebuie sa fie reg pentru a o putea atribui // în blocul always input[3:0] a, b); reg[2:0] i; // poate fi maxim 7; noi avem nevoie de maxim 4 reg c; // ținem minte transportul always @(*) begin i = 0; // la orice modificare a intrărilor, i va fi inițial 0 c = 0; // transportul initial este 0 // toți biții lui o sunt recalculati la modificarea intrărilor for (i = 0; i < 4; i = i + 1) begin {c, o[i]} = a[i] + b[i] + c; end o[4] = c; end endmodule