I was reading an earlier post and got confused. This issue has already been delt with. but here is an example of blocking assignment use.
One cannot mix blocking and non-blocking assignments to the same reg however. A simple example bitfield extract (o1, o2 and o are calculated in a blocking manner within an always block - this is synthesized code):
Code:
`BFEXT:
begin
for (n = 0; n < DWIDTH; n = n + 1)
o1[n] = mask[n] ? a[n] : 1'b0;
o2 = o1 >> mb;
for (n = 0; n < DWIDTH; n = n + 1)
o[n] = n > ml ? o2[ml] : o2[n];
end