3

我有一个连续的 Verilog 代码,在每次增加 时i,都必须发生不同的事情。

对于某些 ,i没有计时错误。但是,对于 的不同值i,我会得到计时错误(如果省略这些特定过程,那么我不会得到计时错误)。

我想知道 Verilog 中是否有一种方法可以让组合逻辑占用两个时钟周期而不是一个。两个时钟周期应该足以完成这些过程,尽管我认为我以前从未见过这样的事情。

谢谢!

4

1 回答 1

3

您正在寻找的东西称为“多循环路径”。需要超过一个时钟周期才能完成的逻辑路径(锥体)。

您可以使用时序约束来定义这样的路径,但是!!!
使用多循环路径有很多陷阱。我不能全部告诉他们,因为这需要很长时间,但在你的情况下,还有一个额外的危险,因为你似乎有时使用相同的路径作为单周期,有时作为多周期。

如果您将路径定义为多周期,综合工具将优化您的逻辑以适应该多周期路径,然后停止优化。很可能时序不再优化到足以在“单个周期”中完成。

例如:您的时钟是 100MHz,并且您没有使用多周期路径约束。综合工具将尝试获得最佳时序并实现 12ns 延迟。你的时机将失败。

现在您使用指定 2 个周期的多周期路径约束。综合工具将尝试获得最佳时序,并在某些时候实现 19ns 延迟。这已经足够了,所以它停止了。但是现在很有可能,对于“单周期”的情况,时序不再优化到足以在 10ns 内完成。

于 2019-07-30T05:18:19.620 回答