解决时序限制问题
对于IC设计工程师来说,发现与修正时序限制,是一项常见但相当棘手的问题。研发时间常耗费数月,有时最后却无法达成时序限制的目标。如何妥善地限制设计,确保设计符合时序目标,这项作业相当繁重且耗神。
时序问题令人头疼之处,是没有单一方法能解决每种时序问题。不过我们可藉由推升软件的极限、优化RTL程序代码、或同时合用两种方法,解决大多数的时序问题。
由于客户对于与FAE分享原始码都抱持谨慎态度,因此我们建议可藉由推升其工具的极限,协助解决其时序问题。
在此之前,我们要先对时序问题进行基本分析,目标是找出所有明显问题的根源,例如组件上方的频率针脚、驱动组件底部的数字频率管理器(DCM),进而驱动组件顶层的全局缓冲器(BUFG)。
有时设计工程师以配置针脚的方式,是不可能达成时序的目标。通常研发人员可检查时序报告中的延迟,藉此找出许多显而易见的时序问题。在此情况下,工程师都会需要配置工具,将有问题的组件锁定在适当位置,藉以解决各种明显问题。组件配置工具亦可透过图形帮助了解时序问题。
运用现有的软件工具
如果问题无法一眼可以看出,设计工程师必须了解目前使用的系列组件与软件版本。一般而言,每个系列组件通常会有一个优化软件版本。
合成工具的版本也很重要,因此在使用最新组件架构时,研发人员务必得下载并使用最新版本的软件。软件开发的步调几乎都落后于硬件功能的开发脚步,因此不建议工程师把旧版软件拿来和新系列组件搭配使用。
不过有些顾客因为害怕处理新的或未知的bug,而不愿意升级软件。但若工程师希望在使用最新系列组件时,能妥善克服时序方面问题,我们仍建议下载使用最新版本的软件。
当工程师取得目标系列组件的软件最佳版本后,再找出最佳的建置选项。不过这些建置选项总共有数千种不同的组合可应用到建置工具。以picosecond为单位的时序评分为例,亦即所有失效时序信道的加总时间,其最大的影响因素就是工程师所选用的建置选项。
SmartXplorer软件
FPGA设计公司有多款可协助工程师找出设计最佳选项组合的工具。例如Xilinx的ISE软件目前含有两种工具:Xplorer与最近推出的SmartXplorer。
SmartXplorer能运用多重处理器,执行多个具备不同选项的建置方案。SmartXplorer是Linux平台的软件,使用起来相当简单,仅须使用以下指令即可:smartxplorer designname.edn -p xc5vlx110t-1ff1136。只要用户限制档案(UCF)以及硬件联机表(netlist)限制档案(NCF)的名称相同,SmartXplorer就会自动使用正确的选项。工程师唯一需要的就是管理窗体档案。
SmartXplorer能藉由安全的shell/远程shell(SSH/rsh)来登入至其他主机,只要在smartxplorer.hostlist档案中,另外加入一行主机名即可。若主机装有两颗处理器,则加入两行主机名。表1便列出SmartXplorer输出的结果。
(表一) 在Virtex-5 FPGA设计方案中的SmartXplorer 10.1范例
Option |
Timing Score |
Run Time |
Map:-timing –ol high –xe n –global_opt on –retiming on |
651262 |
6h 26m |
Par:-ol high |
|
|
Map: -timing –ol high –xe n |
0 |
4h 25m |
Par:-ol high |
|
|
Map: -cm area |
380834 |
5h 19m |
Par:-ol high –xe n |
|
|
Map: -timing –ol high –xe n –register_duplication –logic_opt on |
0 |
5h 46m |
Par:-ol high –xe n |
|
|
Map: -timing –ol high –xe n –register_duplication –logic_opt on |
666567 |
12h 34m |
Par:-ol high –xe n |
|
|
Map: -cm balanced |
172171 |
4h 4m |
Par:-ol high |
|
|
Map: -timing –ol high –xe n –global_opt on –retiming on –ignore_keep_hierarchy |
7235 |
6h 33m |
Par:-ol high |
|
|
Map: -timing –ol high –xe n –pr b –cm balanced
PlanAhead亦有一个类似SmartXplorer的功能,名为ExploreAhead,能同时在多部Linux主机上分散处理逻辑配置作业。这些工具的目的都相似:在建置工具中找出一组选项,以得到最佳的时序成绩。
工程师应注意观察各种选项对时序成绩以及运行时间产生的显著影响。配合各种合成选项一起执行也很重要。例如,关闭合成的阶层选项,通常会大幅提升效能。合成时设定良好的限制,亦有助于达成时序目标。
使用PlanAhead软件步骤
当工程师分析各种建置选项达到最佳的时序成绩后,则可开始着手有效地分析时序问题。在这方面PlanAhead软件是极有效的工具,因为其可让工程师看到逻辑配置的内容。研发人员亦可汇入时序限制,并交叉侦测有问题的信道,把它们放在配置组件窗口内。
当工具作出不良的决定时,工程师可透过配置模块或手动置放组件来校正之。这通常是重复的作业,需要多次流程才能找出最佳的配置方式,让设计案达到优化的时序。PlanAhead软件的可视化功能让这项工作变得更加容易。
内建软件项目
使用PlanAhead软件,工程师首先需要建立一个项目,将HDL或硬件联机表(netlist)档案汇入到工具软件。当工程师建好一个项目后,再点选File选单下的Import Placement。从最佳流程中选取PAR(ncd)档案,把配置内容汇入到PlanAhead软件项目。
- 工具将把PlanAhead软件项目安排到数个窗口内。左上方窗口是实体阶层结构,显示设计方案中目前的区域群组。下方的选取窗口显示工程师目前选取数据的细节。中间的窗口则是硬件联机表窗口,显示完整的硬件联机表结构。最右边的窗口是组件检视图,显示工程师在设计方案中建置的逻辑结构。这时应该要注意:
●各种时序问题差异大,在PlanAhead软件中采用的解决方法也有所不同。要在PlanAhead中解决各种时序问题,需要实际操作经验。
汇入时序分析报告
接着再把时序分析器报告(TWR/TWX)汇入到工具中。点选File选单中的Import TRCE Report。这个步骤会把时序报告数据加入到下方窗口。研发人员应根据最坏时序情况来排序窗口显示内容,并先专注处理最坏情况的来源。修正最坏状况来源,通常能解决整个设计案的许多时序问题。
选取故障信道
《图一 PlanAhead软件显示一个建置方案,标示出一个错误时序信道》 |
|
PlanAhead软件显示一个建置方案,标示出一个错误时序信道
操作原型设计结果
工程师可放大显示任何选取的原型设计。用鼠标左键点选一个原型设计,拖曳之以了解其链接设定。在硬件联机表窗口中,工程师也可移至最上层的模块,其中有选取的组件。用鼠标右键点选模块名称,为选取的组件设定一种颜色。这样就能显示出这个模块在芯片上的配置方式,以及群组是相互靠近或是分散的状况。
有时研发人员会发现必须更加锁定特定设计原型。在时序问题方面,常见问题都是源自Block RAM与DSP自动模块配置。如图一显示,很容易看出PAR把Mult18放在一个非优化的位置。故障信道中有一个Block RAM,将结果送至Mult18,Mult18再把结果送到一个进位链。
Block RAM是高位,Mult18是低位,而逻辑则是高位。若绕线没有往上、往下、或往侧面,就能达成时序目标。
解决各类时序问题方案
- 各种时序问题差异大,在PlanAhead软件中解决它们的方法也不尽相同。在PlanAhead设计工具中要解决时序问题,需要实际操作的经验。我们以解决图一所描述的时序问题作为例子。依循下列的步骤,引导工程师完成一个解决方案:
- ●选出错的时序信道,标示出关键信道;
- ●在一个组件上按鼠标右键,然后选取Highlight With选单中的color of choice;
- ●在左边的窗格中,取消位于底部第二层Mult18的配置。在Unplace上按鼠标右键,开启时序错误的Block RAM空间;
- ●透过点选与拖曳的方式,把Mult18从底部向上拉一层;
- ●点选并拖曳右边的Block RAM,空出左下方Block RAM的位置;
《图二 PlanAhead软件显示在锁定DSP48与Block RAM后的一个校正后信道》 |
|
- PlanAhead软件显示在锁定DSP48与Block RAM后的一个校正后信道
- ●点选Tools选单下的Clear Placement Constraints。在第一个选项点选Next;
- ●点选Unplace All But Selected Instances。在引导精灵的后续步骤点选Next;
- ●若工程师想在PlanAhead软件以外进行建置,请点选File选单下的Export Floorplan;
- ●工具会写出一个新的UCF档案,名为top.ucf。工程师可使用该档,或使用档案中的限制设定,将这些设定加入到原始UCF;
●另一个选项是在PlanAhead软件中执行建置。
- 透过ExploreAhead,点选Tool选单下的Run ISE Place & Route。ExploreAhead有许多很好的功能,包括:
- ●在ExploreAhead中执行建置,简化汇入配置与时序结果。
建立区域群组
若工程师发现配置结果中有许多时序错误,人工配置通常无法解决这些时序问题,正确的作法是建立区域群组(Pblock)。
其中一种建立区域群组的方法是在硬件联机表窗口中,在模块名称上按鼠标右键,然后点选Draw Pblock。之后在Device窗口中画一个四方形,工程师可以在此摆放区域群组。
工具会建立一个Pblock,工程师会看到许多相关信息。属性窗口会显示Pblock需要的逻辑资源,以及绘出群组的资源。
这种相当互动化的流程,可规划出一个设计方案。研发人员可能需要分多个批次来调校区域群组,之后才能顺畅运作。不过请注意不要贪多。工程师不一定得把整个模块纳入区域群组。建议专心处理错误的原型组件,可以单独把它们加入群组,再进行配置规划。
工程师应运用Pblocks的标准进一步了解运作功能,像是充分运用区域群组中的可组态的逻辑区块(CLB)。这能协助工程师分析特定区域的拥塞是否会对绕线产生限制。若有许多拥塞发生,工程师则需要把逻辑分散至各处。
当研发人员使用PlanAhead软件得到最佳的时序成绩后,剩下的工作就是优化程序代码。PlanAhead设计工具现已支持HDL原始码。依照人员汇入的来源,就可用交叉侦测的方式,追回至网络表或HDL。
在示意图窗口中,我们可看到整个时序信道。在时序结果中选取时序信道,然后再按F4。注意看其他模块扇入与扇出的逻辑。这些工具必须经常把模块分散至芯片各处,以配合外部界面的需求。若发生这样的情况,工程师可能必须采用管线设计。
Block RAM或DSP输出时序通常会造成时序错误的问题。通常藉由暂存这些模块的输出结果,即可回复1毫微秒(nanosecond)的偏差。
良心建议
若工程师有时序收敛的问题,但没有PlanAhead软件,我们建议可采用PlanAhead。这个工具在解决时序问题时,能提供许多层面的协助。运用PlanAhead设计工具,工程师可执行ExploreAhead,找出最佳的选项组合。由于PlanAhead软件并没有受限于特定版本的ISE,若研发人员工作站装有多个版本,可以尝试使用不同版本的ISE。PlanAhead软件的交叉侦测功能,可让工程师充分了解设计中的原始码与实际建置结果。
时序收敛可能是相当棘手的问题,但若运用正确工具与版本,配合一套完善的时序收敛计划,工程师便可快速找出设计中的时序问题,并完成设计工作。
(作者为美商Xilinx赛灵思业务工程师)