在不使用systemverilog中的程序块的情况下避免竞争条件

时间:2016-08-11 21:32:06

标签: verilog race-condition system-verilog

我们知道在SystemVerilog中使用程序块来避免DUT和测试平台之间的竞争条件。在SystemVerilog出现之前,验证工程师做了什么?我只能想到使用握手信号。

2 个答案:

答案 0 :(得分:5)

您使用与设计人员用来防止RTL中的竞争条件相同的语义:非阻塞分配或替代时钟边缘。

程序块是SystemVerilog中不必要的构造。见http://go.mentor.com/programblocks

答案 1 :(得分:3)

您可以在不使用程序块的情况下避免竞争条件。

仅因表达式而创建竞争条件,或者分配尝试同时访问相同的信号。

如果两个信号试图以不同的时间戳访问相同的信号,那么用户可以删除竞争条件。

实际上代码用verilog编写或者系统verilog在不同的时区执行,如有源区,反应区。

可以使用以下内容删除竞争条件。

(1)程序块

(2)时钟块

(3)非阻塞分配

在使用非阻塞分配删除程序块和时钟块竞争条件之前。

正如我上面解释的那样,用verilog代码编写的语句或系统verilog代码不是单次执行代码相同的。工具执行特定语法的区域不同。

这里我主要讨论了Active和Reactive区域。 活动区域考虑连续分配,阻止分配。 反应区域考虑在该区域评估非阻塞分配的LHS。

评估第一个活动区域,然后评估反应区域。

因此,在程序块移除竞争条件之前,验证工程师会处理这些事情(执行区域)。

现在在系统verilog中还添加了许多其他区域,如preone区域,观察区域,推迟区域。