- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Verilog HDL的模型优化的论文.doc
基于Verilog HDL的模型优化的论文
摘 要 本文基于模型优化的必要性,对使用verilog hdl建模时可以运用的优化手段作了详细的阐述,对设计者具有一定的指导意义。
关键词 模型优化;综合;表达式
1 引言
每个设计者在进行verilog建模时都会形成自己的设计风格,同一个电路设计,用verilog描述可以写出许多逻辑上等价的模型,而大多数设计者考虑的主要是代码书写上的方便和功能上是否正确,对设计的模型是否最优化结构却考虑甚少,这样不仅加重了逻辑综合的负担,影响综合效率,而且很可能会导致设计出的芯片未达到最优的面积和速度。因此,在verilog建模时,很有必要进行模型优化。
2 模型优化概述
影响一个芯片性能的指标主要有两个:面积和速度。模型优化就是通过一定的手段对模型的结构进行调整、组合和精简,从而使设计出的芯片达到更小的面积和更快的速度。
综合所生成???逻辑易受模型描述方式的影响。把语句从一个位置移到另一个位置,或者拆分表达式都会对所生成的逻辑产生重大影响,这可能会造成综合出的逻辑门数有所增减,也可能改变其定时特性。.因此,采取一定的手段可以实现对逻辑的优化。但是由于优化终点包含的两个方面面积和速度是互相矛盾的,优化一个方面必定影响另一个方面,而无法实现面积和速度都达到最优,这就需要设计者对两者进行权衡,看设计偏重于哪个方面,而采取不同的优化起点。
下面分别从面积和速度两个方面对模型优化的手段进行介绍。
3 面积的优化
3.1 提取公共子表达式
如果条件语句的互斥分支中有公共子表达式,可以提取该公共子表达式。如下面的模型可以提取公共子表达式:
if(enable)
p = a(b+c);
else
q = (b+c)|d;
此模型中条件语句的互斥分支中都计算了表达式b+c,因此,应将该表达式提取出来放在条件语句之前进行赋值,新模型如下所示:
tmp = b+c; //引入一个临时变量
if(enable)
p = atmp;
else
q = tmp |d;
这样,综合工具就会综合出一个加法器,而原来的模型则会综合出两个加法器。引申到一般情况,若在逻辑中找到有公共子表达式,就可以将该公共子表达式赋值给一个临时变量,然后用该临时变量来表示该公共子表达式,这样就可以减少综合出的alu单元的数量,以实现面积的优化。
3.2 代码移位
如果在循环语句内某个表达式的值在每次循环中都不变化,可以将该表达式移至循环之外。如下面的模型可以进行代码移位:
p = …
…
for(i=1;ilt;=5;i++)
begin
…
q = p+5; //假设循环中未对p赋新值
…
end
赋值语句“q = p+5;”右端的表达式不随循环变量而变,因此,应将该表达式移至循环之外,新模型如下所示:
p = …
…
tmp = p+5; //引入一个临时变量
for(i=1;ilt;=5;i++)
begin
…
q = tmp;
…
end
这样,综合工具对“p+5”只会综合出一个加法器,而原来的模型会产生5个加法器,每循环一次就产生一个,造成了代码冗余。优化后的新模型不仅减少了综合出的alu单元的数量,而且提高了仿真效率。
3.3 资源共享
资源共享是指在互斥条件下共享算术逻辑单元(alu)的过程。如下面的模型:
if(numgt;5)
p = a+b;
else
p = a-c;
如果不采用资源分配,算符“+”和“-”就会被综合成两个单独的alu。而如果采用了资源分配,仅需一个alu就可以实现“+”和“-”这两种运算。这是因为这两种算符总是互斥地使用。此外还生成了一个多路选择器,用来从b和c中选择合适的量接到alu的第二个输入端上。实际上,资源分配就是共享算符的过程。共享算符有以下几种可能的情况:
(1)算符相同,运算量相同。如:a+b和a+b,这种情况同“提取公共子表达式”,显然必须共享。
(2)算符相同,有一个运算量不同。如:a+b和a+c,这时需引入一个多路选择器,要进行面积与速度之间的权衡。
(3)算符相同,运算量都不同。如:a+b和c+d,这时需引入两个多路选择器,要进行面积与速度之间的权衡。
(4)算符不同,运算量相同。如:a+b和a-b,可以将“+”和“—”合成一个alu单元,要共享。
(5)算符不同,有一个运算量不同。如:a+b和a-c,这时需引入一个多路选择器,要进行面积与速度之间的权衡。
(6)算符和运算量都不同。如:a+b和c-d,这时需引入两个多路选择器,要进行面积与速度之间的权衡。
在共享alu的时候,要在alu的某个输入端引入多路选择器,这样会增加路径的延迟。因此,设计者应根据实际情况权衡是优化面积重要还是优化速度重要,如
您可能关注的文档
- 基于Android平台的纹理映射分析与实现的论文.doc
- 基于ANSYS的管道交变电磁场仿真分析的论文.doc
- 基于ANSYS空间网架有限元分析及优化设计的论文.doc
- 基于Apriori算法的关联规则挖掘系统的设计与实现的论文.doc
- 基于ArcGIS的DEM数据生成方法的研究与探讨的论文.doc
- 基于ARM+FPGA的重构控制器设计的论文.doc
- 基于ARM的家庭视频服务器的研究的论文.doc
- 基于ARP欺骗的网络监听原理及实现的论文.doc
- 基于ASEB栅格分析法的旅游产品深度开发研究的论文.doc
- 基于AS路径识别的包标记算法的论文.doc
- 基于VisualFoxPro环境开发管理系统的论文.doc
- 基于VRML的虚拟实验系统设计的论文.doc
- 基于Vxworks实时操作系统的串口通信程序设计与实现的论文.doc
- 基于Web Services的Struts框架在数字医院信息系统中的应用的论文.doc
- 基于Web Services的数字化校园的构建研究的论文.doc
- 基于Web Service的医疗机构信息交换平台的研究的论文.doc
- 基于Web Service的执行力管理系统研究与实现的论文.doc
- 基于Web服务的嵌入式视频服务器的论文.doc
- 基于Web检索的陕北民歌语料库设计的论文.doc
- 基于Web的多媒体CAI课件开发过程中若干问题的研究和实践的论文.doc
文档评论(0)