FPGA流程

1.背景

本人做的是集成电路设计逻辑综合方向,想介绍一些关于逻辑综合相关的基本知识以及一些常用的算法。所有资料均采自网上或者一些硕博士论文,会标明出处!

另外写相关文章的初衷也是由于目前中国集成电路发展形势大好,但是相关的专业人才比较少,也想写一些关于逻辑综合科普性的文章,由于本人实力有限,所以难免会有一些错误,希望相关专业的朋友在读到之后欢迎在评论区报出错误,谢谢!

2.FPGA介绍

何为FPGA?

FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点(百度)。

2.1 FPGA分类

FPGA是在可编程逻辑器件PLD等基础上进一步发展的产物。它是作为专用集成电路ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。

FPGA的发展非常迅速,形成了各种不同的结构。按逻辑功能块的大小分类,FPGA可分为细粒度FPGA和粗粒度FPGA。细粒度FPGA的逻辑功能块较小,资源可以充分利用,但是连线和开关多,速度慢;粗粒度FPGA的逻辑功能块规模大,功能强,但资源不能充分利用。从逻辑功能块的结构上分类,可分为查找表结构,多路开关结构和多级与非门结构。根据FPGA内部连线的结构不同,可分为分段互连型FPGA和连续互连型FPGA两类。分段互连型FPGA中具有多种不同长度的金属线,各金属线之间通过开关矩阵或反熔丝编程连接,走线灵活方便,但走线延时无法预测l连续互连型FPGA是利用相同长度的金属线,连接与距离远近无关,布线延时是固定的和可预测的。

根据编程方式,FPGA可分为一次编程型和可重复编程型两类。一次编程型采用反熔丝开关元件,具有体积小,集成度高,互连线特性阻抗低,寄生电容小和高速度的特点,此外还具有加密位,防拷贝,抗辐射,抗干扰,不需外接PROM或EPROM的特点,但只能一次编程,比较适合于定型产品及大批量应用,Actcl公司和Quicklogic公司提供此类产品。可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件,配置数据存储在SRAM或快闪EPROM中。SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据就可以完成不同的硬件功能,甚至在系统运行中改变配置,实现系统功能的动态构。快闪EPROM型FPGA具有非易失性和可重复编程的双重优点,但不能动态重构,功耗也较SRAM型高。

2.2 FPGA基本结构

FPGA采用了逻辑单元阵列LCA(Logic Cell Array):这样一个概念,其内部包括三个部分,可编程逻辑块CLB(Configurable Logic Block),输X/输出模块IOB(I/O Block)和互连资源IR(Interconnect Resource),如图:

在这里插入图片描述
FPGA的结构主要分为两类:基于乘积项技术,EEPROM(或nash)I艺的中小规模PLD;以及基于查找表技术,SRAM工艺的大规模PLD。EEPROMI艺的PLD密度小,多用于5,000门以下的小规模设计,适合做复杂的组合逻辑,如译码SRAM工艺的PLD,密度高,触发器多,多用于10,000门以上的大规模设计,适合复杂的时序逻辑,如数字信号处理和各种算法等。

3.FPGA流程

以下是FPGA的设计流程图:

在这里插入图片描述

3.1 系统级设计

主要是对电路的系统级功能的划分,从系统级这个高层次对电路进行定义,对电路的预期功能进行分析,将电路划分为各个子功能块,这个系统级设计只是概念级的设计,相当于设计出电路的整体架构,并不需要硬件信息,只需要要设计完之后,对电路的架构进行验证,以满足预期的电路功能。

3.2 RTL级设计

对电路的功能进行系统级设计完成后,需要用硬件描述语言,如Verilog,VHDL等,对电路的各个功能模块进行硬件编程,最终让整个电路功能以硬件描述语言来表示,这个层次需要通过电路仿真工具以硬件描述语言描述的电路进行功能仿真,以保证电路在这个设计阶段的功能正确性。

逻辑综合:这一层次的功能在于通过逻辑综合工具如synopsis的DC来将RTL级的电路描述自动转化成以与门,或门,非门,异或门等门级描述的电路,逻辑综合工具包含了对电路的优化,所以逻辑综合工具的好与坏对最终设计出的电路性能有着重大的影响。

3.3 工艺映射

这一层次的功能在于将门级描述的电路通过与芯片设计工艺相关的库映射到工艺相关的器件中,在ASIC设计中,选用的工艺库不同,则映射后的结果也不相同,而对于FPGA来说,工艺映射是将门级电路映射成FPGA芯片中的LUT(Look-Up Table,查找表)中。

3.4 打包

这是ASIC设计流程不需要的步骤,而在FPGA设计流程中,打包的目的在于将FPGA电路的LUT打包成FPGA芯片中更大的单元Slice中。打包模块非常重要,可以基于不同的目的,如面积最优,时序最优等指标选择相应的打包算法,所以不同的打包算法,最终得到的电路性能也会有极大的差异。

3.5 布局布线

布局的功能在于为电路的每一个单元寻找合适的位置,使得用户对电路的约束条件得以满足,对布局的优化,可以使电路的性能得以提高,比如,电路的延迟等。布线则是在布局将电路的各个单元放到芯片的合适的位置之后,对电路的各个单元之间进行线网的连接,布线算法会根据布局之后的结果进行分析,找到最适合的线网通路,来实现整个电路结构的连通。对于布线算法,同样有根据不同的优化目标,如时序,功耗等,来对电路进行性能优化。

3.6 位流生成

位流生成是FPGA设计流程中的步骤,对于ASIC而言,是版图生成。这一步骤是整个自顶向下设计流程中的最后一步,对于FPGA来说,这一步骤会生成能下载到FPGA芯片中位流,这样FPGA芯片中即能形成相应的电路结构以实现预期的电路功能。而对于ASIC,则会生成一份可以用于流片的版图。

4. EDA工具重要地位

在现代超大规模集成电路设计中,若仅仅依赖手工对集成电路进行设计,则产品从设计到上市会经过很长的开发周期,这不仅浪费了大量的人力与成本,同时会让产品在同行业的竞争者中失去竞争价值。随着EDA工具的诞生,集成电路产品的更新换代加快,也让集成电路的设计过程变得不再复杂。通过EDA工具,原先设计好的优化过的电路结构可以直接使用,而不需要重复设计,这使得集成电路设计周期变短的同时,保证了集成电路的性能。现代集成电路产品主要分为类,即ASIC和FPGA。相应的,对应于这两类集成电路的EDA工具也是现在的主流从集成电路设计方法来看,自顶向下的设计方法已经取代原先的自底向上的设计方法成为现代主流的集成电路设计方法,所以EDA工具中所包
含的设计流程主要是自顶向下的设计流程。

以上文章参考自:
【1】2008年西电王晓光硕士毕业论文–基于FPGA的逻辑综合方法的研究与设计
【2】2014年复旦黄郑硕士毕业论文–基于NPN的函数快速分类方法

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值