SystemVerilog寄存器设计竞赛规避

时间:2017-08-29 11:26:42

标签: scheduling system-verilog race-condition digital-design

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

驱动我的设计的测试平台(我无法修改)驱动输入,使得设计中的某些寄存器由于竞争条件而无法正常工作。

这是一个eda-playground示例,说明了正在发生的事情(输入更改"在#34之前;时钟在15ns时):

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

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

我在SystemVerilog LRM中读过#steste,但我不确定如何使用它,也不能解决这个特殊问题。

1 个答案:

答案 0 :(得分:1)

您的测试平台实际上是在创建一个违反设置规则的激励措施。您有两种选择:

  1. 说服测试平台作者他们错误的方法并让他们解决它。
  2. 在设计周围插入一层层次结构,延迟时钟以消除竞争。