有人说FPGA和ASIC是一回事,这就跟认为种麦子的人一定会种水稻一样,这样的人低估了全人类的智慧,不管左脚还是右脚,随便用哪个脚趾头想一想就知道,如果是一回事,还用得着用两个名字吗?俗话说,不知道就不要说话,术业有专攻,专业的事交给专业的人去做。
首先,先大致了解下两者的概念。FPGA是Field-Programmable Gate Array的缩写,中文直译是可编程逻辑门阵列,是一种可完成通用功能的可编程逻辑芯片,用户可以在其上进行编程,实现某种逻辑处理功能。其中包含固定数量的逻辑块,这些逻辑块可在芯片制造后进行配置,即FPGA的可编程性。常见的FPGA芯片主要来自于Xilinx和Altera。
FPGA由若干可编程逻辑组件组成,设计人员通过HDL进行编程,实现特定的逻辑功能。常见的设计流程如下:
FPGA的设计流程与ASIC大致相同,但是在后端实现方面存在较大的差别,从而也会影响到前端设计考虑问题的方式不同。
ASIC是Application Specific Integrated Circuit的缩写,中文直译是专用集成电路设计,顾名思义,是一种为专门目的用途而设计的集成电路。其设计流程大致如下,在具体研制过程中,还涉及过个研制环节,在分工上相较于FPGA精细化。
下面将从验证和设计方面总结一些两者之间的差异。
1 设计方面
【硬件基础】
FPGA:是一种预先制造好的通用可编程芯片。它内部包含大量可配置逻辑块、可编程互连资源、存储块、DSP块、时钟资源等。FPGA设计是利用硬件描述语言(HDL)配置这些预制资源来实现特定功能。
ASIC:是完全根据特定应用需求,从晶体管级开始设计和制造的定制化芯片。ASIC设计是创造一块独一无二的芯片,里面只包含实现目标功能所必需的逻辑门、存储器、模拟电路等,没有任何冗余的可编程资源。
【流程与复杂度】
FPGA设计流程:相对简单快捷,主要为: RTL设计 -> 功能仿真 -> 综合(映射到FPGA厂商提供的标准单元库/原语)-> 布局布线(FPGA工具自动完成) -> 时序分析 -> 生成比特流 -> 下载到FPGA芯片。物理设计自动化:FPGA厂商已经完成了最底层、最复杂的物理设计(晶体管的排列和互连)。设计师只需关注逻辑设计,布局布线由工具自动处理(虽然也需要约束和优化)。
ASIC设计流程:极其复杂漫长,包含复杂的设计流程环节,主要有:RTL设计 -> 功能仿真 -> 综合(映射到目标工艺的标准单元库)-> 物理设计 -> 物理验证(DRC/LVS)-> 时序签核(STA)-> 功耗签核 -> 生成GDSII -> 流片(Tape-out)-> 制造(Fab)-> 封装测试。其中物理设计挑战巨大:设计师(或后端团队)必须手动或高度指导工具完成芯片的物理布局、时钟树构建(确保时钟信号质量)、电源网络设计、精细布线等工作,并满足严格的时序、功耗、面积、噪声、可制造性要求。这是ASIC设计中最耗时、最复杂、成本最高的阶段。
2 验证方面
【验证对象】
FPGA验证:验证的对象是在可编程逻辑器件(FPGA)上实现的设计。FPGA本身是一个已知良好、可重复编程的芯片。关注的验证内容是设计代码映射到FPGA器件后的功能行为。
芯片验证:验证的对象是最终将要流片制造的定制芯片(ASIC或SoC)** 。验证必须确保设计的RTL功能的正确性,并在目标半导体工艺、工作电压、温度范围下都能满足时序和性能要求。
【验证目的】
FPGA验证:
- 功能正确性:确认RTL级别的功能逻辑是否符合预期。
- 系统集成:在实际硬件环境中,与真实的外设(存储器、接口、传感器、处理器等)进行交互,验证系统级集成和接口协议。
- 软件开发与固件验证:为嵌入式软件/固件工程师提供实际的硬件平台进行开发和测试。
- 性能评估:在真实硬件上评估系统性能(吞吐量、延迟),但受限于FPGA架构和速度等级。
- 早期市场验证/演示:用于客户演示或早期产品原型。
芯片验证:
- 流片正确性:流片后芯片功能性能满足要求,这是终极目标。确保设计在目标工艺、PVT条件下满足所有功能、时序、功耗、可靠性、可测试性等要求。一次流片失败的成本极其高昂。
- 覆盖全面性:需要覆盖所有可能的边界情况、极端时序路径、异步接口、低功耗状态转换、制造缺陷模型等。目标是“零缺陷”或尽可能接近。
- 精确建模:需要在RTL仿真过程中精确 必须精确仿真模拟芯片的功能,在后仿真时,精确验证时序特性,模拟物理效应(门延迟、线延迟、串扰、电源噪声、温度效应等)。
【迭代速度】
FPGA验证:发生在设计中期到后期,迭代速度非常快。修改RTL后,经过综合、布局布线、生成比特流,再下载到FPGA器件上测试,通常只需要几分钟到几小时。这使得快速调试和功能探索成为可能,所以FPGA验证也常用于芯片的原型验证。
芯片验证:发生在芯片设计前期(功能仿真)和后期(时序仿真)设计后期,流片(Tape-out)之前。是流片前的一道重要的质量关卡。迭代速度极慢。一旦流片,制造过程需要数月时间,如果发现重大错误,代价是灾难性的。因此,必须在流片前通过极其严格的验证流程确保无误。
【验证方法】
FPGA验证:
- 主要方法:硬件在线测试。将设计下载到FPGA开发板或原型板上,连接真实外设进行测试。常使用FPGA配套的仿真工具进行模块级或小规模的系统级验证。功能验证是核心。
- 时序验证:依赖FPGA工具的静态时序分析报告和在板测试。受限于FPGA的固定架构(布线资源、时钟树),无法精确模拟ASIC的定制时钟树和布线延迟分布。
- 功耗验证:可以测量FPGA的实际功耗,但这反映的是FPGA实现的功耗,而非最终ASIC的精确功耗模型。
- 物理效应:基本不考虑(由FPGA结构决定)。
- 覆盖率:关注功能覆盖率。
芯片验证:
- 主要方法:大规模功能和时序仿真(基于门级网表+标准单元库+时序信息(SDF)的后仿)、形式化验证、静态时序分析、功耗分析(动态/静态功耗评估)、物理验证(DRC/LVS)、DFT验证(ATPG, 扫描链测试)。功能、时序、功耗三位一体,缺一不可。
- 门级精度:后仿真在门级网表上进行,结合精确的时序信息(SDF,仿真模拟实际硅片的延迟)。
- 极端条件:必须在各种PVT Corner下进行验证(快工艺角/慢工艺角、高电压/低电压、高温/低温)。
- 低功耗验证:使用UPF验证复杂的电源关断、电压调节、状态保持等机制。
- 物理效应:必须考虑信号完整性(串扰、IR Drop)、电迁移等物理设计带来的影响。
- 覆盖率:追求极高的功能覆盖率和代码覆盖率。
- 可测试性:必须验证DFT结构(扫描链、BIST、边界扫描)是否正常工作。
3 物理实现
FPGA物理实现:是对固定硬件资源的编程,FPGA芯片出厂时已包含大量逻辑块(CLB)、布线开关、BRAM、DSP等固定物理资源。其物理实现过程只是通过EDA工具将用户设计映射到这些预制资源上(如同在乐高底板上拼装结构)。FPGA布局布线高度自动化(工具根据FPGA架构自动映射),工程师仅需设置时序约束。在时钟树设计方面,FPGA使用厂商预制的全局时钟树,用户只能有限配置。在时序收敛方面,只需通过时序收敛(STA),主要面对的挑战有:布线拥塞导致时序违例、 固定DSP/BRAM数量限制设计规模等。
ASIC物理实现:是从无到有的芯片建造,从标准单元库(与非门、触发器等)开始,在空白硅片上精确放置晶体管,绘制金属连线,构建时钟树和电源网络。需考虑制造工艺的物理规则(如光刻精度、金属层堆叠)。ASIC布局布线需人工深度参与,需要规划模块位置(Floorplanning)、优化关键路径、平衡时钟偏斜等。在时钟树设计方面,ASIC需从头合成多级时钟树,确保低偏斜(Skew)和功耗。在时序收敛方面,必须通过上百项DRC(设计规则检查)、LVS(版图-原理图一致性)、电学规则(ERC)等,否则无法流片。主要面对的挑战有:信号完整性问题、物理效应建模等。
4 成本和风险
【FPGA】
成本相对较低(主要是FPGA开发板、工具授权、工程师时间)。风险在于可能遗漏一些只有在ASIC实现或极端条件下才会暴露的深层问题,但迭代成本低。没有高昂的流片费用。
【芯片】
成本极高(验证工具、服务器资源、大量工程师时间,尤其是流片本身的费用)。风险极高。验证不充分导致的流片失败会造成巨大的财务损失和项目延期。因此,芯片验证的投入(人力、时间、计算资源)远大于FPGA验证。流片费用(数百万至数千万美元,随工艺节点先进程度剧增)、掩模版制作费、测试开发费等。
5 性能、功耗与面积
【性能】
ASIC >> FPGA:ASIC的电路是专门定制的,布线是优化的,没有可编程互连带来的额外延迟。时钟频率可以做到GHz级别(尤其在先进工艺下)。
FPGA:受限于预制结构和可编程开关的延迟,通常运行频率远低于同工艺的ASIC(几百MHz常见,GHz级较难且功耗很高)。
【功耗】
ASIC << FPGA: ASIC可以采用最先进的低功耗设计技术(门控时钟、多阈值电压、电源关断、近阈值电压设计等),晶体管级优化,静态功耗极低。
FPGA:静态功耗相对较高(可编程结构即使不用也会耗电),动态功耗也由于更长的互连和更多的开关资源而高于同等功能的ASIC。
【面积/集成度】
ASIC << FPGA: ASIC只包含实现功能所需的逻辑,密度极高,在相同工艺下,面积远小于实现同样功能的FPGA。
FPGA:包含大量冗余资源(LUTs, Flip-Flops, Routing Switches)以保证灵活性,导致芯片面积大、集成度相对低。
【灵活性】
FPGA:灵活性极高,设计可以在任何时候通过重新编程(下载新的比特流)进行修改、升级或修复错误。支持现场更新。
ASIC:零灵活性,芯片一旦制造完成,功能就固定了,无法修改。任何设计错误或功能更新都需要重新流片,代价巨大。
【上市时间】
FPGA:上市时间短,开发周期短(几周到几个月),无需等待漫长的制造过程。非常适合快速原型验证和需要快速上市的产品。
ASIC:上市时间长,从设计开始到最终芯片量产,通常需要1-3年甚至更长时间(包含复杂的后端设计、流片、制造、封装测试)。
【风险】
FPGA:风险较低。设计错误可以通过重新编程快速、低成本地修复。没有流片失败的风险。
ASIC:风险极高。流片失败(功能错误、时序违例、功耗超标、物理设计缺陷等)意味着数千万美元的损失和至少6-12个月的项目延期。验证必须极其充分。
6 选择
【选择FPGA】
- 需要快速原型验证设计。
- 产品需求可能变化或需要现场升级/重配置。
- 产品生命周期短或上市时间至关重要。
- 生产批量不够大,无法分摊ASIC的高昂NRE成本。
- 项目预算有限,无法承担ASIC的流片风险和成本。
- 系统需要高度并行处理且对绝对性能/功耗要求不是极端苛刻。
【选择ASIC】
- 追求性能(速度)、功耗、面积/成本(在大批量时)。
- 产品定义非常稳定且生命周期长。
- 预期生产批量非常大(通常数百万片以上),足以摊销巨额的NRE成本。
- 有足够的资金、时间、技术能力应对复杂的设计流程和高风险。
- 目标市场对尺寸、功耗有极端要求(如手机SoC、可穿戴设备、高性能计算芯片)。
总之,FPGA是用现成的“乐高积木”(预制资源)快速搭出你想要的“房子”(功能),灵活可变但不够精致高效;ASIC是请建筑师和工人从烧砖(晶体管)开始,完全按照你的蓝图定制建造一座“摩天大楼”(芯片),一旦建成无法更改,但性能、效率、大批量成本碾压乐高房子。 两者各有优劣,选择取决于具体应用场景、预算、时间、风险承受能力和性能要求。现代复杂系统设计中,常利用FPGA进行ASIC的原型验证和早期开发。
END
作者:nanoty
文章来源:硅芯思见
推荐阅读
更多 IC 设计干货请关注IC 设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。