0

在 systemverilog 中进行数字设计时,我遇到了有关赛车条件的问题。

驱动我的设计的测试台(我无法修改)以这样一种方式驱动输入,即设计中的某些寄存器由于竞争条件而无法正常工作。

这是一个 eda-playground 示例,它说明了正在发生的事情(输入在时钟“之前”发生变化,时间为 15ns):

http://www.edaplayground.com/x/rWJ

有没有办法让设计(在这种情况下是一个简单的寄存器)抵抗这个特定的问题?我需要的是像“out_data <= preponed(in_data);”这样的语句 或类似的东西会使输入信号的顺序变化无关紧要。

我已经阅读了 SystemVerilog LRM 中的#1step,但我不确定如何使用它,也不确定它是否可以帮助我解决这个特定问题。

4

1 回答 1

1

您的测试台本质上是在创建与您的寄存器设置违规的刺激。你有两个选择:

  1. 说服测试平台编写者他们的错误方法并让他们修复它。
  2. 在设计周围插入一层层次结构,延迟时钟以消除竞争。
于 2017-08-29T14:41:44.490 回答