极客时间学习笔记:04芯片-设计之路

news2024/11/24 9:43:42

其实一颗芯片项目就是一个标准的产品项目,项目的起点是市场需求分析,接着是设计和制造,如果产品成功完成了商业落地,那么就可以开启下一代产品的迭代升级新周期了。

如果只看芯片设计,它主要包含需求分析、架构设计、逻辑设计、物理实现和验证等几个部分。

如果说芯片项目和其他产品项目有什么不同,那就是芯片项目是人类历史上最细微也是最宏大的工程,研发投入大,项目收益高,试错成本极高!!!!!

以 iPhone 的 A11 应用处理器为例,这颗处理器包含 43 亿的晶体管,工程师们要在有限的项目时间内,实现手机应用处理器所需要完成的功能任务,还需要在 88mm² 指甲盖大小的面积下放置下 43 亿晶体管和它们自己的连线,再要经过缜密的验证工程,以保证它在 2 亿台手机上都能正常工作 2-3 年。

有人说芯片是人类造物的巅峰之作,我是非常认可这种说法的。

像 A11 处理器这样一个项目,它的商业价值有多大呢?我来给你算算。苹果每年的手机销售约为 2 亿台,按照上一讲我提供给你的 iPhone X 物料表,A11 价值 27 美金,乘以 2 亿台手机那就是总共价值 54 亿美金。

苹果的应用处理器是自己设计,委托台积电代工的。因此,27 美金的标价,算是成本价格了。如果购买其它同类同性能的应用处理器,可能大约要 80 美金的单价,这样算下来,就是 160 亿美金的总价值。

让我再重复一下几个关键数字,2017 年的发布的 iPhone 8,采用的应用处理器 A11,43 亿晶体管,88mm² 指甲盖大小的面积,2 亿手机销量,160 亿美金的总价值。不知道你看到这组数据是什么感觉,我是被这组数据震撼到了。

需求分析

其实可以想见当时一定是有多个芯片公司,发现了手机应用处理器这个真实需求。在芯片公司发现市场需求之后,通常会进行市场调查,总结出一个通用的市场需求清单出来。一般这个需求清单,会包括主要应用场景分析、软件栈、竞争分析、性能与定位、需求量与投资回报比分析、行规与标准,主要配套芯片的市场供应情况预测等多项内容。最终形成的就是一份市场需求文档。

每个公司的文档流程不一样,有的公司,在做市场需求文档之前,还要做商业需求文档,重点在于分析投入产出比。在市场需求文档之后,还要做深入的产品需求文档和细分的功能需求文档

在需求分析之后,通常会有一个立项决策会议,由内部管理层决策是否进行此产品的开发。如果顺利通过立项决策,这个芯片项目就由市场部门,转交给研发部门。

像苹果 A11 这种项目,需求分析这一步,会集中在公司内部,为 iPhone8 服务。而如果是高通,联发科这种商业芯片公司,往往会征求主要客户的反馈,和手机厂商们对齐需求。

架构设计

我们说,一个项目是否有商业价值,主要看需求分析。而一个芯片是否做得好,80% 是由架构设计决定的。

在拿到需求分析文档后,高层设计人员,往往是以架构师为主的团队,需要开会对产品需求逐条进行可行性分析,并在此基础上确定基本架构和模块分解,最终设计出一个系统架构。我可以给你看看,苹果 A12 的一张系统架构图,你可以感受一下。

在基本架构确定之后,芯片的大目标,就是对 Power 功耗、 Performance 性能、Area 面积,也就是业内常提到的 PPA 衡量标准,要有明确的规划,这一般也就确定了要选择的制造工厂和工艺制程。

接着,芯片设计公司要把需要向供应商购买的 IP 和自研的 IP,把它们的交付时间和接口逐一确认。苹果的 CPU 核一直是自研的,GPU,则从 IP 供应商那里购买过很长一段时间。

如果采用先进封装技术进行小芯片(chiplet)的设计,此时封装方案和初步的布局规划也都应该确定了。在大多数情况下,一个芯片里面只封装一个集成电路硅片,但是有时候为了更高的性能,或者高密度的设计,当然还有成本因素,需要把多个硅片封装在一起,这种技术手段就叫先进封装。

