FPGA芯片架构设计与实现(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-09 03:37:43

点击下载

作者:余乐,谢元禄

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

FPGA芯片架构设计与实现

FPGA芯片架构设计与实现试读:

前言

从2006年9月在北航攻读集成电路设计专业硕士开始,至2015年4月从中科院电子所微电子学与固体电子学专业博士后出站,恍惚间,从事集成电路相关的设计和研究工作已经十年了。这十年也正是中国半导体行业,更确切地讲,是集成电路设计行业飞速发展的十年。

记得刚读硕士时,接触到人生第一块FPGA开发板,用的是Xilinx公司的Spartan3系列。从点亮第一个跑马灯例子的兴奋,到一步一步跟着JPEG解码设计小组完成逐个模块的设计,验证和调试,阻塞赋值与非阻塞赋值,竞争与冒险,建立和保持时间,等等,看着一个个小知识点被融入到自己的设计中,成就感油然而生。就这样,调试正确时的兴奋和无法找到Bug时的煎熬,交织在每一个奋力调试的夜晚。

毕业后,进入了一家日资的集成电路设计公司,开始了全职从事专用芯片的设计和验证工作。其间,我意识到代码设计仅仅占到整个开发过程的一小部分,系统规划、设计流程和文档规范性对开发工作而言才是重中之重。在日资公司的这一年,我完成了数个模块级的设计和一个全芯片系统级验证工作,积累了丰富的实战经验,这也是我职业发展的起点。

此后,在中科院电子所攻读博士学位和博士后的六年,一直从事FPGA芯片的设计与研制工作,并有幸加入国内从事FPGA芯片设计最顶尖的团队——可编程芯片与系统研究室。从芯核组、I/O组再到产品组,我对于如何设计一颗好的芯片的理解也在逐步加深。

所谓不忘初心,方得始终。虽然现在我已经离开了中科院系统,进入了大学任教。在成书过程中,以前可编程芯片与系统研究室的各位同事都给了我很多帮助,其中,孙嘉斌、李威、王一、黄志红、张甲、陈柱佳、舒毅的设计和仿真实验是构成本书的基础,非常感谢他们无私的帮助。感谢我的导师杨海钢研究员,他一直以努力工作的实际行动给我以最有力的鼓励和鞭策,使我不能懈怠。

目前,市面上关于FPGA的书都是基于FPGA的应用设计方面的介绍,而关于FPGA芯片设计的书籍尚未出版,本书的出版恰好填补了这项空白。

本书基于集成电路的全定制与自动化混合设计流程,系统地剖析了一颗FPGA芯片从架构规划、模块设计、系统验证、流片到封装与测试的全过程,并对其中的核心模块详述了电路级设计与实现方法。全书共10章,其中第1章阐述FPGA架构的总体设计;从第2章开始分类介绍各种核心模块的设计、仿真和验证过程等。

在成书的过程中,感谢北京市自然科学基金委、电子工业出版社和本书的责任编辑大力支持,本书才得以与广大读者见面。

此书错误疏漏之处恳请广大读者批评指正。同时也欢迎大家就FPGA芯片的开发与设计相关技术与作者交流。余 乐2016年12月于北京第1章FPGA架构总体设计1.1 FPGA芯片研制流程

FPGA芯片的研发面临技术难度大,产品复杂度高,产品可靠性与环境适应性要求严格,产品的工程化与实用化要求高等挑战。目前,集成电路的研发从技术路线上可以划分为产品软硬件设计、芯片制造、产品晶圆级测试、芯片封装、样品级电测试、可靠性试验应用验证几个环节,各环节对应的支撑保障条件如图1.1所示。图1.1 集成电路研发流程与保障支撑条件1.1.1 芯片设计

在设计环节,研制单位主要开展相关领域设计方法、设计原理、设计实现详细式样书等,包括功能与性能设计、仿真、验证,相关产品架构和体系结构设计,特征参数(功能指标、特殊功能、特殊接口等)设计、环境适应性和可靠性设计(高低温热设计、防闩锁、电磁兼容性、冗余设计、ESD设计、长寿命、机械特性等)、可测性设计、封装设计等技术、控制标准与规范研究。建立健全设计技术和过程控制体系,确保产品设计的正确性、技术成熟性与可重复性,设计过程完整性、可靠性、可追溯性,最终形成完整的设计交付数据和与产品相关的质量与可靠性保障。

具体设计环节的流程如下。

1.需求分析

针对用户需求、合同书、任务书、技术协议书的规定进行需求分析,完成需求分析报告和风险评估报告。

2.确定产品基线和设计规格

根据需求分析报告,从产品优化的角度出发,合理选择集成电路工艺,确定最小线宽以及芯核,芯片外围I/O电压,封装形式等设计基线,确定产品具体设计规格和机电热接口。

3.概要设计

完成产品架构和体系结构设计,包括电路模块功能定义、模块划分、各模块间接口定义、整体版图布局规划、模块版图布局规划、金属层使用等内容,完成概要设计报告。

4.设计阶段

出于项目管理的需求,设计阶段需要大量芯片项目数据管理软件,用于管理产品设计中专业EDA工具生成的原理图、版图等重要数据及大量版本信息。设计阶段可细化为以下几个部分工作。(1)功能模块前端设计与验证。

根据概要设计报告,完成可编程逻辑电路模块、IP模块、I/O及接口电路模块和时钟管理系统等模块的前端电路设计和代码设计,并完成前端仿真。必要情况下,可能通过设计测试芯片进行硅验证的方法对电路进行验证。(2)系统级前端设计与验证。

根据架构和体系结构设计要求,完成全芯片原理图,根据原理图提取系统级模型并进行全芯片的系统级仿真。(3)封装设计。

根据需求分析报告和产品设计规格,进行芯片PAD排布和封装管壳设计,封装设计与整体版图规划、面积预估、高可靠加固和可靠性设计是密不可分的,当完成管壳设计后,将进行PAD与封装管脚对应设计,最终完成该产品的封装预评估。(4)可靠性设计。

根据可靠性保障大纲,针对军用宇航级FPGA要求,将对ESD、长寿命、热设计、机械应力分析等方面进行可靠性评估与设计,最终完成可靠性设计方案。(5)可测性设计。

通过对产品电路结构的分析,在已有设计的基础上加入可测性结构,通过插入扫描链、BIST、专用测试电路的方法。通过仿真,完成故障覆盖率的统计和分析,满足针对加工过程中生产缺陷的测试要求。(6)全芯片电路级仿真。

在前端设计完成后,将对顶层原理图进行电路级建模和仿真,目的在于查找设计错误和缺陷。(7)后端版图设计与验证。

完成前端设计和电路级仿真后,将针对各个模块进行后端版图设计,并根据版图设计结果进行包含寄生参数的后端仿真,验证电路功能,评估电路性能。完成各个模块版图设计后,将进行整体版图拼接和DRC/LVS天线效应等物理验证。

5.固化设计状态

通过物理验证的芯片版图数据,将固化其设计状态,并进行流片前的数据检查,最终向代工厂商提供流片数据。1.1.2 芯片制造

芯片制造环节一般也采用外协形式完成。针对产品的特点、质量与可靠性要求,确保产品的生产加工外协过程的可控性、稳定性、一致性、可重复性,生产稳定批量生产的圆片。1.1.3 芯片封装

芯片封装环节一般也采用外协形式完成。针对产品的封装特点、质量与可靠性要求,开展产品封装外协要求、质量要求、外协厂家选择、外协过程控制等规范研究。管壳、盖板等采购控制规范研究。建立健全封装外协技术、质量、过程等外协控制体系。管壳、盖板等采购控制规范,确保产品外协封装技术、质量、过程、可控性、稳定性、一致性、可重复性,完成稳定的批量产品封装。1.1.4 电测试

电测试围绕产品设计、生产、交付、使用全过程(含圆片、器件、可靠性筛选、用户验收与复验)进行,实现完整的功能测试、性能测试、参数测试、结构测试,实现特殊模块的高精度测试(高速数据接口、射频电路等),并完成对测试结果的综合分析。产品的全面电测试,具有测试与试验成本高、条件复杂、部分方法和标准不完善等难点。

电测试贯穿整个产品研发过程中,具体测试环节和测试内容如图1.2所示。图1.2 产品测试说明

1.编写测试大纲和测试方案

测试的各个环节中,首先要根据产品设计要求、技术规格说明和详细规范的要求,编写测试大纲和测试方案,要求实现满足产品全功能、全参数、全频率和满功率的测试。

2.功能测试

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。功能测试也叫黑盒测试或数据驱动测试,只需考虑需要测试的各个功能,不需要考虑整个芯片的内部结构。一般从架构出发,按照需求编写出测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用需求的要求。

3.参数测试

参数测试就是对芯片的各项参数指标,包括开路/短路测试,输出高低电平测试,输入高/低电流测试,输入漏电流测试,输出短路电路IOS测试,输出高阻电流、电源电流测试。

4.性能测试

性能测试是通过自动测试台模拟多种正常、峰值以及异常负载条件来对FPGA芯片的各项性能指标进行测试。负载测试属于性能测试的典型例子,通过负载测试,确定在各种工作负载下芯片的性能。目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

5.结构测试

通过逻辑阵列结构测试、互连资源结构测试、IOB结构测试、DSP结构测试和BRAM结构测试,判断器件是否存在架构缺陷,诊断和定位已有故障,剔除前期失效器件。

6.高低温测试

工业级产品的必要检测环节,测试不同温度环境对产品可靠性的影响,通常民品在0℃~70℃,工业级产品在-40℃~85℃,而军品则在-55℃~125℃。1.1.5 可靠性试验

研制单位将进行产品环境适应性研究,建立具有较高置信度的可靠性理论分析、失效模式和机理分析方法。同时,针对环境模拟试验技术进行研究,掌握产品可靠性和辐射试验方法;具备长寿命、抗静电、抗闩锁等可靠性试验方法;具备产品辐射试验与检测手段、辐射试验数据评估与判决、辐射效应仿真技术;完成用户认可的可靠性筛选、辐射试验与鉴定检测。

产品的可靠性试验与设计制造密不可分,产品的可靠性是通过设计和制造实现的。通过失效机理分析指导可靠性设计和可靠性制造,通过可靠性试验技术找出设计与制造中的缺陷,保证产品质量。在产品研发过程中,可靠性试验和辐射试验的具体试验项目如表1.1所示。表1.1 可靠性试验项目续表

产品可靠性试验流程如图1.3所示。图1.3 产品可靠性试验流程

可靠性试验和辐照试验工作环节需求如下:多通道静电测试仪、环境试验箱、速度应力系统、热流罩、高精度电源、芯片自动测试系统、高端逻辑分析仪、任意波形发生器、数字和混合信号示波器。1.1.6 应用验证

产品交付用户后,研制单位将协助用户完成电路开发。在用户的整机平台下完成系统内在线调试,解决可能出现的问题与故障,完成地面等效试验与飞行搭载。1.2 FPGA架构设计流程1.2.1 设计内容

需求分析。全面分析用户需求,以下达的任务书/合同书/技术书为准,完成需求分析报告。

确定产品设计基线及SPEC。确定器件设计工艺、封装形式、技术指标,完成产品规格说明书。充分讨论设计流程和技术途径,进行多方案比较和优化选择。考虑所选用元器件、原材料的供货情况。对可能采用的新技术、新器件、新工艺进行应用分析,完成风险评估报告。

体系结构设计与评估。规定器件规模和资源,进行模块划分,规定模块间的symboll设计。完成顶层原理图设计,完成verilog模型库设计。搭建顶层模型仿真平台,完成测试集仿真,完成体系结构评估报告。

物理原型实现。进行模块版图规划,规划模块版图尺寸、金属层使用、信号流向和接口坐标,完成概要设计报告。在设计初期应进行整体版图面积预估和布局规划,实现物理原型。1.2.2 设计方法

预研。定期针对架构设计内容、设计方法、调研内容、预研和试验等环节以组内技术讲座、报告的形式进行讨论,完成预研报告。

编写架构设计方案。编写系统架构设计方案需要完成:需求分析报告、产品规格说明书、风险评估报告、体系结构设计方案以及原理图设计/代码设计/版图设计,按照架构设计方案进行相关评估设计。

1.采用自顶向下的设计流程,设计FPGA顶层原理图

自上而下设计法从顶层原理图开始设计工作,与传统自下向上的设计方法不同。可以使用一个预规划工具(Flowplan)来定义每个模块的位置、大小等,然后通过综合工具生成、添加模块,再参考这些定义来设计相应的模块组件。

2.建立以原理图为基础的顶层verilog模型

顶层verilog仿真模型包括:全定制设计和自动流程设计两个部分。其中全定制设计,通过cadence的nc_verilog工具,需先建立各模块的verilog行为级描述代码,从原理图中提取结构性描述的verilog代码;自动流程设计模块在上述提取过程中是一个仅有端口verilog描述的空壳,需在保持端口对应关系的情况下,用实际verilog代码替换该空壳。完善和维护verilog模型库,重新整理和设计模拟电路模块的verilog模型。

3.对模块版图进行规划

规定模块版图尺寸和金属层使用、通道线宽和间距、屏蔽、电源网络规划、模块接口信号、PIN坐标和金属层使用,针对时钟网络、电源网络进行设计和评估。

体系结构评估与仿真验证。在已有的商业FPGA硬件结构基础上进行修改,采用verilog建模,实际布局、布线、配置进行仿真;使用FPGA结构描述文件,结合VPR进行评估,或自主开发评估程序建立解析模型,进行评估算法研究和程序实现。

整体版图布局规划。进行布局预估,实现物理原型,完成概要设计报告。

编写设计规范。整理设计内容,编写和完善设计规范,指导后续设计。

架构设计工具。FPGA VPR及VTR架构评估工具。1.2.3 工艺技术选择

1.设计工艺和封装形式

设计工艺。充分考虑工艺特征尺寸、电压、工艺成熟度、PDK、设计规划、标准单元库、标准I/O库、仿真模型库、特殊工艺模型(熔丝、FLASH、MIM电容、电感、ESD)、加工周期和经费,确定器件选用的设计工艺。

管壳和封装工艺。对可用的管壳和封装工艺进行分析,重点考虑以下几个方面;管壳管脚引线数量、物理尺寸、热阻、机电热特性、封装材料和引线涂覆、可靠性、供货能力、SOCKET、封装工艺要求和成品率、电装焊接难度、外协单位和用户建议和意见等。

这部分通常由外协单位综合考虑管壳设计方法、管壳加工工艺、封装工艺流程、管壳电学仿真分析和管壳热学仿真分析等,给出工艺确认(设计工艺、管壳及封装工艺)和设计约束(管脚数量,裸片尺寸、最大功耗)。

封装的作用是引出管脚、物理保护、环境保护、散热等。常见芯片一般采用塑料(Plastic)封装和陶瓷(Ceramic)封装。塑料封装一般都是非气密性的,称为弱密封性(Less hermetic),可以满足大多数商业及工业应用,一般由树脂或聚酰亚胺材料制成,陶瓷封装具有更好的气密性、散热能力、机械性能和耐腐蚀性,由于极端应用场合的要求,国产军用器件一般都采用陶瓷封装。

2.常见的封装形式

DIP(Dual Inline Package,双列直插),引脚在芯片两侧排列,如图1.4所示。

QFP(Quad Flat Package,四方扁平封装)。表面贴装塑封装的一种,引脚端子从封装的两个侧面引出,呈L形,引脚节距为1.0mm,0.8mm,0.65mm,0.5mm,0.4mm,0.3mm,引脚数最高可达256以上,如图1.5所示。图1.4 DIP封装图1.5 QFP封装

PGA(Pin Grid Array,针栅阵列),如图1.6所示。

BGA(Ball Grid Array,球栅阵列封装)。表面贴装模型封装的一种,在PCB的背面布置二维阵列的球型端子,而不采用针脚引脚。焊球的节距通常为1.5mm,1.0mm,0.8mm,与PGA相比,不会出现针脚变形的问题。封焊后需要进行植球,如图1.7所示。图1.6 PGA封装图1.7 BGA封装

CGA(Column Grid Array,柱栅阵列)。与BGA相比,焊球换成了金属短棒,封焊后需要进行植球。可以实现表贴电装货穿孔电装,如图1.8所示。

LGA(Land Grid Array,栅格阵列封装),与英特尔处理器之前的封装技术Socket 478相对应,它也被称为Socket T。主要在于它用金属触点式封装取代了以往的针状插脚。而LGA775,顾名思义,就是有775个触点,与CGA、PGA、BGA相比没有针脚,如图1.9所示。图1.8 CGA封装图1.9 LGA封装1.2.4 封装工艺(1)背面准备。减薄,背面金属化(简称背金)。(2)划片。晶圆分离为单个芯片。(3)拣片。通过光学仪器的目检,确定边缘是否完整,有无污染和表面缺陷。(4)粘片。普通芯片采用导电胶(含银环氧树脂)将DIE粘贴在管壳的粘片区,背金的芯片采用合金烧结的方式粘片。合金烧结工艺可靠性较高,但要求裸片尺寸不能太大。(5)压焊。包括线压焊(Wire bond)和倒扣焊(Flip chip)。

线压焊。采用金属引线将DIE的PAD与管壳的键合指连接;一般采用热超声球焊的压焊方式。金铝键合存在可靠性问题,键合会随高温产生合金。接近200℃时,金铝之间将快速形成紫色和白色的AuAl、2AuAl、AuAl、AuAl等化合物,脆且电阻大。2525

倒扣焊。用PAD上的凸点来代替金属线,将芯片翻转过来后对金属凸点的焊接实现电路连接,允许芯片设计中PAD放置在芯片的外围或内部。由于针对倒扣焊接形式,显微镜下进行可靠性检查是非常困难的,其在航天领域是被禁止采用的工艺。(6)封帽前检查。目检管壳内压焊完成的芯片。检查的标准是管壳内芯片压焊位置、玷污情况、粘片质量和压焊质量。(7)封帽。金属盖板与管壳焊接至一起。封焊材料AuSn,封8020焊方式采用平行封焊。(8)电镀。为增加封装体的外部引脚在PCB上的可焊性,需要在外部引脚表面镀一层额外的金属。军品器件的涂覆材料一般为金。(9)切筋(塑料封装)。仅针对某些管壳和封装形式进行,经过简单的切条机器,切除引脚框架,引脚被剪切为同样的长度。(10)打标。一般用油墨或激光进行打标,油墨适用于所有封装形式,附着性好;激光打标很难改正。(11)植球或植柱。对BGA和CGA封装形式,最后要进行植球或植柱工艺。(12)首件测试。会对封装批进行首件的破坏性测试,包括键合强度、焊球平整度、焊球剪切、焊球拉脱、粗检漏、细检漏等。1.2.5 I/O排布、封装管脚对应

进行I/O PAD排布,复用管脚统计,了解管壳相关尺寸信息文档,完成封装管脚对应,进行封装预评估,需要完成如下步骤:(1)I/O排布工作需要的输入条件:

·版图面积预估

·封装能够使用的最小PAD window和pitch

·用户需求的I/O数量

·专用I/O和复用I/O统计

·封装管壳相关信息(2)输出文档:

·I/O排布visio文件

·封装管脚对应xls文件

·模拟键合图

·封装预评审报告

·更改日志

·I/O类型接口定义说明文档

其中,FPGA管脚定义如表1.2所示。表1.2 FPGA管脚定义

所有I/O命名均采用大写字母,只包含大写字母、数字、下画线;PAD号:共3位数字,从左下角000开始,顺时针排布;BANK号:B0~B7,只有UIO和VCCO GNDO具有BANK号,如表1.3所示。表1.3 专用I/O续表

BANK划分与供电策略。FPGA内I/O的排布是通过BANK划分来实现的,若干user I/O与电源I/O被划分为一个BANK。如图1.10所示,整个芯片的user I/O被分为8个BANK。BANK与BANK之间相互独立,每个BANK的user I/O可由不同电平的电源供电而不会相互影响。不同BANK的user I/O可配置为不同的I/O标准和电平标准,提高了user I/O使用的灵活性。图1.10 user I/O的BANK布局

由同一个电源供电的多个user I/O同时跳变时,会带来相当大的瞬时动态电流。由于PAD和封装引入的电感,这个电流可能会在电源轨线上带来压降,严重时会因逻辑电平降低而引发翻转,使电路工作失效。

采用划分BANK的方法对user I/O进行排布,可以有效改善这个问题。将FPGA中所有的user I/O划分为多个BANK分别进行独立的供电,用户在编程时将使用到的user I/O配置于不同的I/O BANK,可以控制每个BANK内同时翻转的user I/O的数量,降低瞬时的动态电流,也可以避免触地反弹现象的出现。对于没有使用到的BANK,还可以关闭该BANK的电源,能够有效降低功耗。

FPGA中的user I/O一般通过划分BANK的方式独立进行供电,为保证器件在输出大电流驱动片外负载的情况下能够正常工作,并且保证ESD放电现象发生时,电源轨线不会因瞬间的高热而熔断烧毁,I/O的电源轨线必须满足一定的宽度,且留有足够金属通孔(VIA)数量。在设计前期,由BANK内user I/O的数量、I/O最大驱动电流以及BANK内电源PAD的数量对BANK内电源轨线上通过的最大电流进行预估,根据Foundry提供的金属电流密度参数,设计合理的电源轨线宽度。

目前主流的FPGA产品无一例外都使用了划分BANK的方法对user I/O进行排布。随着user I/O数量的增长,BANK的数量也从最初的2个或4个发展到现在Virtex-6系列的最大30个I/O BANK的规模。

在FPGA中,一般都有多个专用I/O用于配置和测试。专用I/O的功能固定,在器件上电后无需配置就可完成其功能,所以需要专用电源对其单独供电。

如图1.11所示,根据FPGA中I/O的供电和使用特点,设计中结合芯片的PAD排布设计,对整个FPGA芯片的BANK布局进行改进,保持user I/O的8个独立BANK不变,在芯片的四角加入了专用I/O对应的4个BANK——BANK_A至BANK_D,将所有专用I/O和芯核电源都置于该BANK中,芯核电源的ESD保护电路通过该BANK的电源轨线对ESD放电电流进行泄放,而不通过user I/O对应的BANK进行泄放。由于从整个芯片上电起,专用I/O就由该BANK的电源I/O进行供电,不会存在为了减小功耗而切断该BANK电源的现象。图1.11 改进后的FPGA BANK布局

PAD设计。焊盘被称为PAD或BOND PAD,其尺寸相关的参数主要包括焊盘金属的尺寸、临近的两个焊盘之间的中心距(Pitch)、焊盘内通孔(VIA)阵列的尺寸(PAD window),如图1.12所示。图1.12 PAD尺寸

如图1.13所示,PAD的尺寸对I/O版图的影响非常大,直接决定了I/O的宽度——不能大于规则所规定的最小Pitch距离。一般来说Fourdry会提供PAD相关尺寸的建议值以及设计规则,但具体的PAD尺寸和排布还需经过封装厂商的确认。图1.13 单排(Inline)PAD排布方式的I/O版图布局

在芯片设计的前期,进行用户需求分析,确定整个芯片逻辑存量,在此基础上,对芯核的版图面积进行预估。此外,还需要确定整个芯片包含PAD的数量(包括user I/O、专用I/O、电源PAD等)。根据这些信息,结合PAD的尺寸,才能确定了I/O的基本版图布局模式,如图1.14所示。图1.14 堆叠(Stagger)PAD排布方式的I/O版图布局

预估的芯核版图是尺寸为KXL的矩阵,共有N个PAD。若N个PAD的Pitch距离之和不大于芯核版图的周长,整个芯片只采用单排的PAD排列方式,就满足所有PAD的排布,如图1.15(a)所示。

若N个PAD的Pitch距离之和大于芯核版图的周长,如果还按照单排PAD的排列方式,整个芯片会存在较大面积的浪费,如图1.15(b)所示。在这种情况下,出于制造成本的考虑,往往会采用堆叠结构的PAD排布方式,如图1.15(c)所示。图1.15 不同的PAD排布方式

PAD排布和封装管脚对应的设计流程如下。(1)有兼容性要求的情况下,调研分析对标产品的封装形式。完成对标产品管脚排布图和PAD封装对应设计。(2)对用户的需求和芯片设计规格进行分析,确认整个设计中I/O的种类、数量和功能,同时与封装厂商密切联系,确定芯片的封装形式和PAD尺寸、Pitch、Window等封装相关参数。(3)对芯核面积预估,统计专用I/O和复用I/O的使用情况,确认PAD功能和数量以及PAD排布的版图模式为单排还是堆叠。(4)按照I/O使用情况和芯核版图PIN坐标信息,进行BANK划分,进行电源I/O和user I/O排布。根据测试需求和配置需求,进行专用和复用I/O排布(重点)。(5)根据对标产品的封装设计,设计PAD排布和封装管脚对应关系,完成visio示意图和封装管脚对应的xls文件。确保电源I/O、关键专用I/O、复用I/O管脚功能、电平定义、I/O类型和位置完全一致,user I/O数量和差分的相应位置完全一致。(6)根据PAD排布坐标和封装管脚对应,进行管壳的开模设计(有兼容性要求且管壳需开模的情况下),使用AUTOCAD工具完成模拟键合设计,提交至封装厂商进行评估。

提供给封装厂商进行评估,所需的封装说明文档至少应包括以下内容。

·芯片PAD坐标:精确至0.005μm

·芯片PAD排布图:精确的PAD位置和裸片尺寸

·芯片封装管脚对应

·模拟键合图

·芯片Logo设计文档1.3 FPGA规模和资源划分1.3.1 模块划分

按照任务书或合同书要求,针对指标进行分析,在BLK4X4级别完成功能模块划分,如表1.4所示。表1.4 功能模块划分续表1.3.2 整体架构框图定义

规定设计逻辑资源,统一对排布坐标进行规定:BLK逻辑阵列规模、DSP模块数量及坐标、BRAM模块数量及坐标、PLL/DLL模块数量及坐标、IOE数量、其他功能模块,完成整体架构框图,如图1.16所示。表1.5显示了180万门FPGA的整体资源规划。图1.16 硬件架构框图表1.5 器件资源说明1.3.3 全局信号和重要接口信号定义

针对器件的全局信号和模块间重要的接口信号进行规定,确定其功能、高低电平、驱动与负载、位宽、输入/输出、信号流向,如表1.6所示。表1.6 全局信号和重要接口信号说明续表1.4 FPGA中功能模块划分1.4.1 可编程技术

可编程技术是FPGA的核心,采用不同类型的存储器实现可编程功能对FPGA器件的结构和性能有着巨大的影响。SRAM使用标准CMOS工艺设计加工,在FPGA中应用最为广泛;Flash/E2PROM可编程技术和反熔丝结构具有其独特的优点。本节将分别介绍这3种可编程技术,分析其优劣势。(1)SRAM编程技术。最基本的5管SRAM单元结构如图1.17所示,通过传输管控制存储信息的读写。当传输管导通时,SRAM单元内存储的信息可由数据端读取或改写;当传输管截止时,存储的信息被首尾相连的两个反相器锁定,由Q和Q'端输出。理论上,SARM单元可被配置无数次。图1.17 5管SRAM单元结构

FPGA中的SRAM单元主要实现以下功能:作为多路开关、交叉开关、互连通道等可编程结构的控制端,对信号的传输路径进行编程;对片内相对独立的逻辑功能模块(如可编程触发器、用户可编程I/O)进行配置;作为查找表(LookUp-Table,LUT)的存储单元,用来实现FPGA的逻辑功能;使用SRAM存储阵列作为嵌入式存储器,实现复杂的数字信号处理和存储功能。

基于SRAM单元的可编程技术存在一系列需要解决的问题:①断电后,SRAM存储的信息将全部丢失,所以通常使用外部非易失性存储器来存储相关配置信息,如Flash或E2PROM等;②上电复位后,配置信息需从外部存储器写入器件,配置信息有可能被截取;③SRAM单元用来控制传输管的导通或截止,对FPGA内的信号传输路径进行编程,传输管并不是一种理想的开关元件,对信号传输会带来相当大的阻性和容性负载,降低信号完整性。(2)Flash/E2PROM。编程技术Flash和E2PROM存储结构都具有非易失性的特点,即使关闭电源,内部的存储信息也不会丢失。Flash存储单元取消了E2PROM隧道型存储单元的选择管,结构更简单有效,可通过一个信号一次性擦除一个区域的存储信息,集成密度更高。基于Flash存储结构的可编程开关电路如图1.18(a)所示,配置晶体管和开关晶体管的浮栅(Floating gate)连接在一起,通过控制配置晶体管的栅极和源/漏极之间的电压,向其浮栅注入电荷,就可改变开关晶体管导通或截止状态。基于浮栅结构的开关晶体管截面图如图1.18(b)所示。图1.18 Flash交叉开关

与SRAM相比,Flash结合了非易失性和可重复编程的特点,上电后无须配置时间。用Flash结构替代FPGA中的5管或6管SRAM存储单元,可大大减少晶体管数量,降低静态功耗,整个器件的静态电流[1]可低至微安量级,而基于SRAM存储结构的主流商用FPGA产品,[2,3]静态电流普遍在毫安量级。

基于Flash结构的FPGA具有其自身局限性:①Flash存储单元擦写寿命是有限的,如Actel公司的PorASIC3系列产品,只能编程500次[4]左右,这个次数对于大多数FPGA开发应用来说是远远不够的;②Flash结构需要特殊的半导体工艺,无法在第一时间应用最新工艺技术,器件规模和密度也远低于基于SARM可编程技术的FPGA,目前基于Flash结构最大规模的商用FPGA器件,只有约300万系统门容[4]量,而最新基于SRAM存储单元的产品,容量可达数千万系统门[5];③同样具有传输管带来的信号完整性问题。(3)反熔丝编程技术。反熔丝结构在编程之前通常是开路的,通过编程,使反熔丝结构局部的小区域内具有相当高的电流密度,瞬间产生巨大的热功耗,将薄绝缘层介质融化形成永久性通路。反熔丝结构有两种,一种是多晶—扩散反熔丝,具有氧—氮—氧(Oxide-Nitride-Oxide,ONO)的介质夹层,简称ONO反熔丝,结构如图1.18(a)所示;另一种是金属—金属(Metal-to-Metal,M2M)反熔[6]丝,简称M2M反熔丝,结构如图1.18(b)所示。二者相比,M2M技术采用无源结构,具有更低编程电压和更小的电阻(20~[7,8]100Ω),是目前主流的反熔丝工艺。

采用反熔丝结构的FPGA具有非易失性、版图面积小、信号传输路径具有较小寄生电阻和电容、可上电后直接使用、信息安全性高等优点。由于不能重复编程,就没有系统级相关配置电路,相对于其他两种编程方式,开发成本更低。

反熔丝技术的局限性非常明显:①无法重复编程,不适用于新产品开发;②一次性编程不利于器件可靠性检测,编程后器件良率低于另外两种技术;③在不同工艺下,反熔丝材料的电性能具有相当大差异,在最新工艺节点下实现反熔丝结构非常困难。采用反熔丝结构的FPGA在工艺上往往要落后于最新的工艺节点,规模和密度也低于采用SRAM可编程技术的FPGA,目前最大规模的商用反熔丝FPGA产品[20]也只有约400万系统门容量。1.4.2 逻辑模块结构

FPGA中逻辑模块(Logic Block)的主要功能是为数字系统提供最基本的逻辑运算操作和数据存储功能,研究者们曾经提出过多种结[9][10][11]构:基于传输管、与非门、多路开关(MUX)、查找表[12]和多输入门阵列等。综合考虑功能、版图面积、速度和功耗等因素,目前FPGA中普遍采用的是基于LUT结构和基于MUX结构的逻辑模块。基于LUT结构的逻辑模块主要应用于SRAM存储结构的FPGA,基于MUX结构的逻辑模块主要应用于反熔丝和Flash存储结构的FPGA。

LUT可被认为是一个具有1位输出端的存储器阵列,存储器的地址线就是LUT的输入信号线,一个具有K输入的LUT就对应2KB的存储器。在FPGA中,LUT通常由SRAM实现,用户将逻辑功能的真值表通过编程的方式写入LUT中,可实现任意K输入的组合逻辑。

FPGA中的基本逻辑单元(BLE)由多输入的LUT组成,用以实现用户的逻辑功能。一个可行的提高FPGA逻辑密度的方法是将多个[13]BLE组成一列,构成逻辑模块(Cluster),在一个逻辑模块中共具有N个BLE,所有LUT的输入端连接到局部互连总线,整个逻辑模[14~16]块通过局部互连总线与其他逻辑模块传输信号。

LUT输入端数量与BLE延时、版图面积、结构设计复杂度等因素相互影响,相互制约,在FPGA结构设计过程中应综合考虑。研究者们对LUT输入端的数量和FPGA功能、性能之间的相互影响以及对[17~20]FPGA逻辑结构的优化进行了大量的探索和试验。Ahmed给出了同一个电路在采用不同规模LUT的FPGA经综合、映射、布局布线[17]后,延时特性和版图面积的比较——增大LUT输入端的数量使得同一个逻辑电路中关键路径上使用的BLE数量减少,能够更容易实现复杂逻辑功能,但BLE的延时却呈增大的趋势;同时具有K个输入的LUT对应2KB的存储器,意味着随着LUT输入端数量的增长,使得单个BLE的版图面积将呈现指数增长(Cluster呈平方增长)。此外,[21]LUT输入信号的互连线复杂度也随LUT的规模相应增长。

基于MUX结构的逻辑模块通过对一个2输入MUX的输入端和信号[11]选择端进行控制,可实现多种逻辑功能。一般来说,基于MUX结构逻辑模块的FPGA产品具有细颗粒度的特点,由于其布线的灵活性,其资源利用率相当高,但器件的规模和密度要远远小于基于LUT结构的FPGA。1.4.3 互连结构

互连结构为FPGA中逻辑模块之间、逻辑模块与I/O模块之间提供可编程的信号通路。在FPGA的发展历史上,出现过多种互连结构:[22,23]通道型互连结构(Channel-Style Routing Architecture)、层次[24]化互连结构(Hierarchical Routing Architecture)和孤岛型互连结[25]构(Island-Style Routing Architecture)。[26]

通道型互连结构如图1.19所示:水平通道在横轴方向上穿越整个芯片,提供水平信号通路;垂直通道在纵轴方向上为逻辑模块的输入和输出信号提供通路,或为处于不同层的水平通道之间提供信号通路;水平和垂直通道间通过交叉开关进行信号传递。图1.19 FPGA通道型互连结构

这种互连结构在通道交叉点处需要大量交叉开关进行信号路由,早期半导体技术条件下,只有反熔丝结构的开关能够满足这种密度要[27]求,故Actel公司推出的大部分基于反熔丝技术的FPGA,如ACT[28][29]系列、SX系列、MX系列等,都采用了这种通道型互连结构。用户根据设计需要,通过编程,将需要连接通路上的反熔丝开关导通,不需要的信号通路则保持关断状态。

层次化的互连结构,顾名思义是将整个FPGA的全局互连结构按[30]层次来进行划分。如图1.20所示,只有最底层的互连线段与逻辑模块直接相连,版图上位置靠近的底层互连线段组成局部数据通道,并通过更高层的互连线段进行连接,而顶层的数据通道具有最大宽度和数据吞吐能力,是最主要的数据传输路径。这样,各层次的互连结构具有可预测的延时特性,理想状态下同一个层次中的每根互连线段延时都是一样的。图1.20 层次化互连结构

凭借在商用CPLD器件领域取得的巨大成功,Altera公司将CPLD中层次化的互连结构引入其早期的商用FPGA产品中,如Flex 10K系[29][30][31]列,Apex和Apex II系列等。这种层次化互连结构具有很大的局限性:每根互连线段的延时在理论上都是相等的,用户无法通过改变信号路由调整时序电路中关键路径的延时。由于存在工艺偏差,实际每根线段的阻容参数总会存在差异,也就引起数据通道间延时的相对差别,使大规模时序逻辑电路的设计变得非常困难和复杂。当用户的设计使用了多个逻辑模块,且这些逻辑模块处于不同的局部数据通道之内,数据必须经过多个层次的互连线段才能进行传递,这加大了整个设计的延时。基于上述原因,商业FPGA逐渐放弃了层次化互连结构,而大多采用孤岛型互连结构。

孤岛型互连结构是目前FPGA中使用最为广泛的,其结构如图[32]1.21所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载