|
时序调整改善设计性能 |
Timing Actjustment Improves Designs' Performance
|
■ 奥肯思(北京)科技有限公司 敬伟 孔令讲
|
时序调整是1983年提出的一种同步电路优化技术。然而时序调整概念被提出来以后,这种技术并没有得到广泛的应用和进一步的发展。由于下面的情况可以很清楚地看出来功能强大的时序调整算法直到最近才在逻辑综合工具中得到最广泛的应用:
1)时序调整技术的应用会直接导致面积的增加,这在早期的ASIC和可编程逻辑设计中将导致成本的迅速增加。
2)典型设计实施过程中带宽并不总是最迫切的需求。
3)多种不同类型寄存器的存在以及复杂的寄存器控制信号都限制了时序调整算法的应用。
最近几年的设计实践表明设计工程师对速度和带宽的要求越来越高。带宽已经成为当前网络和电信系统中最常见的设计瓶颈。与此同时,设计更复杂,设计难度也越来越大。时序调整技术已经为设计实践所证实,FPGA设计中时序调整技术的有效性确保未来复杂设计中对这种技术的迫切需求,本文试图解答以下问题:
1)FPGA综合工具如何实现及应用时序调整的功能?
2)为什么说FPGA更适合于时序调整算法的应用?
3)时序调整技术如何整合到今天的FPGA综合流程中?
介绍
时序调整实现对电路的智能化处理,在确保电路原有功能行为的同时,对组合延迟路径上的寄存器实施前后移动,平衡寄存器之间的组合路径延迟,达致最佳的时序效果。在不考虑互连延迟时,由一个时钟信号的同一有效时钟沿实现同步定时控制的电路,可以应用时序调惴ǖ玫绞敝又芷诘挠呕饩龇桨浮4シ⑵骺梢栽谧楹下呒缏返ピ氖淙攵撕褪涑龆酥浣幸贫U庵执シ⑵鞯囊贫梢约跎儆敫么シ⑵飨喙亓墓丶肪堆映佟H欢庵执シ⑵饕贫看沃荒芸缭揭桓鲎楹下呒哉庵炙惴ǘ允毙虻母纳剖欠浅S邢薜摹A硗饣チ映僖约疤囟‵PGA架构工艺技术独特的逻辑构成规则也给这种算法带来更多的限制。今天的FPGA综合工具中所研发的时序调整算法正在着手解决并且增强这方面的功能确保更高的时序性能。
图1 时序调整前的原始电路(略)
图2 时序调整和流水线处理后的电路(略)
图3 触发器变换(略)
流水处理是另一种同步电路优化技术:将逻辑电路按照电路连接次序进行分级(段),确保当后续的逻辑电路分级正在完成以往输入的同时,第一级逻辑可以开始处理新的输入。因而可以取得更好的吞吐量以及更高的电路性能。对流水处理来说,某些综合工具实际上可能给一个时钟周期或者从输入端口到输出端口的延迟路径引入更多的寄存器,从而导致设计处理等待时钟周期的增加。
在FPGA综合工具中实现和应用时序调整
FPGA综合工具应用了广泛的时序调整与流水处理技术以改善时序电路性能。巧妙地应用流水处理技术,可以实现输入输出端口之间寄存器的移动和均衡实现逻辑的分隔,并且不会对原有设计引入额外的处理等待延迟。在FPGA综合工具中巧妙而严格地组合时序调整和流水处理技术,可以实现高性能设计的高效率综合,确保最优的时序性能。时序调整技术中常用术语包括:
是指沿组合逻辑路径前向移动寄存器的过程。如图1所示,前向时序调整处理过程是指将寄存器REG_IN向前移动跨过任何一个组合路径算子,这种时序单元的移动操作取决于时序余量以及约束条件。
同前向时序调整过程相反, 跨组合电路路径沿终点向起点移动寄存器。图1中根据时序余量以及设计约束条件寄存器REG_PL1可以跨组合逻辑路径上的任一组合算子反向移动。
设计工程师可以在RTL行为中手工编码REG_PL1和REG_PL2来实现图1所示的流水处理。在加法器或减法器算子内通过手工编码插入寄存器进行流水线处理是可能的,但是不适合乘法器的情况。即便都可以手工自行编码的方式来实现,工具自动实施这一过程的效率仍然要高得多。第一种情况下,如果时序调整引擎只进行前向时序调整,原始电路性能改善达5ns(从15ns减少至10ns)。第二种情况下,如果时序调整引擎同时具有前向和反向时序调整处理的能力,那么设计时序性能的改善达到10ns(从15ns减少至5ns)。
关键在于时序调整引擎的能力,最终时序性能的改善可能存在较大差异。高性能时序调整引擎会将图1中的原始设计电路转换成图2中的电路结构。时序改善达到10ns(从15ns改善到5ns),与此同时确保原始设计功能行为保持一致。有的技术甚至可以进一步改善图2中的设计。可能的解决方法是拆分算子而不是在算子之间进行处理。
图4 时序调整前的电路(略)
图5 时序调整后的原始电路(略)
FPGA芯片结构中提供丰富的寄存器资源,因而特别适合应用时序调整技术来改善时序电路性能。最新的FPGA综合工具提供的时序调整技术加强了处理更多的时序电路元素的能力。某些不能恰当实现时序调整处理的时序电路也因FPGA综合工具的不同而存在差异,即不同的逻辑综合技术所提供的时序调整技术的处理能力也各不一样,其所无法利用时序调整技术进行处理的时序电路类型也是有所不同的。一般来说时序调整技术不适合处理以下设计:寄存器具有不同的时钟使能端(CE)信号;寄存器具有不同的置位/复位信号;寄存器具有复杂的控制信号。
一种称为"多级时序调整"的新的解决方法,可以非常有效地在今天的FPGA综合工具中实施。如图3所示,把时序调整技术不支持的寄存器转换成可以实现时序调整的时序电路就是这样的一种技术。
对今天绝大多数的FPGA结构来说,延时路径通常包括映射为LUT(查找表)的组合电路逻辑资源,或者包括存储器、乘法器以及任何其它非时序单元的专属资源。K输入单输出的查找表可以实现任意的K输入的布尔函数。大多数的组合电路都依靠这些查找表函数来实现。而专用快速前向进位逻辑常用来实现快速的算术运算。
FPGA综合工具重定包括各种不同逻辑模块路径时序的效果和效率完全取决于对应的时序调整算法。这正是综合工具所面临的时序调整挑战。正如前面所提到的,取决于时序调整算法的实现,最终的结果可能差异很大。
FPGA综合工具中算子的实现有以下方式:查找表、带进位逻辑的查找表、块乘法器以及专属DSP模块。
图4中假定算子1映射成纯粹的查找表逻辑,算子2映射成查找表和进位逻辑,算子3映射成专属的块乘法器。从简单的图示中不难看出,时序调整处理最有效的位置应该是在算子2和算子3之间,在这种情况下可以将寄存器到寄存器之间路径的延迟从10ns减少到5ns。如果综合工具不支持跨算子的时序调整,就根本不会对该电路实施时序调整处理;如果综合工具中时序调整引擎不支持由查找表和进位逻辑实现的算子,那么时序调整引擎就不能处理算子2。因此最大化并且不断扩展时序调整引擎对每种特定器件技术所支持的电路类型就非常必要。时序调整引擎必须具备的另一个重要特性就是必须具备精确而可靠的电路时序提取过程支持。否则时序调整处理可能恶化原始电路的性能。如图4所示,确保输入和输出的延迟约束都大于5ns,才能进行时序调整。
在FPGA逻辑综合流程中整合时序调整技术
取决于时序调整算法实现的方式, 可以在不同阶段将时序调整处理引擎整合到FPGA综合工具中。图6中的第一种选择表示时序调整是在编译后的网表(与工艺无关)上实施。业界已经研发出基于这样的时序调整引擎的综合流程。由于各FPGA厂商专有的映射和逻辑构成规则,这种实现方式对于FPGA的架构技术而言不是非常有效。在编译后的网表基础上进行时序调整的另一个很重要的缺点是到了综合映射阶段,设计的时序特征会发生极大的变化。
第二种选择是设计完成优化和映射之后进行时序调整处理,这一流程广泛应用在FPGA综合工具中。时序调整引擎可以根据需要对映射好的网表实施时序调整处理。这种处理方式能够尽可能充分发挥逻辑和物理时序调整算法的优势。由于这一阶段设计已经映射到具体的FPGA目标工艺并且以网表的形式存在,所以这一阶段的时序特征描述是最精确的。
总结
时序调整成为确保设计行为并且改善时序性能最有效而且最可靠的技术。FPGA丰富的寄存器资源以及其它相关特性,可以肯定时序调整技术在FPGA设计中将发挥最大的优势。
FPGA设计同具体的FPGA厂商与工艺技术直接相关,因而时序调整算法引擎的进一步发展将面临许多挑战性的工作。尽管面临如此的阻碍,时序调整技术依然进展迅速并且卓有成效。
|
|