- 为什么需要使用这些平面图工具将设计逻辑锁定到特定区域?这样做有什么好处吗?这真的需要吗?
它之所以有用肯定是有原因的,但这实际上取决于设计。
对于没有良好分组的大规模互连设计(例如,有许多处理核心严重依赖于所有其他核心,而不是每个核心独立运行),综合工具可能很难看到树木的木材。
他们试图将所有逻辑尽可能紧密地捆绑在一起以进行时序,但由于工具无法看到如何将其分组为小部分,这实际上可能导致更差的 FMax,因为内核位在其他内核中爆炸资源稀缺或路由猜想。
通过使用 LogicLock 区域或等效项,您可以帮助工具查看应该组合在一起的模块,这可以提高时序性能,因为工具可以更紧密地将部件封装在 LogicLock 区域内。
如果设计中有很多时钟,您还可以将属于一个时钟的寄存器LogicLock到特定区域,以尝试减少所需的全局时钟数量。现在的综合工具在这方面做得很好,所以可能不需要。
另一个原因是,如果您的逻辑在两个方向上被强烈拉动(例如,一个角落的内存 PHY,另一个角落的处理器,中间的互连结构)。例如,如果一个部分以比另一部分更高的频率运行,那么理想情况下,任何时钟交叉都将更接近高速部分以应对时序要求,但是如果逻辑在两个方向上被强烈拉动,则可能很难用于优化工具。有时,出于这种原因添加 LogicLock 区域会使我从事的设计从时序失败到通过。
对于更奇特的用例,例如时间到数字的转换,您可以使用长进位链将脉冲宽度转换为多位代码。这种技术通常需要精确控制和可重复的传播延迟,因此甚至可能需要限制到精确的寄存器或 LUT。
- 另外,如果我们已经对特定区域进行了这种逻辑锁定,如果我们想将调试逻辑(例如 SignalTap II (Quartus) 实例添加到该逻辑或识别实例 (Libero) 中呢?
我不能代表 Libero,但对于 Quartus,不受约束的逻辑仍然可以放置在 LogicLock 区域的未使用部分中(除非您明确禁止这样做)。如果您添加诸如 SignalTap 之类的调试逻辑,它将可以自由地将其放置在任何需要的位置(除非您将 SignalTap 限制到一个区域),包括在逻辑锁定区域内添加分接逻辑。
最后,您可能希望保存 FPGA 的一个区域以用于特定的未来扩展,因此可能会将当前设计限制在 FPGA 的较小部分,以便您知道以后拥有所需的空间。
- 如何决定设计的哪一部分应该锁定到 FPGA 平面图的哪一部分?对于复杂的设计,人类很难做出决定。这就是为什么我不明白这些工具的意义所在。
除非您有理由这样做,否则通常最好将其留给综合工具,而不是从一开始就过度约束设计。
如果您开始遇到时序分析等问题,那么您可以开始调查是否有很多长时序路径似乎是由于高速逻辑分布广泛而不是紧密封装所致。Chip Planner 非常有用,因为它在 Quartus 中至少可以显示时序路径。
修复可能是添加更多流水线,或开始将逻辑限制到某些区域。添加区域约束还可以让您挑选出复杂的设计,例如,对高速逻辑进行分组,然后查看这如何影响来自可能较低速度区域的其他路径,这些路径可能指向添加流水线的好地方。