LogiCORE PCI  –  Virtex-4 66 MHz设计有时无法满足时序要求。可以做些什么来纠正这个问题?-Altera-Intel社区-FPGA CPLD-ChipDebug

LogiCORE PCI – Virtex-4 66 MHz设计有时无法满足时序要求。可以做些什么来纠正这个问题?

问题描述

Virtex-4 66 MHz设计有时无法满足时序要求。

解决/修复方法

客户可能会注意到Virtex-4 66 MHz设计可能并不总能满足首次实施时的时序要求。

通常,失败将发生在OFFSET IN约束上,最明显的是IRDY#和TRDY#信号。

故障将违反3 ns输入设置或0 ns保持时间要求。

对于过去的器件,如Virtex-II Pro,Spartan-IIE等,提供了指导文件,可以保证关键输入路径的时序。

Xilinx选择不为Virtex-4设计做到这一点,因为它限制了客户使用不同引脚和UCF发生器的灵活性。

此解决方案试图为您提供必要的信息,以满足您的设计的时序收敛。

如果您使用CORE Generator的PCI UCF生成器为Virtex-4生成UCF文件,请阅读(Xilinx答复22671)

值得注意的是,并非所有提供的UCF都符合此解决方案中概述的时序。

此外,一些UCF文件将接近满足时序,对于这些,您可以使用下面描述的一些技术来尝试达到时序收敛。

有关Virtex-4步进信息和PCI内核,请参阅(Xilinx答复21399)

由于PCI的要求,最常失败的关键路径是来自IOB引脚的路径,该路径无法在IOB中注册。

此输入必须在注册之前进入FPGA架构并通过组合逻辑进行注册,如下图所示。

最值得注意的是,这些问题将出现在IRDY#和TRDY#引脚上,但也可以在其他控制引脚上看到,如FRAME#,DEVSEL#等。

从上图中可以看出,寄存器无法打包到IOB的输入端。

如果没有指导文件来控制此信号的布线,则由PAR来决定是否以满足时序的方式对其进行布线。

根据所使用的PAR选项或设计密度,PAR可能无法在第一次尝试时满足此要求。

以下是尝试满足时序收敛时要使用的步骤列表:

步骤1

对于Virtex-4 66 MHz设计,您必须使用区域时钟输入,而不是PCI时钟的全局时钟输入。

为此,您必须使用正确的包装器文件和UCF文件组合。

请参阅“ PCI入门用户指南”表3-1中列出的Virtex-4示例。

此表列出了用于选择Virtex-4器件的正确包装器文件和UCF文件。

如果您已使用UCF生成器创建UCF文件,请确保您创建了一个使用区域时钟输入的文件,然后使用包含区域时钟缓冲区的包装文件,如表3-1所示。

该包装文件位于<hdl> / src / wrap目录中,对于66 MHz Virtex-4设计,将命名为pcim_lc_66_r.v或pcim_lc_66_r.vhd。

第2步

确保输入延迟缓冲区设置正确,如“ PCI入门用户指南”的表3-3所示。

第3步

尝试调整IDELAY控制器值。 Virtex-4 PCI设计利用了Virtex-4中的IDELAY组件。

该组件增加了输入信号的延迟并且是可调节的。

目标是增加足够的延迟以满足PCI的0 ns保持时间要求,但不能超过3 ns输入设置要求。

您可以在UCF文件中调整这些值。寻找这样的行:

INST“PCI_CORE / XPCI_TRDYD”IOBDELAY_VALUE = 0;

INST“PCI_CORE / XPCI_IRDYD”IOBDELAY_VALUE = 1;

INST“PCI_CORE / XPCI_STOPD”IOBDELAY_VALUE = 4;

INST“PCI_CORE / XPCI_DEVSELD”IOBDELAY_VALUE = 4;

增加此值可提高满足0 ns保持要求的能力,并降低该值可提高满足设置要求的能力。

我们的想法是找到兼具两者的价值。范围是0到63。

有关IDELAY组件的更多信息,请参阅“Virtex-4用户指南”。

步骤4

MAP选项

可能必须更改<hdl> / example / xilinx目录中的默认实现脚本。

一种选择是在映射期间使用-timing开关。

这将导致map在放置逻辑时更加努力以满足时序要求。

但是,使用此开关将增加完成时间映射所需的时间。

使用-timing选项的示例如下所示:

map -pr b -timing pcim_top.ngd -o pcim_top.ncd pcim_top.pcf

第5步

PAR选项

如果使用map -timing开关是不够的,您可以尝试不同的PAR成本表。

