https://zhuanlan.zhihu.com/p/602627000

寒假和朋友小聚,每当就专业问题展开谈话,很容易形成“一边热火朝天,一边大脑宕机”的局面。俗话说隔行如隔山,虽然和不同专业的朋友彼此之间隔了座山,但还是希望不要因为这座山隔阂了彼此的交流,另外也想一次性回答完朋友对我专业(全名:集成电路设计与集成系统)的一些问题,所以我写下这篇文章,希望大家在看了这篇文章之后能对“集成电路”和“集成电路设计”有更多的了解。因为是科普性质的文章,所以有些内容没有那么全面,希望科班同学看到之后不要打我。接下来就让我们开始吧。

我的朋友(bushi

1、现代社会的基石

拿现在的社会和二十年前比,最显著的不同就是现在的人手上、兜里总有一部智能手机,顺带着家里可能还有电脑、游戏主机甚至 VR 眼镜等等。这些电子设备有无穷的魔力,大家点击屏幕或者敲击键盘,就可以让它们做出各种让人眼花缭乱的反应。像我现在在笔记本电脑上编辑这篇文章,就是通过不断敲击键盘实现的。

大家是否思考过手上的电子设备凭什么能做到那些事?其实这并不复杂,奥秘就出在电子设备的“电子”二字上。电子设备需要电力,手机、电脑在电力不足的时候会提醒大家充电,继续没电的话就会关机,这预示着电子设备内部有需要电的结构。那么什么东西是需要电的呢?是电路。

大家中学时候学过电路,电路最基本的组成包括电源、电阻、电容和电感等等。设计好一个电路,然后给电路一个电源,电路回路里就会产生相应的电压、电流。这些电压、电流是可以测量的。如果我们给特定的电压、电流值赋予一定意义,那么能产生这些特定电压、电流的输入电源也就有了意义。举个例子,假如我们手上有一个电路,这个电路在电源电压为 5V 时会输出 1A 电流,假设 1A 电流代表“yes”,那么当我们给电路输入 5V 电压,电路观测者就会测量到 1A 电流,继而了解到我们传递给他的“yes”信息,此时对于我们而言,“输入 5V 电压”和“传递 yes 信息给观测者”就彼此间画上了等号。通过控制输入,产生有意义的输出给观测者,从而传递信息,这就是电路的意义。

点击手机屏幕、敲击电脑键盘,这都是控制输入的过程。比如敲击键盘上的“A”,word 文档里就会出现大写 A 或小写 a,“按键盘上的 A ”就是对某个电路进行输入,电脑屏幕上出现 A 就是电脑“观测系统”对“该电路产生的输出”所做出的“解释”。下图是一个简单的说明:

图中的观测系统可以复杂,也可以简单,简单的观测系统就像是灯泡,当输出电压够高时,它就亮起。图中最关键的部分是中间的“电路”,这个电路可以接收各式各样的输入,并且能够根据输入产生对应的输出,只要用户给出指示(输入),它就能产生正确的回应(输出),它可以接收大家的“触摸”“敲击”,然后产生有意义的输出,继而通过输出控制一些东西,比如“灯泡”,从这个意义上看,“接收输入、产生输出”的电路就是电子设备的大脑,是电子设备中最有价值的部分。

但仅仅是电路就够了吗?马路旁电线杆上的电线,地底下铺设的电缆,这些也都是一些电路的一部分,这些电路和上面所说的电子设备有没有关系呢?很显然,没有关系,因为这些电路太大了!手机那么小,肯定没法容纳一把电线,所以电子设备内的电路肯定是很小的,这种很小的电路一般被称作“集成电路(Integrated Circuit,简写为 IC)”。“集成”暗示紧凑、密集,“集成电路”就是很小的电路,它们是那么的小,以至于可以被安装进手机、摄像头、蓝牙耳机里。现在走在大街小巷,大家可以看到无数或大或小的电子设备,这些电子设备的结构不尽相同,但内部都有集成电路。这就像是房子,房子不一定要有钢筋水泥,也不一定要有木制门窗,但是一定要有地基,从这个角度上看,集成电路就是信息社会当之无愧的地基,是现代社会的基石。

2、IC,你真的好小!

我说集成电路很小大家也没什么概念,所以首先让大家看图体会一下。注意看下图这个男人,他叫做小拜,他在呼吁漂亮国国会尽速通过芯片法案时,拿出了一颗芯片,这颗芯片是那么的小,目测只比他小拇指的指甲盖大一些......注意,大家平时说的“芯片”就是“集成电路”。电路是一种由电源、电阻、电容、电感等元件连线、组合得到的结构,集成电路是电路微缩化的结果,当我们把集成电路“印刷”在“电路板”上,这个“电路板”就被大家称作“芯片”。从小拜这张图里可以看出“电路板”是很小的。

拜登在国会上拿出一颗芯片

集成电路(为图方便,之后不写“集成电路”这几个字了,直接简写为“IC”)很小,理解这个很重要。提到电路很多朋友会想到“焊电路板”,这里澄清一下,“集成电路设计”专业的同学不用焊电路板,我也没学过类似技能。下图是一个焊电路板的示意图,容易看到“可以焊”的电路板是很大的,只有这样人眼才能看清焊的位置,工具才能准确焊到要焊的地方,如果换成小拜手里的芯片,光是电烙铁的头就能一次性点到几万个电路元件。再次注意,芯片真的很小,芯片里的电路不是手工焊出来的,也不能像搭积木一样用一堆人眼可见的零件组装得到。

一个人正在焊电路板

3、凭什么这么小?

相比于平时看到的电路板、面包板,芯片实在太过于小,其内部又十分复杂,这很容易引起发问:“芯片是怎么做的?为什么能做这么小?”

大家首先来理解这么一个过程:1)找来一块绝缘体/半导体,比如说硅(Si)块,它的形状最好比较规则,比如说方形,它的表面最好比较平坦、光滑;2)在半导体上用某些方法,比如用小刀刻出一条浅槽;3)另拿一块金属,对金属加热,使之融化成金属液体,比如说铜水,然后把铜水浇在表面有浅槽的半导体上,此时浅槽内和半导体表面就布满了铜水;4)然后再把半导体表面的铜水抹掉,没被抹掉的铜水就留在浅槽内冷却为铜固体,这时候再去看这条铜金属,毫无疑问,这就是一条金属导线。

