- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)