wire test;
//At all times, test equals input
assign test = input;
has the same behaviour as:
reg test;
//Each time input changes(with the always@*), test takes its value
always@*
test = input;
there are two experience rule:
- Always use blocking assignments for combinatorial or level-sensitive code, as well a clock assignments
- Always use non-blocking assignments for variables that are written on a clock edge, and read on the same clock edge in another process.