Datapath综合的编码准则-Synopsys.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

白皮书

Datapath综合的编码准则

2009年8月

作者介绍

Reto

Zimmerman,本文将综述用于Datapath综合的编码准则。编码准则可分为两类:

首席工程师,

Synopsys,Inc.►有助于RTL代码算式功能正确性和帮助达成预期行为的准则

►有助于提高Datapath综合QoR(结果质量)的准则

Datapath综合

为编写出能在Datapath综合过程中获得最佳QoR的RTL代码,我们必须先理解综合器能支持的

Datapath功能、Datapath综合流程的工作原理以及编码会如何影响Datapath的效能。

支持的Datapath功能

提升Datapath性能的最重要技术是避免代价高昂的进位衍递(carry-propagation),并在可能

的情况下,我们应尽量利用RedundantExpression(如carrysave或partialproduct)来做算

术运算。其次就是要尽量利用高级别算术优化(例,公共因式共享和常数化简等)。为了让高级

别算术优化的效果更显著,我们应尽可能地从RTL代码中提取出最大规模的Datapath模块。

►积之合(SOP):任意个乘积的总和(即,多个乘积和被加数相加)可以整体整合在一个

Datapath模块内、如此,整个模块只需要最后一层进位加法器(carrypropagationadder)。

其他的内部运算都可以用redundantnumber算式完成(例,carrysave)。

例:“z=a*b+c*d-483*e+f-g+2918”。

►合之积(POS):有限的合的乘积(即对合进行乘法运算),也可以在一个Datapath模块内、

用只带最后一层的进位加法器(carrypropagationadder)实施。(即在乘法前,没有进位运

算)。限制是只有一个乘法操作数可以是carrysave格式,而其他操作数必须是二进制。

例:“z=(a+b)*c”,“z=a*b*c”。

►Select-op:选择运算(即,选择器、整个运算范围的乘法器)可在冗余内部结果上,作为Datapath

模块的一部分实现(即,在选择运算前没有进位运算)。

例:“z=(sign?-(a*b):(a*b))+c”。

►比较:可在冗余内部结果上,作为Datapath模块的一部分实现比较(即,在比较前没有进位运算)。

例:“t1=a+b;t2=c*d;z=t1t2”(仅当没被内部删节时,‘t1’和‘t2’才

在进位存储中)。

►移位:常量和变量移位可作为Datapath模块的一部分实现(即,在比较前没有进位运算)。

例:“t1=a*b;z=(t1c)+d”。

综合流程

Datapath流程包含如下阶段:

1.Datapath析取:从RTL代码中尽可能多地析取出Datapath模块

2.Datapath优化:在析取出的Datapath模块上进行高层次算术优化

3.Datapath生成:在特定约束、条件和库情况下,灵活、由内容驱动的Datapath生成器为

Datapath模块生成优化的网络表。

编码目标

可通过实现如下目标,为Datapath综合实现RTL代码优化:

►使能Datapath析取来析取可能的最大Datapath模块

►使能Datapath优化以有效实施高水平算术优化

►使能Datapath生成以充分发挥其可实现的功能

如下准则有助于编写出可实现这些目标的代码。

支持工具

Synopsys的DesignCompiler能在这种

文档评论(0)

150****8199 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档