我们知道在SystemVerilog中使用程序块来避免DUT和测试平台之间的竞争条件。在SystemVerilog出现之前,验证工程师做了什么?我只能想到使用握手信号。
答案 0 :(得分:5)
您使用与设计人员用来防止RTL中的竞争条件相同的语义:非阻塞分配或替代时钟边缘。
程序块是SystemVerilog中不必要的构造。见http://go.mentor.com/programblocks
答案 1 :(得分:3)
您可以在不使用程序块的情况下避免竞争条件。
仅因表达式而创建竞争条件,或者分配尝试同时访问相同的信号。
如果两个信号试图以不同的时间戳访问相同的信号,那么用户可以删除竞争条件。
实际上代码用verilog编写或者系统verilog在不同的时区执行,如有源区,反应区。
可以使用以下内容删除竞争条件。
(1)程序块
(2)时钟块
(3)非阻塞分配
在使用非阻塞分配删除程序块和时钟块竞争条件之前。
正如我上面解释的那样,用verilog代码编写的语句或系统verilog代码不是单次执行代码相同的。工具执行特定语法的区域不同。
这里我主要讨论了Active和Reactive区域。 活动区域考虑连续分配,阻止分配。 反应区域考虑在该区域评估非阻塞分配的LHS。
评估第一个活动区域,然后评估反应区域。
因此,在程序块移除竞争条件之前,验证工程师会处理这些事情(执行区域)。
现在在系统verilog中还添加了许多其他区域,如preone区域,观察区域,推迟区域。