到架构设计这一步,最终输出的就是一份产品规格书和高层架构设计文档这是一个将市场需求,翻译为可实现的芯片架构过程。

架构确定了之后,通常架构团队和算法工程师团队会建模仿真,确保功能、性能、吞吐量等指标可实现。有了一个可行的芯片设计方案和芯片原型模型之后,架构团队就可以把文档和芯片模型移交给设计团队,开始逻辑设计。设计团队,会先输出微架构或者模块设计文档,然后进入编码阶段

回顾一下开篇那张图,你可以理解,架构设计的输入是市场需求文档,输出是产品规格书

下一步,逻辑设计也叫前端设计,就需要拿着产品规格书,去输出 RTL 代码,用以生成网表(Netlist)了

我们在开头提到,在逻辑设计完成后,还要做物理实现,物理实现就是由 RTL 代码综合成门级网表,然后生成 GDS II 文件的过程。这里的物理实现也叫后端设计,前端和后端设计这两个部分并没有统一严格的界限,凡涉及到与物理工艺有关的设计我们就叫后端设计。我们先来看逻辑设计。

逻辑设计

前端设计与验证

前端设计(逻辑设计)一般用硬件描述语言,例如 Verilog,将架构师的设计用编码实现。大型芯片项目,设计也是分层次的。先进行模块设计,底层的模块写完之后,把新写的模块、商业 IP、复用的旧 IP 等整合在一起,形成一个完整的设计。

其实硬件描述语言,看起来跟 C 语言颇为类似,不过写 C 语言的人,心里想着“hello world”,写 Verilog HDL 的人,心里想着电路图。

我给你展示一段编码,用 Verilog HDL 写的寄存器传输级设计如下图:

跟其它的软件项目一样,在设计的同时,验证也要并行进行。验证是芯片设计中最为耗时耗力的工序,ARM 的技术白皮书有统计,一般一个项目的 40% 资源是用在验证阶段的。

逻辑综合

设计验证完成之后,还有一个步骤,叫逻辑综合 (Logic Synthesis),就是用 EDA 工具把寄存器传输级设计 RTL 描述变网表(Netlist),非常类似于编译器把 C 语言翻译成机器语言的过程。从这一步开始,芯片的设计就和具体的晶圆代工厂和具体工艺绑定在一起,设计开始具有物理特征了。

网表表示的电路如下图,它其实就是描述电路元件相互之间的连接关系。

逻辑综合,对于半导体设计公司不难,但是却是 EDA 公司的核心产品之一。在实现流程中,就背后算法而言,综合一定是最难最复杂的步骤。一个晶圆厂,并不仅仅要有先进工艺,提供给设计公司的设计工具包 PDK(Process Design Kit)和 EDA 厂商的支持也非常重要。

DFT(可测试性设计)

除了以上两步,前端设计还有一个步骤就是 DFT(Design For Test)。所谓 DFT,就是预先规划并插入各种用于芯片测试的逻辑电路。芯片制造后期,在封测阶段中,很多测试需要依赖 DFT 的设计。

完成以上工作后,前端设计团队就可以将生成的网表交给后端实现团队,开始物理设计了。当然这个过程不是一蹴而就的,前端设计工程师往往要多次,不同层次的反复综合、验证,各种设计规则检查,既要确保设计的正确性,又要保证设计的布局布线可行且优化。

整个逻辑设计阶段,你可以这样理解:架构师写在文档上的指标与功能,是需要设计团队通过一行行的代码实现出来的。

物理实现

在前端设计结束后,后端也就是物理实现需要完成布局布线,这个时候,需要把网表转换成制造工厂可以看懂的文件,也就是转化为制造工厂可以用来制造光罩的图形文件。

后端设计的主要步骤可以总结为:布局规划 Floorplan→布局 Placement→时钟树综合 CTS→布线 Routing →物理验证。

布局规划就是在总体上确定各种电路的摆放位置,它是后端实现中最为重要的一个环节。我这里放了一张图,你可以看下苹果 A11 的布局规划是怎么样的。

芯片的面积、时序收敛、稳定性、走线难易,基本上都是受布局规划的影响。在实际项目中,往往此时还有未完成的模块,就要预留位置。

