当你的FPGA设计不能满足时序要求时,原因也许并不明显。解决方案不仅仅依赖于使用FPGA的实现工具来优化设计从而满足时序要求,也需要设计者具有明确目标和诊断/隔离时序问题的能力。设计者现在有一些小技巧和帮助来设置时钟;使用像SynopsysSynplifyPremier一样的工具正确地设置时序约束;然后调整参数使之满足赛灵思FPGA设计性能的目标。
会有来自不同角度的挑战,包括:
● 更好的设计计划,例如完整的和精确的时序约束和时钟规范
● 节约时间的设计技术,例如为更好的性能结果,整合设计的各个部分而编写严谨的RTL代码,提出最高性能挑战,当你之后调整设计时减少迭代运行时间
● 综合和摆放以及路由时序的相关性,带来更好的时序质量的结果(QoR)和时序收敛
让我更进一步地观察这三类中的技术,检验如何使用它们来达到时序目的。
第一步:更好的设计计划
最重要的就是确定正确且完整的设计约束。这些约束用于设计意图以及性能的目标和综合工具之间的通信。设计一旦综合完毕,这些约束和关键路径信息将被自动注释到Vivado设计套件的摆放和路由(P&R)工具中,进一步确保满足时序。
第二步:RTL代码风格和关键路径调整
为了获得更好的时序,我们建议使用特定的代码风格来描述有限状态机、RAM、数学/DSP功能、时钟树和移位寄存器。结果会提高时序QoR,因为综合工具能够推断一个实现使用了FPGA原语的构件。
此外,这些代码风格让你免于创建不必要的逻辑,例如可推测的锁存器、RAM的读/写检查逻辑和打包进入DSP原语的逻辑。当需要更多这方面主题时,使用综合工具中的核生成器就成为值得考虑的关键点了。
第三步:获得最终的时序收敛
在综合、摆放和路由之后能够报告总体的时序信息。例如,Synplify软件允许你使用TCL命令(report_timing)报告设计的具体部分。为了进一步提高时序QoR,我们建议你关联综合之后和P&R之后的时序结果,具体是在时序关键路径上给定起点和终点的边界。
我们指出的方法会早早地截取时钟和约束设置问题,同时也提供多种技术来调整和关联你设计的时序以及拥有快速时序收敛的RTL。