在现在这个大背景下,集成电路设计发展趋势越来越好,许多公司都在积极开发能够实现移动端,汽车端,消费类电子端的智能硬件。
尤其对于移动端人工智能硬件的实现方法,有两大流派,即FPGA派和ASIC派。
对于大多数微电子专业的同学来说,在毕业季时,选择FPGA还是AISC,是一个极为纠结的问题,一来是学校里大多做的都是FPGA项目,二来对两者缺乏了解,没有一个对职业发展的正确判断。
今天就来聊聊FPGA和ASIC在各个维度上的区别。
一、FPGA和ASIC有哪些异同?
很多入行不久的朋友潜意识里会认为FPGA是很高深的东西,能掌握FPGA的一定都是极其厉害的人。
其实,这是一个误解。
我们所讨论的FPGA只是基于已有的FPGA芯片去做后端排列组合的工作内容,而不是设计制造新的FPGA芯片,世界上能做这件事的公司屈指可数。
FPGA开发流程遵循ASIC开发的流程,都是集成电路方向,coding使用的编程语言和编程逻辑基本一致,绝大多数电子类硬件产品,能使用FPGA做出来,就能用ASIC做出来,通过两种方式都能实现同样的功能。
二、FPGA和ASIC在设计层面的比较
FPGA和ASIC区别更多的体现在做设计的一些细小的方面,ASIC的设计规模通常远远大于FPGA的,运行时钟也远远高于FPGA,门电路数量上也有差别。
而且,ASIC只有一次机会,FPGA因为可以编程,所以coding的灵活性相对提高。仅仅从RTL设计上来说:
(1)ASIC对编码风格和编码技术的要求更高,为了有利于后端以及后续的check,这就要求所有模块的coding风格要一致。
(2)ASIC做逻辑设计更趋于保守,对代码的任何改动都要很谨慎,并且要做备选的选择,以防改错。RTL的任何修改几乎都是增量修改,即便以前的逻辑错了,也不会删掉,而是多做一个分支。
(3)ASIC设计对时钟和复位更加重视。尤其是时钟,对ASIC的设计非常关键,复位对扫描链测试(DFT)又很关键。ASIC在这方面都需要采用库来进行设计。ASIC通常不会用counter分频,这样会导致时钟不干净,除非是很低频的时钟。ASIC对于跨时钟域的信号处理也谨慎很多。对于clock的关闭和打开也需要严格检查。
(4)ASIC要考虑SCAN测试和BIST的问题,所以设计的时候还需要为SRAM做BIST插入,需要为SCAN预留接口,虽然大部分都是工具干的,但是经常RTL作者也要手动做一些顶层工作,比如SCAN时钟的来源等逻辑。
(5)FPGA有很多用现成IP,需要考虑开发板上的资源合理的利用,不能把某一资源撑爆了,而且FPGA存在资源浪费问题。ASIC很少考虑这种问题,ASIC考虑的永远是性能和功耗,在逻辑选择上除了SRAM,CLK和复位相关,都是手写的,逻辑基本没有浪费,也更加紧凑。
三、FPGA和ASIC在市场需求上的差异。
FPGA主要用于要求快速迭代或者小批量产品,或者作为ASIC的算法验证加速。
ASIC用于设计规模大,复杂度比较高的芯片,或者是成熟度高,产量比较大的产品。
1、上市速度:FPGA上市开发周期短,上市速度快,ASIC开发周期长,上市速度慢。
2、产品性能:FPGA产品性能较低,存在资源浪费。ASIC产品性能高。
3、开发成本:开发成本在这里需要看是小批量生产还是大批量生产,举一个很简单的例子,小批量生产可以请几个熟练的师傅,买好材料,手工做几个产品。但是大批量生产呢,适合流水线作业,这样单个产品的成本会比较低。
一些对价格不是很敏感的地方,比如企业应用,军事和工业电子等等(在有些地方可以重新配置真的很重要)。而ASIC也有一定的可重配置能力,在设计的时候把电路做成某些参数可调的即可。ASIC大批量生产致使低成本。适合电子消费类应用,而且在消费类电子中现在现在来说是不可配置。
四、FPGA和ASIC的共通点
至于共通点,需要了解掌握FPGA应当具备以下能力:
1、需要有数字逻辑的设计思想 :针对任意一项具体的功能,如何组合你器件内的单元来实现,需要哪些单元?如何连接这些单元?各个单元之间连接的先后顺序如何?
2、一套从头到尾执行的设计环境(FPGA厂商提供的编译工具 - Lattice的Diamond、Intel的Quartus、Xilinx的Vivado)
3、一种连接你的逻辑思维和机器操作之间的沟通工具 - 设计语言(原理图、Verilog、VHDL等等)。
而设计思想和语言工具在ASIC上也是所必须的,说白了大家都要写Verilog,很多地方自然互通。
这也是为什么FPGA更容易往数字IC转行的原因。
更深层次的则是做RTL的工程师一定要往系统层面的工程师转,只在RTL和协议这条路上走下去,没有任何希望。
RTL出身的工程师,在这方面本身就具有一点点优势,而且从技术上来说,数字IC设计只会比FPGA更加复杂,同时更具竞争力:
- 更快的时钟
- 更统一的coding style
- 更严格的STA
- 更系统的仿真
- 更低的功耗
- 更少的可用资源
至于UVM仿真,即便不做IC,传统的FPGA工程师也应该有所掌握,一个系统的仿真对产品的开发和后期维护,节省的时间不可估量。
FPGA受限于环境因素,ASIC/SOC一定是之后发展的大趋势。
结语
FPGA 和 ASIC 各有所长,FPGA 的可配置性更适合科研、军工等应用,而 ASIC 的高性能和低成本则适合消费电子领域(包括移动终端)。
对于大多数在读的集成电路、微电子专业的在校生而言,IC设计各个细分的方向缺口更大一些,所以选择IC设计更好一些。