印刷电路的过程

反复使用上面这种方法,我们可以在一块半导体上刻出无数导线,还可以在上面“挖穴”形成电阻、电容等电路元件。让这些导线和电路元件连接、组合,就可以形成电路,这个电路是刻在这块半导体上的,从视觉角度上也可以说这个电路是“印刷”在半导体上的。

上面说浅槽用刻的,但 IC 那么小,不可能用人眼看、用手握着刀刻,所以实际上需要用精密仪器去操作。我可以描述一下这个过程:1)在半导体表面铺上一层特殊的感光材料;2)拿一块事先准备好的部分遮光的板子覆盖在半导体上方,用光透过遮光板照射半导体,此时光束可以透过遮光板上不遮光的部分照射到底下的感光材料;3)照射一定时长之后撤去遮光板和光源,然后用酸碱溶液去洗感光材料,没被照射过的感光材料不会被洗去,而被照射过的材料则会被洗去,此时半导体上就出现了一条浅槽,之后可以用一些特殊的方式在这条浅槽里沉积金属线或者生成电子元件。

上面说的方法大抵上是对的,但还有茫茫多的细节没有展示,不过非科班的同学理解到这里就可以了。总的来说,芯片的制作方法是:在小块半导体上用精密仪器“刻出”电路。为了让 IC 尽量小,可以让光照的分辨率变得很高,从而刻出很细很细的导线槽和很小很小的电路元件浅穴。

这几年常说漂亮国制裁我们的芯片产业,其主要的火力就集中在上面提到的精密仪器上。没有荷兰、美国、日本的精密仪器,我们就不能把 IC 做到最小。在 IC 领域,小就是美,小就是省钱,小就是性能高,做不小 IC 会对我们的信息产业升级产生重大负面影响,进而降低人民群众的生活幸福感。

一台价值上亿美元的荷兰产光刻机

4、看看内部

前面说了 IC 的重要性、IC 很小和 IC 的制作方法,现在让我们进一步看看 IC 内部是什么样的。因为本文面向非科班的朋友,所以我不会过度解释电路结构,而只是简单说说,让大家对 IC 有个印象即可。

初高中学习的电路主要有电阻、电容、开关等等部件,利用这些部件可以组成各种各样的电路,但是出于各种现实原因,IC 并不会直接使用电阻、电容这些元件,IC 广泛使用的元件叫做 MOS 晶体管。

MOS 晶体管的特性比较复杂,以前的电路元件大多是两端口器件,比如一个电阻对外只接两根导线,而 MOS 晶体管是三端口(也可以说是四端口)器件,其中两个端口和以前的元件一样,是用来接导线、供电流通过的,还有一个端口是用来接收外界提供的电压的。接收电压的端口会根据提供电压的情况,调节这个元件的工作模式,比如外界给高电压,晶体管就等效为导线;外界给低电压,晶体管就等效为打开的开关。因为晶体管会根据外界电压表现出“开、关”特性,所以也可以称其为“电子开关”。

IC 就是由电子开关搭建起来的。为了快速搭建电路和系统,我们往往先搭建一些常用的电路,然后把这些电路抽象成一个个“黑盒子”,在设计电路时使用这些“黑盒子”即可。下面这幅图是一张用“黑盒子”搭建的电路,粗略地说,这个电路可以包含几万个“电子开关”,而它只是现代 IC 的一个小小组成部分。现代 IC 一般可以含有上亿个电子开关,苹果公司自主研发 M2 芯片有 200 亿个电子开关,阿里开发的倚天芯片有 600 亿个电子开关。

异步 FIFO 顶层框图

随着对电路的不断抽象,电路图可以看起来越来越简单,但其内部其实包含着星辰大海。为了设计出高性能集成电路,无数的架构师、设计师和验证工程师夜以继日、呕心沥血,同时他们也在这个过程中学会了养生、护发之术。

5、ICer的日常

上文提到 IC 设计专业不焊电路,而且现代 IC 极其复杂,包含的电子开关极多,那么在这种背景下,我们 ICer 平时都是怎么干活的呢?

首先说明一下,IC 是一个统称,实际场景中 IC 又可以分成数字 IC、模拟 IC、射频 IC 等等,因为我对数字 IC 比较感兴趣,所以这里主要说的是数字 IC。非科班的朋友分不清这几类电路也没关系。

言归正传。因为 IC 面积小、元件多,所以不可能靠人眼、人脑、人手来设计实现,这话很好理解:电子开关太小,人眼看不到;电子开关太多,人脑想不到;电子开关太密,人手摸不到。不能靠人,就只能靠机器了,ICer 的设计工作很大一部分都是交给计算机完成的。

计算机最擅长的就是处理抽象、复杂的问题。集成电路是如此复杂、庞大,我们不可能在图纸上用图形把电路画下来,所以我们想到可以先向计算机用“语言”描述自己所设计的电路,然后再由计算机“画出”电路图。用于描述电路的语言是精心设计过的,用于分析语言并生成电路的自动化软件也是可靠的,使用这种语言和这些工具就可以把 ICer 从画图纸的工作中解放出来,ICer 的日常工作也就变成了对着电脑“编程”(如果科班同学看到这里,请容许我用“编程”来替代“写 HDL ”)。

