问题描述
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约束放在其他网络上,请确保您还对这些网络的源和目标应用放置约束。
没有回复内容