在 systemverilog 中进行数字设计时,我遇到了有关赛车条件的问题。
驱动我的设计的测试台(我无法修改)以这样一种方式驱动输入,即设计中的某些寄存器由于竞争条件而无法正常工作。
这是一个 eda-playground 示例,它说明了正在发生的事情(输入在时钟“之前”发生变化,时间为 15ns):
http://www.edaplayground.com/x/rWJ
有没有办法让设计(在这种情况下是一个简单的寄存器)抵抗这个特定的问题?我需要的是像“out_data <= preponed(in_data);”这样的语句 或类似的东西会使输入信号的顺序变化无关紧要。
我已经阅读了 SystemVerilog LRM 中的#1step,但我不确定如何使用它,也不确定它是否可以帮助我解决这个特定问题。