【发布时间】:2016-08-11 21:32:06
【问题描述】:
我们知道 SystemVerilog 中使用程序块来避免 DUT 和测试台之间的竞争条件。在 SystemVerilog 出现之前,验证工程师做了什么?我只能想到使用握手信号。
【问题讨论】:
标签: verilog race-condition system-verilog
我们知道 SystemVerilog 中使用程序块来避免 DUT 和测试台之间的竞争条件。在 SystemVerilog 出现之前,验证工程师做了什么?我只能想到使用握手信号。
【问题讨论】:
标签: verilog race-condition system-verilog
您使用与设计人员在 RTL 中防止竞争条件相同的语义:非阻塞分配或替代时钟沿。
程序块在 SystemVerilog 中是不必要的结构。见http://go.mentor.com/programblocks
【讨论】:
您可以在不使用程序块的情况下避免竞争条件。
因为表达式或赋值尝试同时访问相同的信号而创建了竞争条件。
如果两个信号试图在不同的时间戳访问相同的信号,那么用户可以移除竞争条件。
实际上代码是用verilog编写的,或者系统verilog是在不同的时间区域执行的,比如活动区域、反应区域。
可以使用以下方法删除竞争条件。
(1) 程序块
(2) 时钟模块
(3) 非阻塞赋值
在程序块和时钟块竞争条件使用非阻塞分配移除之前。
正如我在上面解释的那样,用verilog 代码或系统verilog 代码编写的语句不是一次性执行代码。工具执行特定语法的区域不同。
这里我主要讲了Active和Reactive区域。 活动区域考虑连续分配,阻塞分配。 反应区域考虑非阻塞分配的 LHS 在该区域进行评估。
首先评估活动区域,然后评估反应区域。
因此,在删除竞争条件验证工程师的程序块之前会处理这些事情(执行区域)。
现在在系统verilog中添加了许多其他区域,例如prepone region,observed region,推迟区域。
【讨论】: