数字IC设计之“数字SOC全流程漫谈从0到1”
讲师背景:
阎如斌老师毕业于慕尼黑工业大学的硕士研究生,具有非常丰富的IC研发经验。在集成电路的从业10多年之久,同时也是叩持电子和IC修真院的创始人,并参与过多款基带芯片、安全芯片、MCU等SOC芯片的研发工作。
本次课程给大家带来数字SOC全流程漫谈从0到1的课程,将会分为三个部分来进行:
1.针对数字SOC全流程漫谈;
2.根据之前同学们填写的调查问卷最关心的问题,去做出一个相应的解答;
3.最后的 Q&A环节,在直播间把自己想问的问题打出来,阎老师会推荐出同学们最关心的问题去回答;
另外在这里还需要啰嗦一下,本次派发课程的相关资料,还没有不知道的同学可以在评论区回复,本次的课程录屏已经整理。
话不多说,看下本次课程目录:
第一部分,从芯片家族这里我们来看一下,那么我们经常在生活中听到的芯片,或者在书本中看到的芯片,或者说是抖音微信上聊到的到底是芯片,我们可以怎么把它分类一下?它大体上有哪些?
第二部分,我会给大家讲一下芯片或者叫硬件,它和软件之间我们怎样构成一个系统?
第三部分,数字SOC芯片一个全流程概述,
第四部分,我们会从它的需求,也就是我们所讲的spec 或者specification到设计、验证、后端,逐步细节的给大家进行一个介绍,最后给大家奉上一个全家福,我们整个设计验证后端他们是怎么样交织,怎么样融合在一起协调工作,最后产生一个可用于去生产的GDSII这样一个文件。
我们先看芯片家族,那么今天我拿一副大家都认识的钢铁侠,这么一张剧照来给大家解释一下,我们芯片是怎么样分类的?为什么这些芯片它一款一款的逐渐产生?其实说到钢铁侠,它其实就是把我们人类的很多功能、机能通过这种计算机,通过这种芯片来逐渐实现的。
比如:第一点我们先说思考范畴的,其实这些它在模仿什么?它在模仿我们人类的大脑。例如:说CPU芯片、DSP芯片、 AI芯片、MCU等,它都是进行思考的,再往再往前走一层,大脑皮层是干什么?它在存储我们的记忆的,对吧?所以说像我们产生了SRAM、DRAM、ROM、flash等,这种memory存储芯片。
我们再看一下左边的感知类芯片,它是在模仿我们的五官、视觉、听觉、嗅觉等等 Camera 、touch这些传感器芯片。
我们再看一个非常重要的,钢铁侠的能量全部是来自于这里,其实对我们芯片也一样,我们芯片也要有这种供能的作用,所以我们会看到有dcdc、ldo 、pmu等等,这是跟电源相关的芯片。
我们再看传递类芯片,它在模仿我们的神经,它有的是有线的,有的是无线的,这种通讯芯片,像蓝牙、 Wifi、NBIoT、 ADSL等等,它属于在连接类芯片,还有在模仿我们四肢的连接类芯片,USB大家都知道吧,HDMI这种,我们现在经常用的来连接大屏的,还有Ethernet,还有就是我们的驱动类芯片。
Ok,这张图就给我们了一个整体的介绍,芯片它是如何划分的。
第二部分我们经常说什么芯片,它是一个系统的骨架,那么软件是一个系统的灵魂,有硬件没软件不行,有软件没硬件也不行,这就是一个系统的构成。
一个系统通常有什么?有数字芯片,模拟芯片,还有软件构成。
Ok,大家看到这里所写的都是英文加中文的方式来写,原因是什么?原因就是我们在真正的工作环境中,工作流程中我们经常是约定俗成的,可能都不讲中文,我们可能直接说 Verification,我们可能直接说simulation,我们直接讲synthesis,我们直接讲PR,就这些关键词,大家在后边的学习中,一定要把它印到脑子里去,这些东西以后都是约定俗成的,不会重复的解释。
什么电路仿真?电路仿真就等于simulation,模拟版图就等于layout,把这个要放到脑子里,那么接下来我们再聚焦一下,把这个数字 SOC芯片的设计的流程聚焦一下。
它分为4个大的步骤:
第一步、Specification,简称spec、中文叫需求规格书。他是在干什么呢?就是一个文档。它的描述我们所要接下来做的这款芯片,它的功能是什么?它的应用场景是什么?它的性能是什么等等。
第二步、是干什么呢?我们这里说叫system level design也叫system level Simulation。什么意思呢?
举例:现在说,造一辆纯电的车,需求:1000公里充一次电,最简单的一个需求给到你,是不能直接去设计对吧?首先它要分很多个环节,需要先从理论或者说从数学,我先去做一个模拟,做一个仿真,就说你这个需求到底是否可被实现,至少从数学上你要是能通的?
不能说都违反了人类自然定律了,所以我们的系统级仿真其实就在做这件事,所以它通常会用高级语言:Matlab、 C++、 System Verilog这种高级语言进行一个建模。先看一下你从算法理论上是否具有可执行性,如果这一步可行了,我们就进入真正的比较detail的阶段:DFV,我们叫design and verification,也就是第三步。
第三步、这个阶段我会干什么呢?RTL的代码设计,RTL级的验证,还有FPGA的验证,以及逻辑综合,但逻辑综合这里我把它画一个圈,为什么?因为在不同的公司有时候可能会被放到前端,也就是我们的代码设计人员他要来做的工作;也有可能就会把它放到后端,由PR人员来做,为什么会这样?其实这是各个公司的历史传承或者经验背景造成的,前端后端都可以来做这个事情。
第四步、我们叫PR,它就布局布线阶段,它整个过程就包含了有 Floorplan, place&routing, physical verification,静态识别分析等等。经过这一系列的动作,我们从一个spec产生了一个可用于foundry,也就是工程生产的GDSII这样的一种文件格式,这就大概是我们的一个数字SoC芯片的一个全流程的过程。
接下来对于每一部分,再详细的给大家介绍:
我们先说全流程之需求,需求从哪里来?那么对于一款商用芯片而言,那么需求来自于market,Marketing request,需求来自于市场。那么有了市场有了这个需求之后,我们干什么?我们把它通常在企业里我们叫 System Engineer系统工程师,它来会构建这种叫architecture spec或者叫functional spec,它都是非常 high level,比较高级的这种,从框图到完善的功能,我们要做这么一件事。
刚才在前面讲了一个比较宽泛的 Spec,那么接下来我们的算法工程师就要进入了,可能有些公司名字叫的不一样,他来做什么?
做一个高级语言来写的仿真模型,来看一看它从可行性上来说,你的 spec,你的需求所转化过来的spec,可行性有没有?高级语言,Matlab、 c、SV等,如果ok,没有问题,那么我们接下来就进入下一个阶段,叫做 design spec。当然如果有问题,大家可以看我是用双向箭头对吧?这里是干什么呢?是可以进行讨论的,商量的,协商的,那经过多次的反复之后,ok了,可行性也Ok了,按在进入design spec。
Design spec我们通常是由我们的designer来写的,写完之后,我作为一个设计人员,前端工程师,我看到design spec我就知道代码要怎么实现,我状态机要来实现这个功能,分几步,我这里打一个五角星,也就是说当design spec诞生之后,我们就可以进入下一个环节。
下一个环节什么呢? SoC芯片全流程之设计,我们在做SOC芯片全流程设计的时候,它是在干什么?我们用两幅图进行一个诠释,相当于我们有很多基础的一些单元和模块,它类似于乐高里的什么?
比如说正方形、长方形,有高的要窄的这些基本单元,对吧?
按照我们spec算所说的这种要求,设计出或者叫做组合创新出螺旋桨翅膀、座椅为等等的这样的一个的功能,最后成为一个可在九天上翱翔的飞机,这就是我们的 SOC设计过程。
可以简而言之叫组合式创新,我们把它做成一款一款性能有差别的,功能有差别的,各种各样的芯片类产品,这个就是要人大家都知道SoC芯片设计的一个基本概念。
接下来给大家展现一点细节的,比如说左边这幅图,这就是一个典型的 SoC芯片,它里边通常包括有什么?有我们的大脑,刚才说了 CPU、DSP这种大脑,有sram这种memory,还有一个什么?一堆的外设还有我们刚说的连接类的接口跟外部互通,这就是一个SOC芯片的大致的样子,然后我们通过AMBA总线让这些模块、大脑记忆存储部分进行协调工作。
那么我们再看右边这幅图,对于设计工程师来说,基本上有三个事儿要干:
1.首先rtl的coding,它在做什么?比如说控制类部分,系统控制部分,还有一些这种功能部分,算法部分,我们把它叫RTL modeling。再给把这些功能模块,这些控制模块,把它用Verilog实现出来。
2.把我们刚才说的 memory、 CPU各种及外设给组合式创新,组合式创新integration集成起来之后达成一定的功能。
3.我们要做什么? Synthesis,我们把它中文叫逻辑综合,把我们的RTL代码转换成了这个门级网表,什么叫门级网表呢?我们在数电里学到的,比如与门、或非门、与非门 、max等等这种基本功能的数字逻辑单元,逻辑综合就是干这个事的。
那么在这个过程中,我们可能遇到一堆工具,比如说spyglass, Jasper,VCS、Verdi、 design compelier。大家这里只要有一个印象就好了。至于工具它是干什么用的,怎么使用?这个当你有兴趣去做设计相关的工作的时候,自然而然都能接触得到。
那么设计就简单的介绍到这里,里边还有很细节的内容,以后我们都会慢慢的涉及到给大家讲。
接下来我们讲一下设计完之后干什么?验证、在这开始之前找到两幅图,我觉得非常好,通过它,我让大家有一个清晰的概念。
我们说一下左边这幅图,这是谁?这个哥们他就是designer,他拿到了specification, Specification是什么?说ok,你要给我设计一个防弹的衣服,他想了想,他根据他的传统的思维,可能以前看过美剧,他说防弹就是防弹背心,他就设计了一个背心,然后他给验证人员说:兄弟来,你的验证工具就是这把枪,来,朝我背心上来一下,你看到这,是不是就能看出来了。没完继续......
这是一个非常有经验的验证方式。
验证根本不会听你这个designer说,怎么验就怎么验,Spec说设计一个能够防弹的衣服,你传统的思维是设计了防弹背心,但我可以打你的腿,我还可以打脑袋。所以没防住中枪了,这就是非常典型的一个设计和验证工程师之间他们日常要干的事,所以这两个角色经常会在公司中吵架的,一个说你设计的太差,基本的都没搞定。一个说你验的东西,你怎么想到要验这个,Ok,这就是我们设计工程师和验证工程师这两个角色存在的价值。
有了基本概念之后,我来讲一下,验证的流程是怎么样的,其实验证流程我这里大体划了一下4个部分:
1.首先测试点分解,我们把它叫做verification plan,有的地方叫test plan,他是干什么事?把刚才我们所说的,这个要设计一款防弹的衣服, Spec进行分解,我分解完之后,我这个测试工程想了一下,说要脑袋上要能防住,这是人类最关键的地方,Ok,前胸、后背、四肢,这地方我都要验到,ok,我啪啪啪测试点往那一写,功能验证就这样,我先在脑袋上打一枪,胸上打一枪,腿上打一枪,胳膊上打一枪,挑一些地方打一枪,我验证基本功能能不能防住。
但这只是最基本的,其实在功能验证上我们要讲求什么?要清楚我们的理想情况是什么?全部要验到到什么?比如说验胳膊的时候,我这枪嘣嘣嘣嘣嘣嘣,它必须连法,我把你胳膊整个全部打成一个眼,这是防弹,对吧?你不能说我打一下大胳膊,你就说我胳膊上放的不对,你小胳膊那个地方是没有保护道,这就是我们功能验证的地方。
比如说形式验证,形式验证什么意思?你设想一下,你如果说用枪来验衣服这件事就要打无数下,你才能把胳膊全部打全。这件事,我们放到芯片上的电路信号,那是数以万计的,可能百万计,你该怎样呢?所以我们就想到了一个形式验证,它是一种数学的验证方法,通过数学公式来推导出ok,我在理论上在数学公式上验证了你这个东西是正确的,我认为不管你输入是任何情况,我的输出都应该是这样。
我们把这种叫形式验证,在后边大家都会接触到。
最后再说一下门级仿真,有时候我们叫后防,它指的是说刚才前面这几步都讲的是RTL级别的,就是Verilog这个代码级别的验证,在这个后仿是什么?我把代码已经转换成了门级网表的与或非门,而且门它是有延迟的。从一个门的输入到输出,可能有0.1ns的延时。然后从 a这个门到b这个门之间,你得走路,有条线连过去这个线上也是有延迟的。我们把这些延迟信息反标上去之后再做仿真,我们通常叫门级仿真。我们验证过程中最常用的工具其实就是两个,一个是VCS进行仿真的,一个是Verdi进行debug,这个验证讲完之后,就是说我们整个SoC的全流程过多半了。
那么接下来要进入后端实现环节了。后端通常在学校里涉及的很少,我用两幅图来给大家先进行一个简单介绍。
左边这幅图,这个图就是我们一个SOC芯片,它的一个用于foundry或者工厂去生产的,这么一个GPSII这么一个文件,以图形化的形式呈现出来了,就长这个样子。大家可以看这一圈,这个就是我们所说的 PAD或者叫pin。
不知道大家有没有印象中见过那种黑色的小片片芯片经过封装之后的,其实是通过这些pin连出去的,通过芯片的引脚连出去跟外围进行打交道的地方,那么你看这些块在四周的这些正方形长方形的这些小块,这些里边是什么?
它有模拟部分,比如说adc,pll它也有存储部分sram,它也有小的一些算法的的Marco部分,这些地方就分散在四周。不过没关系,这会不用知道他是什么情况,没关系,我让你先有个概念。
大家再看安全这些位置,密密麻麻麻的这些地方,这些地方就是我们所谓的标准库单元,标准库单是什么呢?与或非门、反向器等这些最基本的数字逻辑单元门,然后大家在这个位置看得清楚一点,有横纵交错的这种线,这是什么?这就是我们电源网络,你要让整个芯片又能够有电,这个就是电源网络。然后这个时候大家看一下我们的右边这幅图,我想来想去说用什么东西能够更好的给大家形象对比一下,让大家更深刻的理解一下后端版图的长相。
我拿了一个地图,为什么?你看比如说我们地图这部分,我们规划为什么?这是我们的生活住宅区,这一部分我们规划为什么?这是我们的旅游观光区。这部分我们规划什么?这是我们的工业、商业、 CBD去我们的城市它是有划分的,这些大家可以等同于这帮的ADC memory 等等。
然后大家再看一圈的pin,这是干什么?这是跟外围打交道的对不对?比如说我们的港口对不对?飞机场都可以理解是跟外围打交道,就是你这个城市你这款芯片跟外部进行交互的时候,你需要有一些口高速公路的出入口,也包含在内。
那么我们这里的每一个人就可以等同于这里的standard cell一个标准单元库,这个人是工人,这个人是工程师,这个人是教师,在这里头在这个城市体系里承担了不同的工作。但是这些人他不能整天呆在一个地方,对吧?他要到家里去睡觉,要到工厂办公室去工作,他要出去没事干工作,压力大了还要出去转一转,所以他们之间需要什么?需要通路,什么需要马路。所以说怎么样,我们这里的单元之间你得用通讯,所以你要线把它联系起来,那么马路是有十字路口吧?会造成拥堵对吧?所以我们发明出来什么立交桥或者隧道,其实对我们金属,对于我们STD cell之间也是一样的。
大家现在看到的是一个平面,实际上我们这个基础层可能是5层、7层、10层、2层,它有20层的立交桥,让我从一个地方到另外一个地方能够过去,你要通过下隧道等,它进行在干什么?这在进行数据互联。
这样大概就是我们的一个SoC版图的图像和它里边的构成。
在来看一下后端的流程是怎么样?后端的流程相对于前端和验证它是比较长的,你看它经过了这么多路径,逻辑综合,布图规划,布图规划是什么?刚逻辑综合已经讲了,在前端的时候把条转换成了门级网表,floorplan是干什么的?它是一个规划,它规划什么?什么地方放这个memory,刚我说四周那一圈放的那东西,这就是在布图规划里做的。
Place是在干什么呢?Place就刚把那些标准库单元,就是把人把你摆在一个的位置上,先随机的撒出去,当然也不是随机,它在一定算法的基础上,place出去,然后我们做始终数,使用数据概念,这它是我们数字进行电路非常重要的,为什么?就是我们整个数字集成电路能绕起来,它一定靠时钟,它靠寄存器,靠频率一拍一拍的网络打出去。我们时钟树其实就是把做的让你们所有的计算器都能够有时钟连起来。
那routing是干什么?刚才我在讲马路立交桥,它把这些单元 A与或非门的各个片之间有功能的情况下,把它们连起来,把前面这些事做完之后,要做物理验证,比如说我们现在要做一条马路,这条马路宽1.6米,显然不可能是吧?因为我的车宽都是两米,过不去,这个时候它就叫做drc的违例在做这些检查之后,我们做一下 STA我们叫static timing analysis,静态时序分析,它主要在检查一下setup、 Hold的有没有满足要求。
比如说我们的通常说能跑到100MHz一个GHz两个GHz,你怎么去检查这件事?我们就通过STA来检查。
我们经常说手机待机时间要长,就是因为做了很多款这种基带芯片,我们对带基要求很长,它就对低功耗要求很高。一我待机一天半,他是不是就很有竞争力,去再做一下功耗分析。这也就是我们整个后端一步一步要做的事情。
那么在做的过程中,我们经常会用到的一些工具有哪些呢?
有design compelier、ICC2、PrimeTime、Calibre、StaRC 、Redhawk。对应我们这个过程中所用的工具,这里也只是让大家先有个概念,在后续的很多课程中或者以后的工作机会中都是能够接触到的。
最后给大家一个全家福,我用黄色标出来这两个。它是什么?它是从 specification到tape-out的全流程中,我们从设计规格书到RTL代码编写再到逻辑综合,有个dft步骤,然后到布局布线,一直到TO的一个全流程,这是整个设计过程。
这里我强调一下 DFT,因为它不是我今天要讲的一个重点,所以这里只是在全家福中给大家有一个概念,大家要知道就是说 DFT是干什么的。辅助以后芯片生产出来之后,测试它有没有生产缺陷的一个步骤,它里边是要加一些逻辑的。
大家可以看到左边这一列,在整个我们的设计过程中,我们的验证分为前端、后、端,它整个伴随在设计过程中有非常多的步骤来保证我们设计的代码是正确的。因为我们芯片经常讲First time right,因为它的时间成本都太大了,我们需要有非常严格的,严谨的,丰富的验证来保证这件质量。
我们除了这个功能上设计之外,大家看到右边一列,还有性能要求,我们性能其实主要分两类,一个是频率,就是我们常讲跑到多少兆多少G,再一个就是我们说的它的功耗多低,有什么样的功耗要求?
性能设计也是在我们这个功能设计的过程中,你不断要考量,要考虑把性能上的要求加到我们设计的过程中来,这就是我们全家福想告诉大家的。
那么今天的30分钟的 SoC数字全流程漫谈,其实就是想给大家先有个概念,让大家先全面了解一下整个SoC全流程它包含哪些?
我们要怎样进入这个岗位,进入这个行业?要找到一个点,以点突破。
不管你是做设计还是做验证,还是做后端,先把一个点打进去,之后对大家而言,我们有两个发展方向,一个我们叫纵向深入,比如说你是在做 USB,做pcie的,做CPU的,你这个点进去不管做设计验证后端,可以一直深入往下做,把他的协议反复读,架构反复了解,甚至还可以优化迭代等等,这是我们纵向深入。
第二就是横向扩展了,就是说你可以做上三年设计,你说我想去做个验证,从另外一个角度来让你更加深入的了解新品设计,你也可以说我到后端去进行一下换岗,都是可以的。
其实这些东西在最开始产生的时候,这是对一个人的要求。后边是在大公司对岗位工作的细分,才拆分成若干个角色。
关于《数字SoC全流程的漫谈》就介绍到这里!!!
调查问卷的问题及Q&A环节解答后续更新.....
你唯一需要保障的只是时间和坚持!
了解→
就业、面试、课程、未来职业规划等可以在评论区回复......
喜欢你就分享,有想法、有疑问@私信我......