基于Verilog HDL的模型优化的论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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的某个输入端引入多路选择器,这样会增加路径的延迟。因此,设计者应根据实际情况权衡是优化面积重要还是优化速度重要,如

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档