规划之后,在指定区域摆放元器件,就是布局,而把各个元器件连接起来,就是布线。一颗芯片的树状的时钟信号线路非常重要,往往需要单独布线,因此还有一个专门的名称:时钟树综合。最后,要做验证。

我说得简单,其实这就是在指尖上建高楼,在小小的芯片上放置上百亿个晶体管,纳米级的单位,幸而有 EDA 工具辅助,这不是人力所及的工程。

一颗芯片做得好不好,在决策阶段取决于市场需求理解的是否深刻,在逻辑设计阶段取决于工程师的能力强不强,而在物理实现阶段基本取决于 EDA 工具玩得好不好。

在芯片设计进入纳米时代之后,布局布线的复杂度呈指数增长,从布局规划到布局布线,时钟树综合,每一步涉及到的算法在近年都有颠覆性的革新。这些步骤,都高度的依赖 EDA 工具。要对 EDA 工具有深度理解,并且要理解 EDA 工具背后的方法学。

整个芯片设计流程就是一个设计、优化、验证的不断迭代的过程,每一步如果不能满足要求,例如时序不能满足目标要求,或者存在物理规则违规,信号完整性不合格,都要重复之前的过程,直至满足要求为止,才能进行下一步。

在项目早期,任何的问题,都可以通过修改 RTL,然后重做后续步骤来完成。因此大项目,往往有多个版本火车并行在跑。

在项目后期,特别是在最后阶段发现个别电路小问题 ,可以进行工程更改(Engineering Change Order,ECO)。ECO 有专门的 EDA 工具和流程,我就不展开说了。

物理设计完成之后就形成了下图展示的电路图。图中可以看到蓝、红等不同颜色,每种颜色就代表着一张光罩。这个时候的芯片设计就可以以 GDSII 的文件格式从设计公司移交给芯片代工厂了。自此,设计完成,制造流程开始。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Openl启智平台如何提交代码至远程仓库

基于Openl启智平台如何提交代码至远程仓库Openl启智简介快速创建项目克隆项目到本地提交和更新文件Openl启智简介 面向新一代人工智能开源共性技术,面向AI领域的一站式协同开发环境,提供集代码开发环境,数据管理、模型调试、推理和评测为一体…

【Linux】常用基本指令(始)

文章目录🎪 Linux下基本指令1.1 🚀 登录相关指令1.2 🚀 ls1.3 🚀 pwd1.4 🚀 cd1.5 🚀 touch1.6 🚀mkdir1.7 🚀rmdir && rm1.8 🚀man1.9 🚀cp2.0 &…

windows环境使用PHPStudy安装Redis

windows环境使用PHPStudy安装Redis 目录 安装Redis 开启php redis扩展 查看php扩展 启动redis 连接测试 总结 安装Redis 从软件管理中找到redis,点击安装 开启php redis扩展 选择相应网站管理 > php扩展> redis 查看是否勾选,如果未勾…

力扣刷题记录——412. Fizz Buzz、414. 第三大的数、415. 字符串相加

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《412. Fizz Buzz、414. 第三大的数、415. 字符串相加》。…

ccc-sklearn-15-XGBoost(1)

文章目录XGBoost集成算法介绍xgboost 库与sklearn中的XGB APIXGBoost的三大板块梯度提升树-集成算法参数n_estimators建模使用sklearn中的XBGboost:参数subsample使用波士顿房价数据集,来看学习曲线参数eta探索eta参数的性质n_estimators,lea…

【操作系统实验/Golang】实验2:进程(线程)同步

1 实验问题描述以生产者-消费者模型为基础,在Windows环境下创建一个控制台进程,在该进程中创建读者写者线程模拟生产者和消费者。Writer线程写入数据,然后将数据放置在一个空缓冲区buffer中供Reader线程读取。Reader线程从缓冲区中获得数据&a…

YOLOv5+Tesseract-OCR 实现车牌号文本识别

来源:投稿 作者:王同学 编辑:学姐 最近看到了各种各样的车牌识别,觉得挺有意思,自己也简单搞一个玩玩。 1.预期效果2.整体流程3.准备数据集4.训练YOLOv5模型 4.1 下载源码 4.2 安装环境 4.3 修改配置文件 4.4 训练模型…

