【问题标题】:Avoiding race conditions without using program blocks in systemverilog在 systemverilog 中不使用程序块来避免竞争条件
【发布时间】:2016-08-11 21:32:06
【问题描述】:

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

【问题讨论】:

    标签: verilog race-condition system-verilog


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      因为表达式或赋值尝试同时访问相同的信号而创建了竞争条件。

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

      实际上代码是用verilog编写的,或者系统verilog是在不同的时间区域执行的,比如活动区域、反应区域。

      可以使用以下方法删除竞争条件。

      (1) 程序块

      (2) 时钟模块

      (3) 非阻塞赋值

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

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

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

      首先评估活动区域,然后评估反应区域。

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

      现在在系统verilog中添加了许多其他区域,例如prepone region,observed region,推迟区域。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 2010-09-25
        • 2018-02-06
        • 2017-12-02
        • 2019-01-10
        相关资源
        最近更新 更多