在verilog阻塞和非阻塞分配中,这两种代码之间的区别是什么?

在verilog阻塞和非阻塞分配中,这两种代码之间的区别是什么?,verilog,Verilog,区块1: 我想知道在时间延迟方面的区别X是赋值的,有人能帮我吗???我可以帮你解决这个问题,而不必为你做任何工作 阻塞赋值意味着下一条语句被阻塞,直到对变量的赋值完成。非阻塞的赋值意味着对变量的赋值是将来的计划,但下一个语句执行时不会被阻塞 假设block1和block2都是begin/end在时间0开始的块,block1将在时间550到达其端,block2将在时间1200到达其端。您应该能够模拟并看到差异。在阻塞情况下,延迟不应该进一步为1200吗?在相同情况下,语句x=#200将在延迟50之

区块1:


我想知道在时间延迟方面的区别X是赋值的,有人能帮我吗???

我可以帮你解决这个问题,而不必为你做任何工作

阻塞赋值意味着下一条语句被阻塞,直到对变量的赋值完成。非阻塞的赋值意味着对变量的赋值是将来的计划,但下一个语句执行时不会被阻塞


假设
block1
block2
都是
begin/end
在时间0开始的块,block1将在时间550到达其
,block2将在时间1200到达其

您应该能够模拟并看到差异。在阻塞情况下,延迟不应该进一步为1200吗?在相同情况下,语句x=#200将在延迟50之后执行吗?我的意思是,即使对于除了运营商内部的延迟?@dave_59 50+150+50+200+500+250=1200我的意思是说,如果我们有像begin:block2 X=#50 10;X=#150 100#50 B=#200#500 X=#250;结束后,语句B=#200将在延迟250后执行,相同的非阻塞代码将在延迟50后分配B。我是否正确???
begin : block1
  X<= #50 10;
  X<= #150 100;
  #50 
  X<= #200 200;
  #500
  X<=#250 250;
end
begin : block2
  X= #50 10;
  X= #150 100;
  #50
  X= #200 200;
  #500
  X=#250 250;
end