如何靠写代码,设计一个百亿晶体管芯片?

你有没有想过 , 如何设计一个有几百亿个晶体管的芯片?
芯片设计是个由小到大的过程 。 几个晶体管先组成逻辑门 , 几个逻辑门组成寄存器和组合电路 , 很多寄存器和组合电路组成运算电路、控制电路、存储电路 , 很多这些电路组成通信、计算等等模块 , 这些模块最终组成一个完整的芯片 。
几十年前 , 芯片里所有的模块和电路甚至晶体管都是用手画出来的 。 但现在一个手机芯片的算力比阿波罗登月的全部算力还高 。 这说明芯片功能越来越复杂、晶体管数量越来越多 , 如果再用手画这几十亿上百亿个晶体管 , 几辈子也画不完 。
所以 , 现在芯片工程师设计芯片的方法 , 就是写代码 。 而把代码自动转化成电路和芯片的工具 , 就是EDA软件 。
那么EDA究竟是什么?它为什么是芯片产业至关重要的核心环节?如果你想知道这些问题的答案 , 就请继续看下去 。 我把所有知识点总结成了思维导图 , 获取的方式在文末 。
如何靠写代码,设计一个百亿晶体管芯片?】EDA:重要性堪比光刻机的工业软件
EDA的全称 , 是电子设计自动化 , 它是一种工业软件 , 现在所有芯片公司都在用各种EDA软件辅助完成芯片设计 。
更重要的是 , EDA有着非常明显的杠杆效应 。 EDA本身的市场规模没多大 , 只有100多亿美元 , 但它却直接撬动了超过4400亿美元的全球半导体产业 。
如何靠写代码,设计一个百亿晶体管芯片?
文章图片
我们都说光刻机是整个芯片产业的关键环节 , 但其实EDA软件是不为人所知的、重要性却不输光刻机的关键领域 。
那么EDA究竟是什么呢?为了了解这个问题 , 就要先从芯片设计的主要流程看起 。
苹果、高通、英特尔这样的公司 , 在设计芯片的时候都遵循非常类似的流程 。 芯片设计可以分成前端和后端:前端负责芯片的逻辑电路设计 , 包括系统架构定义、RTL编码、逻辑综合 , 在这个过程中会进行多次的仿真验证 , 最终得到门级的网表;后端主要负责芯片的物理设计 , 包括布局规划、时钟树综合、布线、参数提取等等步骤 , 最终会得到一个芯片电路的物理版图 , 提供给晶圆厂制造 。
没听过这些名词也没关系 , 简单来说 , 前端说的是这个芯片是什么、它有哪些部分 , 后端说的是这个芯片的各个部分长什么样 。
我们拿盖房子打个比方 , 前端设计就是做出房子的设计图 , 比如有几个房间 , 每个房间是餐厅还是卧室 。 而后端设计就是按设计图画出这个房子的施工图纸 , 包括建筑施工的时候有哪些步骤 , 用钢结构还是砖混 , 怎么做防水 , 怎么拉网线走水电等等 。 这样建筑队 , 也就是晶圆代工厂 , 就可以拿施工图纸去把芯片造出来了 。
EDA工具最大的好处 , 就是能极大缩短芯片设计的时间 , 提高设计效率 。 手动画电路图又慢又容易出错 , 但用计算机可能几分钟就完成了 , 还可以随便改随便保存 。 要知道 , 时间就是金钱 。 能够越早让芯片做出来卖 , 就能越早占据市场先机 。
在前端和后端的每个步骤里 , 都需要用到各种各样的EDA工具 。 我们拿全球最大的EDA公司Synopsys新思科技举例 , 看看芯片设计的流程里到底需要多少EDA工具 。
如何靠写代码,设计一个百亿晶体管芯片?
文章图片
比如我们要做一个非常非常简单的加法电路a+b=c 。 那么我们就先用Verilog或者VHDL这些硬件专用语言 , 把这个加法电路描述出来 。 为了验证这个加法的功能是不是正确 , 我们需要用EDA仿真软件 , 比如新思的VCS和VCformal , 让a=1 , b=1 , 看c是不是等于2 。 如果我们输入1+1但结果等于3 , 那就需要使用“调试软件” , 比如Verdi , 来确认问题出在什么地方 。 我们还要用到“静态和动态分析软件”SpyGlass , 来诊断和分析电路是否有潜在问题 。