这种编程从形式上看和计算机专业同学的编程差不多,但两者其实有根本上的不同,多的细节不在本文赘述。下面这幅图展示了一些编程代码,平时 ICer 就是在编辑器里编辑这些东西,当编写完成,就把代码送到“绘画”软件中“画出”电路图。这里我说是画图,其实真实情况是生成一些特殊格式的文件,这些文件包含了电子开关的拓扑信息和电路的性能数据。

异步 FIFO 的部分 Verilog 代码

编写完代码和生成好特殊格式文件之后,还需要对电路做测试,这是一个耗体力、耗精神的工作,同样用代码实现。“测试”这个工作的门道很多,我目前还停留在“用肉眼看波形”的初级阶段。“波形图”会显示出电路输入、输出口的电压变化,测试人员可以控制输入电压,然后查看输出电压,如果输出口的电压和想象中的一样,那么电路就是功能正确的。下面是一个典型的波形图,绿绿的那些就是波形。

波形图,最左边是变量名,绿色线条是波形

测试通过之后,就可以把与代码对应的的特殊格式文件交给版图工程师,这些人会根据文件信息绘出电路图。这次是真的绘出电路图,他们需要把每个电子开关的类型、尺寸、相对位置确定好,这个工作比较枯燥、机械,一般不由 IC 设计专业的同学完成。电路图绘制好之后就可以送往芯片制造厂,这些制造厂有一大堆前文提过的精密仪器,他们用这些仪器根据电路图制造出实物芯片。制造厂主要需要工艺人才,不是 IC 设计专业同学理想的工作去处。

编代码、做测试不是 ICer 的全部日常,归根结底,“用代码向计算机描述电路”只是把头脑中的设计转化成代码的过程,在写代码之前,ICer 必须先有一个设计图,这个设计图可以是用黑盒子构建起来的电路框架图,也可以是一些抽象的东西(比如状态机,非科班的同学不必了解)。为了有这个设计图,ICer 必须花很多时间看需求文档,并且根据需求设计出合适的电路架构。有时候 ICer 要使用别人设计的“黑盒子”,这个时候他要去看别人提供的电路功能说明书和配置说明书。需求文档、功能说明书、配置说明书,这些基本上都是英文的,而且动不动就是几百页。下面展示了一个小型电路模块的功能说明和配置说明文档,可以看到它有超过 180 页的内容。

赛灵思提供的异步 FIFO 的 IP 文档

除了面向“芯片”做电路设计,也可以面向“开发板(FPGA,非科班朋友不必了解)”做电路设计。开发板实物可以是下图这样的,它有电源接口,还有对外暴露的导线接口。开发板初始的时候没有任何功能,但是我们可以对它编程,并把通过编程生成的配置信息输入给它,有了配置信息之后,这块开发板就会变得和芯片一样具备某些信息处理能力。

一块 ZYNQ 开发板

无论是面向芯片做设计,还是面向开发板做设计,ICer的主要工作都是类似的:1)阅读文档了解功能需求;2)在纸上画出大致的电路架构,如有必要,需通过某些手段用计算机模拟敲定好的架构,并根据模拟结果做出完善;3)根据敲定好的方案编写描述代码;4)测试电路功能是否满足需求,如不满足,需要回到第1、2、3步重新再来。

6、直面生活中的IC

文章一开始就说了 IC 是现代社会的基石,那么最后就让我们来看看 IC 到底在生活中起到了哪些不可或缺的作用吧!

不知道大家手边有没有笔记本电脑,如果有的话,可以看看键盘的左下角,如果你的电脑使用了英特尔的 CPU(中央处理器)芯片,那个地方会贴有一个如下图一样的贴纸,上面写着电脑所使用的英特尔CPU的型号。这里提到 CPU 是因为 CPU 是一种最典型的集成电路,不仅电脑里有 CPU,你的手机、电视、智能洗衣机里到处都有 CPU。它们有的性能很强大,如电脑 CPU,有的性能较弱,如洗衣机所用的 CPU,但毫无疑问,它们都是 CPU,都是集成电路,它们是各自电子设备的大脑、核心。

