inertial and transport delay
hi
check this pdf for transport and inertial delays
http://www.sunburst-design.com/papers/CummingsHDLCON1999_BehavioralDelays_Rev1_1.pdf
Added after 18 minutes:
Blocking Assignments
Blocking assignments are the most basic of the assignment operations, and simply copy the value of the expression at the right hand side of the = operator to the variable on the left hand side. However, if two assignments that depend on each other are scheduled at the same time, e.g. an attempt to swap two variables, such as :
always @(posedge clk) a = b;
always @(posedge clk) b = a;
then a race condition occurs, and both a and b will end up with one of the values. The value that they are both left with will depend on which of the assignments was scheduled first.
Non-blocking Assignments
Non-blocking assignments eliminate the possibility of race conditions in situations like this, as at the time that the assignment operation is executed the expression on the right hand side of the <= operator is copied to an internal temporary variable, which is then copied to the variable on the left hand side. All of the `reads' for a particular timestep are carried out before any of the `writes', and so values can be safely swapped as below :
always @(posedge clk) a <= b;
always @(posedge clk) b <= a;
This time, the code has the intended effect.