--- Quote Start ---
You should use
always @(posedge clock) // posedge is active edge of the clock
begin
wren <=# (delay) 1;
address <=# (delay) address+1;
data<=# (delay) f(data);
end
where delay is what is needed to prevent timing violations. You want to put the delay to the right of the <= the delay is non-blocking; it only effects the delay of the assignment and not when the next statement executes.
--- Quote End ---
Thanks very much for your help. So the# (delay) should be used for all assignments to prevent assignment happen exactly in active edge of clock, right?
Could you explain a little more why put# (delay) in left not in right? Thanks very much.