begin end 之间的代码是串行执行的,begin end间的<=也是串行执行的,比如:
begin
a <= b;
a <= c;
d <= a;
end
最后a<=c起作用,a<=b相当于没起作用,是串行。a最后的值是c,而不是x(如果是并行,因为多驱动,值会是x)。
只不过赋给d的是a的老值,而不是c,这(非阻塞赋值)是用串行模拟并行的一种方法。但这并不是说begin end间的<=是并行,begin end间的代码是串行的,fork join间的是并行。多个always和initial间是并行。