KEEP 和 DONT_TOUCH - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

KEEP 和 DONT_TOUCH 均为非常有价值的设计调试属性。当对象被赋予这两种属性时,工具就不会最优化该对象。

  • KEEP 供综合工具使用,并且不作为网表中的属性来进行传递。KEEP 可用于保留特定信号,例如,用于在综合期间关闭信号上的特定最优化。
  • DONT_TOUCH 供综合工具使用,并可供传递到布局布线工具以确保对象永不进行最优化。

请谨慎使用这些属性:

  • 接收 RAM 输出的寄存器上如果存在 KEEP 属性,就会导致该寄存器无法并入 RAM,从而阻止对块 RAM 进行推断。
  • 在驱动更高层级上的三态输出或双向信号的层级上,请勿使用这些属性。如果驱动信号和三态条件都位于当前层级,那么将不会推断 IOBUF,因为工具必须更改层级才能创建 IOBUF。
  • 禁用最优化的属性通常会导致电路增大以及功耗增大。AMD 建议有节制地使用这些控制,如不再需要,可将其移除。

此外,请注意将 DONT_TOUCH 放置在信号上与将其放置在层级上的差异:

  • 如果将该属性放置在信号上,将保留该信号。
  • 如果将该属性放置在层级上,该工具不会触碰该层级的边界,并且该层级中不会发生常数传输。但该层级内部的最优化将予以保留。