如果您希望可以时常见面,欢迎标星收藏哦~
据Tomshardware报道,一位名为Adam Majmuda软件工程师最近在X平台上分享了他在“没有任何经验”的情况下,只用了两周内就从头开始设计 CPU 的经验。
在这段短暂的时间内,Adam声称他已经了解了芯片架构的基础知识,吸收了芯片制造的细节,并使用EDA 工具准备了他的第一个完整芯片布局。他的“speed-running the chip stack”任务清单中的下一步是从头开始设计 GPU,接下来他将把这个设计流片出来。
这位初出茅庐的芯片设计师自称是一家 web3 开发公司的创始工程师之一,概述了他迄今为止在探索中所采取的步骤。在下文中,我们列出了他迄今为止已完成的步骤:
1.
学习芯片架构的基础知识——深刻的理解是关键的基础;
2.
学习芯片制造的基础知识——材料、晶圆制备、图案化和封装;
3.
通过逐层制作 CMOS 晶体管开始电子设计自动化;
4.
用 Verilog 创建我的第一个完整电路——“我第一次使用软件对硬件进行编程的经验。”;
5.
为我的电路实施仿真和形式验证;
6.
设计我的第一个完整芯片布局 - 使用 OpenLane进行设计和优化;
正如前文所说,Majmudar 现在面临的重要一步是从头开始设计 GPU。他知道这将是一项艰巨的任务。他同时承认,经过初步调查,这比预想的要困难。这位初出茅庐的芯片设计师解释说,根本没有用于构建 GPU 的在线学习资源。“由于 GPU 公司都试图保守彼此的秘密,因此大多数 GPU 架构数据都是专有且闭源的,”该工程师发现。
尽管存在这一障碍,Majmudar 表示,大型 GPU 制造商的保密性使得该项目的这一部分对他来说更加有趣。Majmudar强调,Anthropic 的 Claude Opus AI 工具在 GPU 设计阶段非常有用。
“我一直向 Claude 提出每个单元必须如何工作的想法,然后它将以某种方式引导我找到正确的实施方法,然后我可以通过开源存储库进行确认,”该工程师解释道。然而,他观察到,“如果我公开搜索一些内容,什么也没有出现,这证明了实施细节的隐藏程度。”
仅用了两周左右的时间就完成了清单中的五分之三任务,上述有关 GPU 的担忧可能会让读者担心 Majmudar 可能遇到了障碍,甚至是难以逾越的墙。但事实似乎并非如此,因为他乐观地预测他的 GPU 设计将在“未来几天内”完成,并且会发送精简版本进行流片。
下面,我们来看一下这个0基础的人是怎么学习芯片设计的。
制定的初步计划
以下是Adam Majmuda计划如何加快芯片设计和制造的整个学习过程
1.
开始准备
-
回顾电路物理 -
-
回顾计算机系统 -
2.
芯片制造 - 芯片实际上是如何制造的?
-
阅读微芯片制造
-
测试:重新观看 szeloof 芯片制造视频,一切都应该有意义,并且应该能够解释它
-
了解ASML机器的发展
-
深入了解 EUV 的工作原理
3.
架构 - 当今芯片中使用的主要芯片设计是什么?
-
了解 x86 与 ARM 与 RISC-V
-
深入学习RISC-V
4.
电子设计自动化 -
您如何设计和验证要送去制造的自己的芯片?
-
学习一个博主的从零开始设计芯片的课程
-
使用 Verilog/OpenLANE/Caravel 设计和测试我自己的 RISC-V ASIC - 现在我正在考虑制作一个最小的 GPU 或转换器加速器,但对任何想法都持开放态度
-
将芯片设计提交到TinyTapeout
5.
ASIC - 不同行业使用哪些特定应用芯片?
它们是如何工作的?
-
AI 加速器 - Untether、Tenstorrent、Etched、Groq
-
电信 - 网络交换机、路由器、网卡等
-
汽车 - 发动机控制单元 、高级驾驶辅助系统 (ADAS) 等
-
Finance - 用于高频交易的 FPGA
6.
技术进步 - 在过去的几十年里,
芯片行业的技术进展如何?
-
导致摩尔定律的进步
-
NVIDIA GPU 的进步
-
台积电制造工艺的进步进展
7.
工业与商业 -
塑造当今芯片行业的主导力量是什么?
-
阅读芯片战争
-
了解 CHIPS 法案和地缘政治
-
了解芯片产业价值链各环节的业务
8.
机会 - 这个领域的重大机会是什么?
-
大公司有哪些重大机遇?
-
适合年轻创业者的重要机会领域有哪些?
-
风险投资的大赌注将在哪里?
-
哪些公司仍然是好的投资?
步骤一:学习芯片架构的基础知识
我首先学习了芯片如何从二进制到C的工作,这部分很关键。为了设计芯片,您需要对所有架构基础知识有深刻的了解,因为您需要不断处理逻辑、门、存储器等。
我查看了整个堆栈:
-
二进制 - 使用电压对数据进行编码
-
晶体管 - 使用半导体创建数字开关
-
CMOS - 使用晶体管构建首款节能逆变器
-
门 - 使用晶体管计算更高级别的布尔逻辑
-
组合逻辑 - 使用门构建布尔逻辑电路
-
顺序逻辑 - 使用组合逻辑持久化数据
-
内存 - 使用顺序逻辑为数据创建存储系统
-
CPU - 结合内存和组合逻辑来创建冯·诺依曼架构,这是图灵完备的第一步
-
机器语言 - 程序存储器中的指令如何映射以控制 CPU 上的信号
-
程序集 - 程序集如何直接映射到 CPU
-
C - C 如何编译成汇编语言,然后编译成机器语言
我有软件背景,充分了解这些层之间的联系,为我解锁了许多直觉。
步骤二:学习芯片制造的基础知识
接下来,我了解了晶体管的实际制造方式。
芯片设计工具都是围绕特定的制造工艺构建的,所以我需要了解这一点才能完全掌握芯片设计流程。
我专注于学习:
-
材料 - 半导体制造需要大量的材料,包括半导体、蚀刻剂、溶剂等,每种材料都有特定的品质,值得使用。
-
晶圆制备 - 制造具有多晶硅晶体的硅晶圆,并在其上“生长”二氧化硅层
-
图案化 - 使用分层、光刻和蚀刻在芯片上创建实际晶体管图案的 10 步工艺
-
封装 - 将芯片封装在保护盖中,以防止损坏、创建 I/O 接口、帮助散热等。
-
污染 - 有趣的是,随着晶体管尺寸的减小,污染控制的焦点有多大/它变得多么重要
在这些主题中,有很多深度需要深入研究,制程的每个部分都有许多不同的方法,每种方法都使用不同的材料和机器。我更专注于广泛了解制程的重要部分。
这里最重要的直觉是,芯片是通过定义不同层的布局来生产的。这些层的设计是芯片设计 过程的输出。
步骤三:通过逐层制作 CMOS 晶体管
开始电子设计自动化
CMOS晶体管是使数字计算起飞的基本结构,因为它具有独特的能源效率
手动绘制CMOS的每一层,使晶体管的设计更加清晰。
在计算机体系结构中,对晶体管的常见解释实际上过于简单化,而逐层设计实际的晶体管迫使我更多地研究实际的实现细节。
查看单个nMOS晶体管的电压和电流图与等效图的比较,也使CMOS的功率效率提升更加明显。
在下图中,每种不同的颜色都指定了不同的层,每层都由不同的材料/离子/等制成,并在制造过程的不同步骤中创建 - 例如,红色多晶硅层是顶部nMOS和底部pMOS晶体管的实际GATE,浅蓝色metal 1层是输入和输出的实际连接。
步骤四:在Verilog中创建第一个完整电路
这部分对我来说是一个很酷的解锁,我第一次使用软件对硬件进行编程。我使用硬件描述语言 Verilog 制作了我的第一个电路。
我制作了一个 RGB 混频器电路,将来自 3 个旋转拨盘的信号(rotating dials )转换为 3 个 LED 的脉冲。
您可以使用HDL来指定单个门,但非常感谢大多数晶圆代工厂都提供标准单元库供客户使用。
标准单元只是常见用途的晶体管排列,它针对效率进行了大量优化,并专为特定的代工厂制造工艺而设计。
这些标准单元库几乎包含大多数设计实际需要的所有逻辑单元,因此您无需过多地关注 gate level。
我使用 Skywater 130nm 工艺节点的标准单元库创建了这个电路。
我知道代码大多是无用的,但我想把它包括给任何好奇的人。时序图显示 3 个不同的旋钮被转动,相应的 LED 被打开。
步骤5:为电路实现仿真和形式验证
由于硬件中的错误成本远远高于软件,使用广泛的测试和形式验证是设计过程的关键部分。
在整个 EDA 流程中,您可以使用:
-
静态定时分析 - 确保没有由于信号在电路中传播而产生的时序误差;
-
有界模型检查和 k 感应 - 确保您的设计不可能进入某些无效状态
-
您还需要确保电路能够进入特定的有效状态
我实施了所有这些步骤,以正式验证我的RGB混频器电路和其他设计是否有效
步骤六:设计我的第一个完整芯片布局
这是迄今为止最酷的部分。我使用 OpenLane对我的设计执行整个综合、优化和布局过程,并提出了一个完整的芯片设计。
只是看到我的Verilog代码变成了实际的芯片布局,并且能够进入并玩弄所有层并点击进入每个门,这真是一个病态的解锁。
OpenLane 流程处理以下所有内容:
-
仿真 - 运行仿真以验证您的设计是否通过了所有测试用例
-
综合 - 将 HDL 转换为显示设计中所有栅极之间连接的网表
-
优化 - 优化设计的面积、性能和功耗
-
布局 - 在物理芯片上布置所有标准单元
-
接线 - 通过正确的接线将所有组件连接在一起
-
验证 - 对最终设计进行形式验证
-
GDS - 创建最终输出文件,称为 GDS2 文件,用于指定要发送到晶圆代工厂进行流片的确切层
在EDA工具:
-
我可以放大并查看单个cell和晶体管
-
我可以有选择地隐藏不同的金属层,以了解所有东西是如何连接的
-
我可以在我的设计中查看能量密度、组件密度等
步骤七:从头开始逆向工程和设计 GPU
我的项目的最初目标是构建一个最小的 GPU。我没有意识到这将有多难。我的期望是,构建 GPU 将类似于构建 CPU,在线上有大量学习资源来弄清楚如何做到这一点。
但是我错了。
由于 GPU 公司都试图相互保密,因此大多数 GPU 架构数据都是专有和闭源的。
NVIDIA 和 AMD 发布了高级架构概述,但完全没有记录其 GPU 如何在低级别工作的所有细节。这让我的事情变得更有趣了——我基本上有一些高级架构文档+一些开源 GPU 设计的尝试,以及关于 GPU 架构的公共学习资源为零。
从这一点开始,我一直在尝试根据我所知道的 GPU 架构的工作方式 + 必须是真实的内容,对 GPU 架构如何工作的细节进行逆向工程。
Claude Opus 在这里提供了巨大的帮助——我一直在向 Claude 提出我的想法,即每个单元必须如何工作,然后以某种方式它将引导我走向正确的实现方法,然后我可以去用开源存储库确认 然而,如果我公开搜索一些东西, 没有显示任何内容,这证明了实现细节的隐藏程度。
所以知道现在,我仍在构建一个最小的 GPU 设计。我还将记录一切是如何运作的,并发布一篇关于它的帖子,以便其他任何好奇的人都能更清楚地了解它。
这将在未来几天内发货,并且可能会发送一个精简版本,以便在 Skywater 130nm 工艺节点上流片。
对这个项目感到非常兴奋!后续,我们也会关注这个最终分享。
点这里加关注,锁定更多原创内容
今天是《半导体行业观察》为您分享的第3734期内容,欢迎关注。
『半导体第一垂直媒体』
实时 专业 原创 深度
公众号ID:icbank
喜欢我们的内容就点“在看”分享给小伙伴哦