用PlanAhead分析时序
在了解实现选项对最佳时序分值的影响之后,现在可以开始有效地分析时序问题了。这时候,PlanAhead是一款非常有价值的工具,可以视觉化显示布局布线后的设计。利用它,还可以导入时序约束并在已布局窗口交叉探查(cross-probe)时序失败的路径。
当工具本身的决策不好时,则可以通过平面布局模块或通过手工布局部分组件的方式来纠正。这一过程通常需要反复多次,才能够确定时序优化的最佳设计布局方式。PlanAhead软件的可视化功能确实使这一工作的完成更容易了。
利用PlanAhead软件,首先创建项目(project),然后将HDL或网表文件导入工具中。一旦创建了一个项目,就可以选择“File→Import Placement”。选择时序优化效果最佳的布局布线后(ncd)文件,将布局布线信息导入PlanAhead软件项目。
软件会将PlanAhead项目组织到几个不同的窗口。左上窗口是物理分层窗口,描述了设计中的当前区域组。选定窗口在下面,包含了当前选定的数据详细信息。中间窗口是网表窗口,给出了整个网表的分层结构。最右侧窗口是器件观察窗(Device view),里面已经充满了设计实施完成后的逻辑。
然后,将时序分析报告(TWR/TWX)导入到PlanAhead工具中。选择“File→Import TRCE Report”。这一步将时序报告数据添加到底部窗口。按照时序余量(timing slack)对这一窗口进行排序可以将焦点首先集中于违反时序要求最多的地方。经常的情况是解决了这些时序偏差最大的地方所存在的问题也就解决了整个设计的时序问题。
图1. PlanAhead 10.1版显示出已实施的设计,一条时序失败路径高亮显示。
一旦选择了一条时序失败的路径,PlanAhead软件就会选定时序失败路径上的实例和连接。按F9键放大显示选定的部分。
这儿的事情显得有些复杂。必须进行一定的审查和思考才能够明显布局布线工具将基本单元(primitive)放在某个地方,以及为什么对于当前的特定设计来说还有更好的方法。
可以放大显示任何高亮的基本单元。鼠标点击一个基本单元并拖动,可以更好地观察其连接情况。在网表窗口,还可以移动到包含了所选实例的顶层模块。鼠标右击模块名称并为选定的实例选择颜色,这样就可以显示出这一模块在芯片中的布局,以及组内单元是靠近还是散开的。
可能发现有时需要更好地锁定特定的基本单元。Block RAM和DSP模块的自动布局是导致时序失败的常见原因。很容易发现布局布线工具将Mult18安排的位置很不好。时序失败路径中的块RAM输出连接到Mult18,后者的输出又馈送到进位链。块RAM在上部、Mult18在下部,而逻辑部分又位于上部。如果布线不需要上上下下、边边角角地来回绕,该路径应当可以满足时序要求。