英特尔芯片贴纸

下图拿着个什么东西的男人是英伟达的创始人黄仁勋,英伟达在过去二十年里专业制造游戏用 GPU、“挖矿”用 GPU和 AI 用 GPU。GPU 的中文全称是图形处理器,简单地说,如果你的电脑没有 GPU,你玩电脑游戏就会卡顿、掉帧;如果你的实验室服务器没有 GPU,那你大概就没法做人工智能相关的研究了。毫无疑问,GPU 也是一种集成电路。

黄仁勋手持英伟达 GPU

除了手机、电脑,游戏主机里也充满了集成电路。下图是索尼在 PS3 中使用的中央处理器 CELL,开发这个 CELL 花费了索尼和美国 IBM 公司 5 年的时间,耗资几十亿美元。CELL架构奇葩,性能高但成本、功耗也高,最终被索尼用到 PS3 中的是阉割版 CELL,阉割版的 CELL 性能大打折扣,而且极难使用,所以最终市场表现糟糕。后来索尼长了教训,不再自己关起门来钻研黑科技,而是直接使用人家的成品。说起来,任天堂也已经好久没有更新自己的主机了,不知道下一代主机会使用什么样的处理器。

索尼出钱、IBM出力设计出的 CELL 处理器

除了上面提到的这些集成电路,手机的处理器也为人津津乐道,比如当年华为的麒麟芯片、现在苹果的自研 A 系列芯片,和小米、OPPO 等公司使用的高通、联发科芯片。这些手机处理器决定了手机的性能表现、价格档次和烫手程度,直观的说,处理器好的手机玩游戏不烫手哈哈哈哈哈。

还有就是内存芯片,买电脑、买手机的时候常常说“xxx有多大多大内存”,这个内存的大小就是由内存芯片决定的。世界上最大的内存芯片制造商是韩国的三星。

文章里提到的都是一些大芯片,还有很多小芯片没有提到,这里不再一一赘述,总之,只要是智能设备、联网设备、电子设备,其内部就有集成电路,而且这些集成电路都起到决定设备性能的关键作用。

7、结语

文章到这里就结束了,回想一下本文都讨论了哪些内容:IC 的重要性、IC 很小的特性、IC 的制作方法、IC 的内部结构、ICer 的工作形式和日常常见的 IC。不知道看过这些内容之后大家有没有对“集成电路”有一个更加具体的认知?

人们常说学无止境,我认为当代大学生应该乐于在自己的专业之外扩展知识,尤其是集成电路/芯片这种处在大国竞争核心位置的专业学科。希望大家在看完这篇文章之后,可以对芯片这个话题有更深的理解,也希望大家不要再误会自己的 IC 同学,不要觉得他们平时都在焊板子或者画电路图,真的不干那些事(手动狗头)!最后,如果大家对文章内容有什么异议或者改进建议,可以直接在评论区留言!