PAR有100种不同的成本表或种子可用于其布局布线算法。

默认情况下,它使用成本表1.您可以使用-t选项更改此值。

以下是使用成本表25的示例:

par -ol high -t 25 -w pcim_top.ncd pcim_top_routed pcim_top.pcf

您可以使用MPPR(多通道布局布线)来运行多个成本表,而不是猜测成本表。

请参阅位于以下位置的软件手册:

http://www.xilinx.com/support/software_manuals.htm。

特别是,您需要阅读“开发系统参考指南”中的PAR。

以下是运行10个成本表的示例:

par -n 10 -t 25 pcim_top.ncd routed.dir pcim_top.pcf

这将从成本表25开始运行10次PAR迭代,并将所有结果存储在目录“routed.dir”中。

使用MPPR的一个增强功能是使用Turns Engine在多个计算节点上分配每个作业。

有关更多信息,请参阅“开发系统参考指南”。

另一个尝试的PAR选项是设置额外的努力水平开关。

这使PAR更难以满足时间要求,反过来可能会导致极长的运行时间。

有关更多信息,请参阅“开发系统参考指南”。

第6步

在许多情况下,如果你收紧OFFSET IN约束,你将能够满足3 ns的要求。

例如,如果约束为3 ns,则PAR可能不满足时序。

但是,如果将其更改为2.8或2.9 ns,有时PAR将更接近此值,并进而满足3 ns的值。

换句话说,如果将其设置为2.8 ns,则可能会以2.9 ns的速率发生故障,但这仍然低于3 ns的要求。

为此,请将UCF文件OFFSET IN约束更改为如下所示:

TIMEGRP“PCI_PADS_C”OFFSET = IN 2.800 VALID 2.800在“PCLK”TIMEGRP“ALL_FFS”之前;

第7步

希望您可以使用上面给出的步骤之一来满足时间要求。

一旦达到计时,就可以选择对出现问题的信号创建定向布线(DIRT)约束。

这样,如果不更改引脚或逻辑布局,可以指示PAR每次在相同的路径上布线违规信号。

有关使用定向布线的更多信息,请参阅Xilinx软件手册中的FPGA编辑器帮助手册。

以下是使用定向布线的示例。

假设4vlx25ff668上的Virtex-4 66 MHz设计无法使用核心示例目录中的默认脚本满足初始运行时的时序。

它无法满足TRDY#的输入设置要求。

时间报告显示以下内容:

松弛:-0.008ns(要求 – (数据路径 – 时钟路径 – 时钟到达+不确定性))

资料来源:TRDY_N(PAD)

目的地:PCI_CORE / PCI_LC / PCI-AD64 / IO11 / OFD(FF)

目标时钟:CLK上升至0.000ns

要求:3.000ns

数据路径延迟:4.704ns(逻辑电平= 3)

时钟路径延迟:1.696ns(逻辑电平= 3)

时钟不确定度:0.000ns

在此示例中,TRDY#输入失败时间为0.008 ns。

但是,通过遵循上面的一些建议,最终会达到时间安排。特别是,对于此示例,PAR再次运行,初始成本表为5。

目标是创建一个定向布线约束,该约束在满足时序的设计中完全约束此路径。

使用时序报告,识别路径中必须使用工作设计中的定向布线约束约束的网络。

对于这个例子,两个网络需要定向布线约束;它们是TRDY_I和SOFT_CE。

在FGPA编辑器中打开工作设计,然后选择工具 – >定向布线约束。

使用过滤器查找网络并选择它们。

您可以将这些约束附加到当前的UCF文件。

您必须为每个网络执行此操作,FPGA编辑器将每次将约束附加到您的UCF文件。

一旦完成,使用这些DIRT约束将导致PAR每次将网络放置在相同的路径上,这应该允许在设计改变时满足时序。

对于此示例,PAR再次使用最初失败的默认选项运行,PAR报告显示DIRT约束已匹配。

在这个例子中,PAR报告说:

启动布线器

这告诉用户PAR识别UCF中的DIRT约束并成功布线它们。

通过这样做,设计满足时间要求。

基本上,如果您选择,可以使用此方法锁定整个设计。

需要考虑的一个重要注意事项是,要使DIRT约束起作用,信号的源和目标也必须通过UCF文件放置。

在大多数情况下,这些放置LOC约束已经在PCI核心UCF文件中,用于可能给您带来问题的信号。

但是,如果您发现需要将DIRT约束放在其他网络上,请确保您还对这些网络的源和目标应用放置约束。

请登录后发表评论

    没有回复内容