内容摘要 数据路径出现在任何的RTL代码中,包含*、+、-、>、<、<=、>=和移位运算符,即使简单的有限状态机都要求累加器、加法器或者乘法器这种形式的数据路径组件。随着时钟频率的增长(当前已经达到GHz量级),高效数据路径设计的负担快速增长。本文概述了由RTL或者MCL设计数据路径的一般方法,并推荐RTL编码指导方针来提高总体的效率,同时满足所有其它约束。
在很多高性能VLSI设计中,包括所有高性能微处理器,数据路径通过采用定制设计方法来实现。这种结构的电路和版图设计大部分通过手动完成,以获得的性能和更高的版图密度。大多数的设计工程师不知道除了有限状态机(FSM)、存储器地址发生器、FIFO和堆栈外,累加器、加法器、减法器或者乘法器是以数据路径组件的形式存在。总之,只要在HDL中使用到+、-、*、<、>或者==这些符号,在硅片中就存在一个数据路径组件。
随着工艺技术缩减到90纳米以下和时钟频率达到GHz级,信号完整性的问题以及漏电流问题变得更加严重。除了已经很复杂时序问题外,还需要进行可靠性和功能正确性分析任务、噪声和功率的详细分析,以确保的设计能在要求的规范下运行。针对这些要求进行定制路径设计需要大量的时间,在今天快速变化的市场条件下,不可能手动实现所有的RTL设计来获得的性能。
Synopsys提供全自动的高性能数据路径发生器。这些工具提供可与手动设计相媲美的数据路径性能,并整合了先进的信号完整性、功率、验证和版图设计工具,以确保满足多重规范要求。这种系统性方案增加了总体的结果质量(QoR),同时减少产生这些结果的时间(TTR)。
Synopsys的“智能数据路径发生器”(Smart Datapath Generator)集成到设计编译器(DC)中,这种编译器用于基于VHDL和Verilog的RTL设计,并提供高性能数据路径综合。Synopsys的模块编译器语言(MCL)专门开发用于描述高性能数据路径设计,并提供除了结构化的数据路径设计、进位保留操作数位处理、流水线(pipeline)操作以外的一些额外灵活性和特性。Synopsys模块编译器工具利用MCL描述并给定一定的约束集,来得到高性能的数据路径实现。MCL的一个非常强大的功能是在综合期间保持数据路径的规则性,并产生自动的相对布局(RP)信息,这种相对布局信息由布局布线工具使用。
基本的数据路径构建模块
任何数字电路都可以通过使用加法器、乘法器、移位器和复用器四个基本的构建模块来实现,下面的几个部分简单解释Synopsys的这些独特组件。
1.加法器
地址大概是数字电路中使用广的构建模块。每个乘法器、除法器、累加器、比较器和减法器等,都要求某种加法运算。Synopsys有嵌入到其数据路径工具的各种 加法器架构。这些加法器的范围从很慢的小型并行加法器到非常快速的大型超前进位加法器,后者用于整数和浮点运算。增加到DC和MC的两个新的加法器架构分别是“pprefix”和“aofcla”。 对于给定的设计约束,这些加法器提供的面积-时间QoR。
2.乘法器
乘法器是任何数据路径中关键的单元,因为乘法器的速度通常决定数字设计的周期时间的速度。设计高性能的乘法器总是具有挑战性,而且,因为复杂的相互连结,乘法器的物理设计比较困难。一个并行乘法器有三个基本的部分:
a)部分乘积(partial product)发生器;
b)部分乘积加法器;
c)末级加法器(final adder)。
Synopsys的数据路径发生器提供很多种的乘法器架构,能够混合和匹配乘法器组件以获得的QoR。模块编译器还产生乘法器架构的相对布局信息。
Synopsys数据路径发生器提供3-2加法器或者4×2压缩器的选择,以获得乘法器架构更好的物理版图设计的灵活性。
3.移位器
移位器是算术数据路径中成本很高(占较大的面积)的逻辑组件。某些时候移位器用来产生固定的除法器或者乘法器。Synopsys数据路径工具提供移位器,这些移位器可能具有下面功能的一些组合:算法或逻辑;只向右移位,只向左移位,或者双向移位;常规移位器或者桶式移位器(barrel shifter)。
4. 复用器
复用器不是真正的数据路径单元,但广泛地用在加法器、移位器、除法器、比较器和数据路径输入/输出选择等等中。复用器的面积和速度通常是由技术库单元管理。但是,复用器和它们的控制信号的明智选择也能造成数据路径设计上的很大差异。复用器的一些简单优化措施包括:将两种级别的复用器合并成一个更大的复用器,使用一对反向和同向输出复用器,或者对复用器采用与或逻辑。
Synopsys数据路径功能
用户通过直接的组件实例利用DW基础库(非的方法)或者通过RTL算术运算符,使用任何的整数数据路径组件和架构组合来获得的用户控制。因为Synopsys的数据路径工具是受前后条件驱动(context driven)的,在给定某一约束集条件下,它们自动选择通过RTL导出的架构,这也称为自适应数据路径导出(ADE)。ADE是DC Expert和DC Ultra的一部分。
模块编译器包含那些不能用标准RTL进行表述的设计,或者要求像结构化数据路径设计、进位保留操作数位处理或者相对布局信息这样的功能。
浮点(FP)数据路径组件只能通过DW Foundation和/或者模块编译器作为一个函数调用来进行例示。Synopsys的浮点库提供一套可以用参数表示的浮点组件和图形架构。FP函数符合IEEE754浮点标准的数值表示模型和准确度要求。所有的函数向接口逻辑提供一个或者两个可选的8位浮点运算状态标志。除了浮点比较函数(DW_cmp_fp)以外,所有的函数具有一个三位的RND输入端口,实现了对中间浮点运算结果的舍入模式的动态编程。对于所有的函数来说,RND舍入输入的格式和状态(STATUS)输出是相同的。静态参数e(指数)和f(分数)使用户不仅能实现IEEE754标准函数,还能实现实际上所有的浮点格式,并允许针对特定的应用选择正确的和范围。当从DSP算法向硬件设计转变的时候,后者总是很自然地成为一个问题。
设计中采用了各种提高数据路径性能的方法,例如避免高成本的进位传递以及尽可能地利用进位保留运算。其它的方法包括算法优化(例如特定环境下的运算符综合、运算符合并和运算符共享)。当、复杂的数据路径模块从RTL代码中导出时,这些优化方法非常有效。
在下面的几个章节中将详细地解释Synopsys数据路径发生器用以产生高性能复杂数据路径模块所使用的方法,工程师利用这些方法可以构建更好的数据路径模块。
1. 进位保留运算
当前数字电路设计中一种主要的提高速度、降低面积的方法是在具有的进位传递下增加操作数,基本的思路是通过使用进位保留加法器(CSA),将三个或者更多的操作数减少到两个。进位保留加法器执行多个操作数的加法,同时保持和与进位分开。这意味着所有的列可以并行累加,而不需依赖于前一列的计算结果,产生一个具有与输入大小无关的恒定延时的双输出“加法器”。
在显示的简单示例中,A+B+C的运算使用了采用进位保留加法的单进位传递加法器。如果没有进位保留加法,A+B+C将需要两个进位传递加法器。只有的进位与和向量的再合并需要一个进位传递加法。当有很多需要相加的加数时,进位保留加法非常有用。乘法就是这样的例子,有很多的部分乘积需要累加在一起。
描述了一个一般的综合工具如何进行6个输入的矢量加法综合的。两个数据的相加需要一个进位传递加法器,如果这是一个强调性能的设计的话,设计工程师需要为每个加法器提供一个预测进位类型的架构(carry-look-ahead type architecture),这样将增加硅片的面积。
显示了使用Synopsys数据路径工具如何在进位保留加法器(CSA)算法中实现相同的功能。这种方法让一个逐位进位加法器实现3-2的加法缩减过程。然后在阶段,我们依然需要将两个中间和缩减为一个二进制和。的2个加数到1个和的过程将用到一个进位加法器。
2. 特定环境内的运算符综合
特定环境内的综合可以大大地提高一个包含各种数据路径运算符的实际设计的质量。为解释这个概念,我们将用三个简单的实例:常数相乘、平方和移位。对于每个运算符的构建而言,根据其如何使用来构建将比脱离应用环境所构建的运算符得到更好的结果。
种情况,乘一个常数,显示出如果你关注到运算符之外将出现什么情况。如果你创建一个32×32的乘法器,然后将其中一个输入连接到常数模式,可以预见结果将比你建立一个利用常数输入的乘法器的结构更糟。特定环境内运算符综合方法允许你描述乘法器为X*Y,将自动地发现X或者Y是一个常数,并产生适当的结构。
第二种情况更有意思。你可以建立一个32×32的乘法器,然后将两个输入连接在一起来产生一个平方电路。或者,你可以为这个目的创建一个特殊的乘法器结构。这样一个32位的平方比32位的乘法电路的面积小40%,并快15%。特定环境下的综合使设计过程自动化,因此你可以简单地将你的硬件描述为X*X。
特定环境下的时序驱动综合:电路的时序是综合过程的几个阶段中需要优化的重要的设计规格之一。特定环境下时序驱动综合与优化允许基于输入到达的情况的电路树延时化(TDM)。例如,考虑图中显示的情况,“a”输入到达比较晚,因此它能用于的进位保留加法器,从而使电路的差路径延时化。
3.复杂运算符合并
复杂算数运算符合并是特定环境下综合的一个特殊情况。运算符合并允许去除进位传递加法器,获得更快和更小的设计。这种优化只可能存在于使用特定环境综合的自动模块发生的环境。在任何的数据路径设计中,这些优化类型非常有用。Synopsys数据路径发生器能对*、+、-、>、<、<=、>=运算符进行合并。此外,移位运算符、复用器和截余运算符(truncation operator)也被合并。
下面是复杂的运算符合并实例:
乘积之和(SOP):在乘积和运算符合并中,多个乘积与被加数只用一个进位传递末级加法器在一个数据路径模块中相加在一起。在任何可能的情况下,将内部结果保留在冗余数字表示法中(例如进位保留)。
实例:z=a*2*b*d-3*(c*d*e)
和之乘积(POS):在和之乘积运算符合并中,多个和与一个乘积只用一个进位传递末级加法器映射到一个数据路径模块。
实例:z=(a+b-c+d)*c
4. 互斥运算符共享
互斥运算符共享通过让不同的运算共享一个运算符来获得的面积节省。例如,如果在一个if-else语句中有一个加法运算,那么Synopsys数据路径工具将构建一个带有要求的控制信号的加法器。
if(COND) then
Z=A+B;
else
Y=C+D;
end if;
5. 寄存器时序重定(retiming)与自动流水线操作
流水线操作是获得更快的吞吐量时钟速率而可能牺牲延时的一种方法。寄存器时序重定通过在组合逻辑中移动寄存器来优化时序逻辑,并在对面积影响的情况下跨越层边界来优化时许,在I/O边界上也保持了相同的功能。寄存器时序重定(像在DC Ultra中发现的一样)还支持时钟选通(clock-gating),在任何设计上都能起作用,在这些设计上选通的时钟通过利用功率编译器来插入。在纯粹的组合设计中,DC-Ultra可以被用来插入流水线来达到时序要求,它还支持多个时钟。只要设计不包含内部反馈环,Synopsys形式验证工具Formality可以对时序重定的设计进行验证。
第三大技术允许运算符在运算中被创建。如果需要的话,它们可以在运算符的中间插入流水线,这允许流水线自动而平滑地跨越整个数据路径。设计工程师可以规定期望的运算速度,如果编译器不能获得那样的速度,它将在需要的地方插入流水线。当然,设计工程师可以操纵流水线的放置,例如可以放在乘法器的Wallace Tree末端。在手动设计环境中,对流水线的这种控制非常困难。
DC Ultra综合流程
DC Ultra具有强大的新数据路径引擎,这个引擎能导出算数组件并能对它们进行优化,来对数据路径密集的设计提供更好的结果。这个功能是编译的优化(HLO)阶段的关键组成部分。
三个主要的步骤组成了DC Ultra数据路径流程:
1.步骤1:宏架构选择
宏架构是配置用来实现算数表达式的一组算术组件。在这个阶段,检查RTL代码来识别包含数据路径单元的宏架构。
两个不同宏架构的实例,这两个宏架构从一个Verilog代码中得来的。新的数据路径流程能够监测与包含数据路径的设计片段相符的不同宏架构,并通过给定某一套约束来挑选出的宏架构。
2.步骤2:数据路径导出
紧接着步骤1,数据路径单元从宏架构(一个宏架构可以包含几个算术运算符,例如加法器、比较器、移位器等)中导出。成功的数据路径导出需要算数运算符被“直接”连接,即相互之间没有随机逻辑。数据路径单元被*、+、-、>、<、<=、>=定义。移位、截余运算符和复用器也可以被导出。数据路径导出是时序驱动的,在编译的时候发生。任何导出的运算符可以被共享或不共享,这决定于在同样给定的一套约束的情况下,哪个策略产生的好处。
3.步骤3:导出数据路径的实现选择
,导出的数据路径通过使用“智能发生器”技术来实现。新数据路径流程提供对算数组件的一种识别和快架构的快速方法。智能发生器支持优化运算符,并将上面提到的所有优化用到数据路径设计上。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。