verilog语句执行顺序的疑问?

小弟刚学verilog,有些疑问,模块里面always、intial、模块引用、门实例这些语句块是并行执行还是串行?不胜感激

可综合的都是并行执行的。其实也不难理解,verilog是硬件语言,也就可以看成是一个电路。在实际的电路中没办法延迟,没办法让一边先通电,再让另一边通电,所以一切都是同时进行的。

这并行的前提都是“可综合”。

如果是写testbench,会用到不可综合的模块,这些模块是行为级的,在实际电路中无法实现。比如task,比如阻塞赋值等等,这些都是有顺序的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-08
所有块是并行的。always块和forever通电后只要满足触发条件就始终执行,initial是仿真用的,只执行一次。
举例如下:
always@(posedge clk)
begin
a=b;
c=d;
end

always@ (posedge clk or negedge rst)
if(scl)
df=1'b1;
else df=1'b0;
上面的两个块为并行。在时钟上升沿到来时同时判定两个always块内逻辑是否符合,符合则执行相关语句。
第2个回答  2010-12-27
各个ALWAYS模块都是并行执行的,这比较难理解,你需要慢慢理解
相似回答