[转帖]写给想了解"集成电路"的朋友的更多相关文章

  1. 写给想成为前端工程师的同学们  ―前端工程师是做什么的?a

    前端工程师是做什么的? 前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色.从狭义上讲,前端工程师使用 HTML.CSS.JavaScript 等专业技能和工具将产品UI设计稿实现成网站产 ...

  2. 转: 写给想成为前端工程师的同学们 (from 360前端团队)

    转自:     http://www.75team.com/post/to-be-a-good-frontend-engineer.html 前端工程师是做什么的? 前端工程师是互联网时代软件产品研发 ...

  3. 第一个元素<flout>写了,想在他的旁边加一个元素.IE6会出现缝隙. 不要用margin撑开,要用flout

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 写给想要入门python或者正在入门python的小朋友们

    写在前面: 最近好像python挺火,虽然我也在天天写python,但是python毕竟是动态语言,就拿常被人吐槽的java来说,python绝大不多数地方是不如java的.python只能是你的一个 ...

  5. js中的写出想jquery中的函数一样调用

    1.IIFE: Immediately-Invoked function Expression 函数模块自调用 2.代码实现 <!DOCTYPE html> <html lang=& ...

  6. 大一0基础小白用最基础C写哥德巴赫猜想

    #include <stdio.h>int main (){ int a,b,c,k,count1,count2; for(a=4;a<=1200;a=a+2){ for(b=2;b ...

  7. 写给喜欢用Block的朋友(ios Block)

    作者:fengsh998原文地址:http://blog.csdn.net/fengsh998/article/details/38090205转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注 ...

  8. 【PHP】最详细PHP从入门到精通(一)——想学习PHP的朋友们福利来了!

     PHP从入门到精通 (一)PHP简介和基本知识 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java ...

  9. 你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们

    一叶障目 .NET平台上的分层架构(很多朋友称其为“三层架构”),似乎是一个长盛不衰的话题.经常看到许多朋友对其进行分析.探讨.辩论甚至是抨击.笔者在仔细阅读了大量这方面文章后,认为许多朋友在分层架构 ...

  10. 如何学好FPGA

    http://bbs.elecfans.com/jishu_278578_1_1.html 掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性.掌握了FP ...

随机推荐

  1. 实时媒体AI,打破内容创作天花板,加速视频创新

    摘要:互联网视频经过几代发展,用户体验快速升级,对创新玩法.互动性要求越来越高.那如何解决这些问题? 媒体AI,是行业共识.华为云提供云原生实时媒体AI能力,联合伙伴打造AI算法开放生态市场,加速视频 ...

  2. 华为云API中心:汇聚千行百业API资产,打造API全生命周期极致体验

    摘要:2022年11月9日,华为云全球生态部总裁康宁在华为全联接大会2022上发表"共创新价值,一切皆服务"主题演讲,并发布全新的华为云API中心. 本文分享自华为云社区<华 ...

  3. 1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效

    摘要: 云原生数据库GaussDB助力"2号人事部"打造高品质HR效率软件 本文分享自华为云社区<1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效>, ...

  4. 带你了解NB-IoT标准演进

    摘要:本文将带大家详细了解NB-IoT标准演进与产业发展. 本文分享自华为云社区<一文带你了解NB-IoT标准演进与产业发展>,作者:万万万. 我们都知道,物联网的场景和手机.电脑在使用的 ...

  5. Solon 的多配置文件切换

    比如有配置文件: app.yml app-dev.yml app-pro.yml 可以通过启动参数:-env java -jar demoapp.jar -env=dev

  6. Kubernetes(K8S) Deployment 升级和回滚

    创建部署详见 Kubernetes(K8S) Deployment 部署 Pod 传统应用升级,一般是V1.0的jar包,有一个应对 1.0 的 shell 启动脚本.升级时,传 2.0 的 jar包 ...

  7. 白话 Pulsar Bookkeeper 的存储模型

    最近我们的 Pulsar 存储有很长一段时间数据一直得不到回收,但消息确实已经是 ACK 了,理论上应该是会被回收的,随着时间流逝不但没回收还一直再涨,最后在没找到原因的情况下就只有一直不停的扩容. ...

  8. Linux--修改会话超时时间

    控制用户在一段时间内没有活动时会话的自动注销时间 1.修改ssh配置文件(适用于SSH会话) vim /etc/ssh/sshd_config ClientAliveInterval 1800 #秒 ...

  9. CMakeLists.txt的工程转成.sln

    直接说正确的操作(结合之前的笔记) 创建 Build 目录 mkdir build && cd build 执行 cmake 命令,根据 CMakeLists.txt 生成 .sln ...

  10. 2、springboot创建多模块工程

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...