Ari*_*Ari
5
设计师经常试图使用#0来避免两个程序块之间的竞争条件.程序块中的#0强制该块停止并在所有其他块之后重新调度.当你有一个想要最后执行的多个块时,就会出现问题.谁应该获胜?
这本身就可以成为一种新的竞争条件,它的分辨率可能因运行和模拟器而异.简而言之,使用#0延迟的多个线程可能导致非确定性的执行行为.
此外,它使您的代码难以阅读,也不可合成.SystemVerilog提供了新的构造,以更可预测和可读的方式避免#0.这是一个例子(参见7.2事件触发器竞争条件).
请注意,除了SystemVerilog中#0的经典用法之外,您可能实际上需要使用#0.例如,不同的断言.