首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

二.谈谈FPGA的工具几个关键问题 4.关于我们对FPGA

二.谈谈FPGA的工具几个关键问题 4.关于我们对FPGA

二.谈谈FPGA的工具几个关键问题
4.关于我们对FPGA工具过分依赖的问题认识
硬件描述语言和综合工具的产生,极大地提高了工程师的工作效率。然而,随着它们的普及与推广,一种不好的现象也在逐步蔓延;在设计过程中,只关注功能是否实现,而不考虑或很少考虑电路到底是如何实现的;过分依赖综合等工具来提高设计性能(如速度、面积等),而不是从设计本身来考虑自己的电路是否最佳。
如果将设计看成是一个化学变化,那么工具只是起到催化剂的作用,我们所掌握的背景知识、电路设计方法及有关技巧,才是参加化学反应的分子,是起决定作用的因素。
因此,设计遇到困难时,不能完全指望工具,更不能怪罪工具。只有我们才是决定设计成败的关键。
5.不管使用何种综合工具,都包括两个过程
过程1:是把行为级的描述通过一定的算法转化为门级的描述,该过程与设计的工艺库无关、与用户约束无关。
过程2:是把已经转化的门级描述在用户的约束下,通过算法映射到相应的工艺库中的器件上。对ASIC,是映射到厂商的Gate库中,对FPGA,是映射到FPGA器件的单元结构中。
从上两个步骤可知,当设计代码的的风格不一样时,则在综合第一步就已大部分决定了设计的性能(对ASIC来说,因为是转成Gate, 器件库一般也是Gate, 相对影响较少)因此,我们不难理解代码风格对FPGA设计的重要性。
6.说说具体的综合工具性能
不同综合工具的针对目标不一致和各综合工具的不同性能,导致了综合出来的结果也不同。
目前,综合工具主要有DC(Design Compiler)、FC2(FPGA Compiler II)、Synplify、Leonardo、Galileo 等综合工具:
1)DC:主要是用于ASIC的综合工具
2)FC2:是DC在FPGA综合方面的增强版
3)Leonardo:是做FPGA综合工具的先驱
4)Synplify:是目前成长最快的综合工具(由Synplicity公司出品)

无论哪家综合工具,对FPGA的综合,都必须紧密结合各FPGA厂家的FPGA结构,否则无法更好利用FPGA提供的优点;从目前来看,优选Synplify或Leonardo综合工具;DA的FPGA综合性能差但事宜ASIC综合。
到目前为止第三方的综合工具都未能很好利用FPGA器件,因为代码风格没有跟上,导致无法得到很好的性能。

7.逻辑代码风格的重要性
因为综合工具无法最大使用到器件所提供的优越性能,导致最终的产品性能变差;若想得到更好的性能,这要求在FPGA设计上,最好对一些设计采用一些Core(但这种基于FPGA器件(特有工艺)的代码设计,将降低设计代码的重用性能、以及FPGA设计与ASIC设计的兼容性)。

8.举例:以Xilinx为例,我们怎样采取恰当的代码风格,以提高电路性能:
1)资源共享的应用限制在同一个module里。这样,综合工具才能最大限度地发挥其资源共享综合作用。
2)尽可能将Critical path上所有相关逻辑放在同一个module里。这样,综合工具能够发挥其最佳综合效果。
3) Critical path所在的module与其它module分别综合,对critial path采用速度优先的综合策略,对其它module采用面积优先的综合策略。
4) 尽可能Register所有的Output。做到这一点,对加约束比较方便;同时一条路径上的组合逻辑不可能分散在各个module里,这对综合非常有利。可以比较方便地达到面,积速度双赢的目的。
5)一个module的size不能太大。具体大小,由各综合工具而定。
6) 一个module尽量只有一个时钟,或者整个设计只有一个时钟。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表