Thanks for the replies, but my question was referring more to the sequential-only always block. I mean, not mixing combinational logic in a sequential always block.
Maybe I need to clarify even more.
When possible, modules are viewed as FSM's. That is combinational logic that gets its inpus from the outside world and from outputs of the sequential part, and a sequential part that is only flip-flops that load the outputs of the combinational logic, get them at the outputs, and feed them back to the combinational part. The coding rule in the company I work for is: the combinational part is defined in one ore more always blocks (preferrably one block for each independent combinational output), and the sequential part (the output FF's) is defined in its own always that has zero combinational logic in it, that is
always @(posedge clk)
begin
...out1 = out_in1;
...out2 = out_in2;
.
.
.
...outn = out_inn;
end
Zero combinational logic here, nada, niente, only a register is synthethised suposedly.
This style is rigurous and forces you to write well organized code, but I wonder if it isn't too restrictive sometimes, if it doesn't prevent synthesis tools from optimizing efficiently. I mean, it's TOO rigurous I think, and that rigour turns into rigidness sometimes.