Trying to get my head around FPGAs after 40 years of 2GLs. I can't seem to find a clear exposition of the following, would appreciate if someone could confirm or clarify the following assumption:
I have the following Verilog code say:
always @ (posedge clk) begin do 1 do 2 do 3 end
assign outA = wireA & wireB assign outB = wireC & wireD
always @ (posedgeclk) begin do 4 do 5 end
Is the following correct?
1, 2 and 3 are done (more or less) in a sequential manner, ie. the result of 1 will be present when 2 is performed. Hence, statement order is important here.4 and 5 will be done using their own gate resources, clocked "more or less" in parallel with 1,2,3. However, presumably assuming any sort of time alignment between the results of the two always blocks would be risky at best (explicit synchronisation required).
For the assign statements, does clocking pay a part, or do these statements simply run at gate delay speed? Or is the answer device-dependent?