使用 PCI 编译器 3.2.0 和 Quartus® II 4.1,您偶尔会看到针对Stratix或Stratix GX 设备的 PCI 设计无法满足输入时序要求。在 66 MHz PCI 操作中,PCI 输入信号需要满足 3 ns 的输入设置要求 (tsu) 和 0 ns 的保留要求(第 0) 个。在 33 MHz PCI 操作时,PCI 输入信号需要满足 7 ns 和第 0 ns 的第 tsu 要求。输入设置故障影响设计,仅需要 66 MHz 操作。保留故障可能会影响需要 66 MHz 操作或 33 MHz 操作的设计。当有 PCI 输入信号(如 trdyn)通过两个逻辑级别(两个 LE)控制 PCI 输出寄存器(如 AD)时,系统会出现故障。为了充分发挥 tsu Quartus II 的性能,必须将 LE 放置在靠近输出寄存器的逻辑阵列模块 (LAB) 中。Quartus II 将逻辑放置在 99% 的正确位置(这种分析本身就是以内核实现的)。1% 的故障纯粹是随机的。通常,您会看到 1 或 2 条路径不符合 tsu 要求。tsu 的故障余量通常在 50 ps 到 500 ps 之间。如果发生故障,您可能会看到几条路径无法满足这些要求。
为了满足时序要求,执行以下步骤:
- 使用Altera®提供的约束文件
确保您正确使用Altera提供的约束文件。如欲了解更多信息,请参阅 PCI 编译器用户指南修订版 3.2.0 的附录 B。
- 更改 Quartus® II Fitter 种子
更改 fitter 种子通常会解决大多数时序故障,是解决输入时序故障的建议解决方案。更改种子会影响初始布局配置,并经常导致不同的 fitter 结果。Quartus® II Fitter 在尝试优化设计时序要求时,将种子作为初始布局配置。由于每个种子值将导致不同的拟合 , 您可以尝试几个种子 , 以尝试获得优异的拟合结果。初始布置的种子由 Settings 对话框中的 Fitter Settings 页面上的"种子设置"控制(分配菜单)。默认情况下,Quartus® II Fitter 使用 1 种子。您可以指定任何其他非负整数值作为种子。有关更换种子的更多信息,请参阅 Quartus II 手册或 Quartus II 在线帮助。
更改种子可能或可能不会产生更合适的产品;因此 , 您可能需要尝试不同的种子 , 以便您可以实现更好的适合。一旦设计符合时序,便可以锁定种子。但是,在锁定种子后对设计的任何更改都可能导致再次出现故障。您还可以使用 Altera Design Space Explorer (DSE) 来扫描 Quartus II 软件中的复杂流程参数(包括种子),以优化设计性能。有关 DSE 的更多信息,请参阅 Quartus II 手册或 Quartus II 在线帮助。文档的其余部分提供了用户可以尝试解决输入时序故障的一些其他选项。Altera建议仅在更换种子时才能尝试这些选项,以解决该问题。
- 指定更紧密的 tsu 要求
对于 tsu 故障,可以指定对发生故障的 PCI 输入有更紧密的 tsu 要求。例如,如果发生故障的 tsu 路径源自 PCI 信号 trdyn,则将此信号的 tsu 要求更改为 2.9 ns,而不是 3.0 ns。可通过在分配编辑器页面(分配编辑器菜单)中选择时序类别,并修改 trdyn 信号的 tsu 要求来更改 tsu 要求。
- 增加输入延迟,以满足时序要求
Stratix设备 IOE 包括可编程延迟,可激活以确保零抓握时间。有关可编程延迟的更多信息,请参阅Stratix手册。默认情况下,Quartus® II 不包括任何输入延迟。增加输入延迟的 Quartus II 逻辑选项称为"减少内部蜂窝输入延迟",必须将其值设置为"大型"。此分配可使用 分配编辑器 进行,并选择逻辑选项 类别。此逻辑分配需要从 PCI 输入信号指定到内核内部寄存器。或者,这个逻辑选项分配可以直接在内部进行。QSF 文件。以下示例显示从 PCI 输入信号 irdyn 到 pci_mt32 内核内部寄存器所作的分配。
set_instance_assignment -name STRATIX_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS LARGE -from irdyn -to "pci_mt32:pci_mt32_inst\|pcimt32_t:trg\|LR_PXFR_r1"
- 使用 LogicLock™ 实现 tsu 故障
建议只有有经验的用户使用 LogicLock,因为该过程很复杂。按照先前所述,当有 PCI 输入信号(如 trdyn)控制 PCI 输出寄存器(如 AD)通过两个逻辑级别(两个 LE)时,tsu 故障便会发生。为了满足时序要求,您可以创建一个固定的 LogicLock 区域,并将 2 个 LE 放置在输出寄存器附近的实验室中。有关使用 LogicLock 的更多信息,请参阅 Quartus II 文档。
- 使用 LogicLock 进行第三次故障
为了满足第三个要求,用户可以创建一个 LogicLock 区域,以将输入寄存器从输入引脚移开。