史上最详python中while语句循环(建议收藏)

名字:阿玥的小东东 学习:python正在学习c 主页:阿玥的小东东 目录 前言 1. 什么是while语句? 2. while语句可以干啥吖 3.while的详细讲解 4.死循环 5.用while语句写个小游戏 前言 今天呢我们来学习一下python中的while语句 …

「Moonbeam社区之声」首期活动回顾

感谢大家参加本次Moonbeam Community Voice「社区之声」新系列活动。Moonbeam计划定期举行这个系列活动,分享Moonbeam社区近期状况,以及来自社区的建议和分享。顾名思义,这是基于社区的分享活动。 Community Voice「社区之声」旨在成为讨论影…

第8章:切片

1.切片的引入 【1】切片(slice)是golang中一种特有的数据类型 【2】数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在 Go 语言的代码里并不是特别常见。相对的切片却是随处可见的,切片是一种建立在数组类型之上的抽象&#xf…

AVL平衡树

前置知识 平衡树 平衡树指的是任意节点的子树的高度差都小于等于 111 的二叉查找树。 因为他是平衡的,我们做树上的操作就可以降到 O(logn)O(log_n)O(logn​) 的时间复杂度。 AVL平衡树 因为对于树有可能进行插入或删除操作,使得树有可能不平衡&…

抓取HTTPS失败和乱码

第一步:电脑安装SSL证书 选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,如果设置了安全防护,会ranging输入系统的帐号密码 这时开始安装charles证书,一路点击下一步即可 第二步&#xf…

【MySQL进阶教程】锁的详细介绍

前言 本文为 【MySQL进阶教程】锁 相关知识,下边将对锁的概述,全局锁(包含全局锁的介绍,语法与特点),表级锁(包含表级锁的介绍,表锁,元数据锁,意向锁&#xf…

第一封信|感觉孤独?找个借口联系

首发:https://bornforthis.cn/letter/2023/01.html 孤独不等于寂寞 你好,我是悦创。 这里是《悦创来信去无方向的信》,给你邮寄的第一封信,信的主题是“孤独 vs 寂寞”,很高兴你拆开此信。 一到冬季,情…

10条必备的markdown常用语法

10条必备的markdown常用语法markdown笔记写起来会比较方便,而且也方便复制,下面我总结一下常用的markdown常用语法可能不同的程序markdown语法不太一样,但是都差不多的1.标题一级标题、二级标题等等这个不多说了。最多支持六级标题## 内容1 …

鲲志说:向我跌宕起伏,喜忧参半的2022致敬!

今天是2022的倒数第二天,就着CSDN的活动正好为自己做一个年度总结,也确实需要做一个年度总结来正式和过去的一年道个别 回想这一年,确实经历了很多,寒冬裁员、千里相赴见双方父母、成功夺冠🐑。。。成年人的世界确实很…

Web3中文|2023加密圈开年首雷?美国当局调查Genesis母公司DCG

据彭博社周五报道,纽约联邦检察官和美国证券交易委员会(SEC)正在调查数字货币集团(DCG)在其借贷子公司Genesis的内部转账问题。 报道援引知情人士的话称,DCG已收到纽约东区检察官关于提供文件和面谈的要求…

ebpf中的percpu map的注意事项与剖析

1 背景 故事还要从一次翻车现场说起。 为了统计各个CPU上的系统调用数据按照cpu分别进行统计,我参考了kernel Documents中关于percpu map的一段原话: Values stored in BPF_MAP_TYPE_ARRAY can be accessed by multiple programs across different CPUs.…

python转C++格式学习笔记

我是主写python的,但是感觉算法上想精进的话,还是得用c写,所以笔记主要记录的是c与python不太一样的地方,听的是y总的算法基础课,结合y总的讲义,白框里面是自己的理解,大家取精华,去…

已解决pip使用阿里云镜像安装第三方模块失败

已解决(pip使用阿里云镜像安装第三方模块失败)ERROR: Could not find a version that satisfies the requirement xpinyin (from versions: none) ERROR: No matching distribution found for xpinyin WARNING: The repository located at mirrors.aliyu…