多芯片设计 Designing For Multiple Die
Why a system-level approach is essential, and why it's so challenging
作者:Ann Mutschler
Ann Mutschler is executive editor at Semiconductor Engineering.
将多个裸片或芯粒集成到一个封装中,与将它们放在同一硅片上有着很大的区别。在同一硅片上,它们使用相同的制造工艺开发。
随着设计变得更加异构heterogeneous 和分解disaggregated,需要在系统环境中对其进行建模、适当的平面规划、验证和调试,而不是将其作为独立的组件处理。通常情况下,这种设计过程首先需要建立一个始于高层次抽象的系统完整规范specification 。然后将规范specification 拆分成功能模块并分配给各个设计人员,以便他们独立的优化设计。最后,将所有子系统作为一个整体重新组合、验证和测试。
在最简单的设计中,只有很少的小芯片和相对简单的互连,设计过程类似于具有几个大块的SoC。西门子数字工业软件公司DRC应用和Calibre设计解决方案的营销总监John Ferguson说:“不同的团队需要协调形状、面积、引脚位置及其连接等问题。” 对于数字设计而言,这种方法将现有的place&routre技术进行了延伸。但每增加一个芯粒或者互连,就会变得更加复杂。
最初,系统公司推动了转向异构架构,他们希望提高特定数据类型的性能,同时尽可能地省电。现在,芯片制造商正在研究如何将这种功率和性能优化方式扩展到更多的市场,同时使这种优化过程简化并且标准化,并使其更具成本效益。
“目前正在发生根本性的变化,芯片正在解构 (disruption)”Synopsys公司的高级营销总监Shekhar Kapoor说到,“以前,人们通过把芯片迁移到下一个节点来获得性能和功能的受益。但现在,这些受益正在消失,成本却在上涨。因此必须考虑‘分解’,并从成本的角度来看待异质集成。过去,芯片在片内进行功能分块,而现在,如果你将芯片分割成多个裸片,每一个block或裸片就是一个芯粒,你可以在下一个设计中重新使用它。'Multiple die'概念包含了各个方面,而'chiplet'则侧重于它的reuse方面。”
“然而,要实现这种异构架构需要一种截然不同的芯片设计方式。”Cadence公司Custom IC & PCB Group 主任John Park解释道,“你需要引入系统级聚合工具的概念,以便从单一芯片设计向多芯片设计过渡。你不再是在设计一个单独的芯片,而是在设计多个chiplet及其封装方式的组合。”
优化Die-to-Die的连接是至关重要的。但也需要考虑到其他芯片和IP,以及可能组建的其他系统。
“你需要在系统层面,而不是芯片层面,来验证chiplet A与chiplet B的连接”Park说道,“这是系统级设计的转变,也是摆脱单片式芯片的第一步。你需要引入一种能够组装和优化系统的工具。这将作为你的golden netlist来进行系统级的LVS(layout versus schematic)。这非常关键。如果设计者在一开始方式就错了,那他们可能会在流程进行到一半时遇到很多问题。
一些最大的挑战和限制涉及到设计中的功率、热、应力和EM-IR等。
“如果只是二维设计,这些问题就更容易解决”Ferguson 指出,“但是,随着堆叠或连接chiplets的复杂方式越来越多,这些挑战也变得更加困难。我希望我们能够达到每个人都有约束条件、有一些合理的保护来防止问题的地步。但由于连接这些东西的方式有着如此多的不同可能性组合,需要确定的这些约束条件就会更加复杂,每个堆叠/连接项目都会变得更加复杂和棘手。”
另一个需要考虑的因素是,multiple-die中的die并一定就是chiplet。“有时候是die,有时候是chiplet”Park说,"直到三年前左右,它被称为multi-chip modules(MCM),而我们现在所说的multi-die modules。也就是将芯片从它们的封装器件中取出,将裸芯片安装在层压板基材上,这就是所谓的SiP/MCM模块。这些不会因为我们进入chiplet世界而消失。”
智能手机多年来一直采用系统级封装(SiP),特别是射频和模拟组件。Park指出:“这当然是异质集成,但我们并不关心它们是在哪个节点上建造的,或者是用哪种技术建造的。在过去,我们只是没有使用异构集成这个词。”
芯粒将是下一个增长阶段。Keysight的应用开发工程师和科学家Matthew Ozalas说:“我们希望尝试在芯粒空间里建立一些标准。因为它真的很新,而且似乎对未来非常重要 - 不仅在数字领域,而且在堆栈内存方面也是如此。”随着无线6G系统的发展,芯粒可能是到达该领域的唯一途径。通常情况下,它从低级别或数字开始演化,因为芯片已经可以用功能块构建。最终,前沿总是高频射频微波,因此这将是chiplet的领域。
原因是高频射频不是一个标准化的设计过程。“如果你看数字芯片,这些芯片中有数十亿个晶体管,没有人能进行晶体管级别的设计”Ozalas说,“因此,人们建立这些功能块,并将它们很好地整合在一起。例如,他们会在数字芯片中建立加法器块,并将这些块粘合在一起。他们已经在做这种块状功能/块状水平设计。如果你是数字设计师,你并不真正与晶体管一起工作。你唯一真正接触到晶体管的时候是当你遇到可靠性问题时,或者当其中一个晶体管出现问题时,它吸收了太多电流或变得太热,或者导致你的各种闩锁问题。模拟技术紧随其后,也有一些功能块。然后,当我们进入射频和微波领域时,几乎全部都是晶体管。那里的设计人员都在使用晶体管。这是很微妙的事情。虽然我们希望在系统中有一个低噪声放大器,但这些元件都是高频的。它们确实是功能块,但不是那么标准。如果晶体管拓扑技术发生变化,这些元件不会随之缩小。所以一切都需要改变。”
他说,这就是为什么高频模块最终成为了最后的前沿。“无论你看到哪里,这都是事实,芯片模块也是如此。如果你正在构建一个芯片模块,你可以使用高频电路构建一个功能块。但是将它们组合在一起并让它们完美地工作就更困难了。”
成本也是芯片模块越来越考虑的因素。“人们正在为摩尔定律的终结而设计”Cadence的Park说,“他们正在从单片的巨大SoC和ASIC转向解构(disaggregated )或模块化方法,其中这些大型芯片上的IP已经分解为芯片模块。在这里,每个芯片模块都可以在最有意义的技术上进行设计。”
“在某种程度上简化了设计,因为传统的I/O,例如PCIe或SerDes,仍然可以与最先进的逻辑一起使用。这可能不会改变板子上和晶片上所使用的I/O连接方式”Cadence IP Group的产品营销组主管Wendy Wu说,“但对于芯片模块方法,设计团队将使用更具新兴性质的Die-to-Die I/O,这是非常低功耗的,可能在五年前还不存在。”
chiplet通常是side by side布局的,但它们也可以堆叠在2.5D封装中,使用中间层,或者堆叠在3D-IC中。Park认为硅中介层(silicon interposers)将会消失,并会向有机中介层(organic interposer)和interconnect bridges两个方向演进。
Extra questions with multiple die
Multiple-die的一个重要考虑是共同设计。“当工程团队开始把这些系统组合成装配体时,他们不可能知道限制是什么,直到他们定义该装配系统是什么。”西门子数字工业软件公司Calibre接口和mPower产品管理高级主管Joseph Davis说:“人们现在想做的一件大事是把来自不同制造商的小芯片放在一起。这就成了一个系统问题,现在所有的模型和限制都从不同的代工厂跨越出来,进入第三方。从知识产权的角度来看,这是令人难以置信的挑战。如果你真的想从集成的角度推动你能做的事情的界限,你也在你能做的事情周围画了一个框,因为现在你必须从一个制造商那里做所有事情。”
以如今的复杂程度,每个stack 都是独一无二的。“你不能说适用于2.5D的设计就适用于3D”戴维斯指出。“当你开始制造这些东西时,你就有了技术兼容性问题。即使在一个代工厂内,每次客户说:'嘿,我想做这个stack',他们必须解释:‘我想把这个芯片和这个芯片放在一起,这个芯片要在这里,还要一个interposer。’然后晶圆厂必须与参与其中的EDA供应商合作,提供所有配套的材料。你不能只是拿着标准的PDK,然后在它们周围放上一些 baling wire 。”
Synopsys的Kapoor认为第一个挑战是产品规格(spec )的定义。“例如,这可能是你的下一个移动设计,或下一个数据服务器设计。所以现在你必须打破它。你如何打破它呢?从系统功能的角度来看,哪些部分是由硬件处理的?哪一部分是由软件处理的?对于一些客户来说,这很容易。这只是一个存储和逻辑的权衡问题。但是当你把逻辑分割开来的时候,就会使问题大大复杂化。它分成了很多部分。关键部分是什么?GPU、CPU和I/O。你如何把它们放到理想的package中?你要使用什么互连结构,这有助于你满足某些约束和规范?这些决定过去很简单,可以在PowerPoint或Excel或Visio中完成。”
现在,为了探索的目的,需要有更复杂的工具。“这些工具必须更加复杂,以便在前面带来一些分析”Kapoor 说,“散热问题(Thermal)是一个典型的例子。设计团队过去从未考虑过散热,除非他们在做PCB封装设计或系统设计。现在,这些都需要在设计早期考虑。所以他们必须在做早期架构设计时开始考虑热能作为一种约束条件。一旦你决定了如何拆分设计,那么从封装和连接的角度来看,什么是最好的和最经济的配置?你还能满足你的PPA吗?PPA总是要存在的,而现在你被分割到了整个芯片上。你又该如何权衡呢?”
Enabling chiplets
在过去五年左右的时间里,衍生(derivative )设计变得更具挑战性。“你掌握一种核心技术,然后有一个较长的那种跨越式发展,"西门子的Davis说。"然后下一个将是一项新技术,然后我们再加倍。所以行业开始说,'等一下,我是不是可以做一个芯粒,然后把两个或四个或八个它放在一个基板上,而不必重新做一个新的流片(tape-out),这样是否可以?’这都是在组装层面,而不是硅层面,所以这非常有吸引力。”
有吸引力?确实。简单?一点也不!这个方法确实有吸引力,但并不简单。对于初创公司或中等规模的公司来说,这种方法可能会让人望而却步。“对于单个芯片,有许多不同的集成商可以处理这种封装模式和集成,并与代工厂合作。但是,如果你现在要做一个定制的集合(collection),能够胜任的人会非常有限。你可能需要考虑将这项工作内部化,并验证你的功能,因为现在有更多的东西需要在系统验证中完成。从系统的角度来看,可靠性验证变得非常困难,而且制造和采购决策也更加复杂。你的制造决策可能意味着需要雇用五个人而不是一个。这在很大程度上是一项开创性(bootstrap )的事情。而且,值得一提的是,全国可能只有五个人有这方面的经验,嗯,而且,他们可能只有三年的经验。”
在芯片的预计寿命内确保可靠性变得更加具有挑战性。Kapoor指出:“因为你分割了芯片,你现在有更多的互连和接口,其中任何一个都可能出现故障,都会成为安全问题的入口。”虽然KGD(已知好芯片)已经被广泛讨论,但如何真正引入监控部分以及如何确保它在整个流程中都是可观察、可优化和可测试的,这些都是新的挑战。
此外,工程团队如何有效地完成所有这些工作?如果说单芯片设计是困难的,那么多芯片系统则引出了对新模式和标准化的需求。
“传统的芯片工作方式是采用一个基于buffer的die-to-die通信边界用于驱动和接收信号,处理SD和测试等”Cadence的Park说,“但现在它们(buffer)变得更小了,因为我们没有大电容负载一路通到电路板上。这意味着你要进行寄存器到寄存器之间的时序分析等,并通过混合键(hybrid bond)在两个不同器件之间传递信号。在多芯片设计中,您需要验证协议完整性(compliance),这可能基于AIB、UCIe、BoW或其他标准。现在有许多新兴的芯片标准,您还要验证这些标准的信号完整性。您基本上是通过一些具有正确信号行为的互连通道来验证收发器的工作,而且在该接口上没有太多的抖动或噪音。这使得信号完整性成为一个系统级问题,这个行业已经做了40多年了。”
问题在于,芯片设计者并不一定知道如何实现这一点。“数字芯片设计者只关心时序分析,而对于理解信号完整性的挑战和重要性则关注较少。由于所有这些原因,多芯片设计,包括3D异质集成,需要被视为一个系统,而不是一个单独的芯片。”
相关文章:
多芯片设计 Designing For Multiple Die
Why a system-level approach is essential, and why its so challenging作者:Ann MutschlerAnn Mutschler is executive editor at Semiconductor Engineering.将多个裸片或芯粒集成到一个封装中,与将它们放在同一硅片上有着很大的区别。在同一硅片上&a…...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)
目录 竞赛内容 模块A 基础设施设置与安全加固 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一 登录安全加固(Windows, Linux) 1.密码策略(Windows, …...
数据结构-简介
目录 1、简介 2、作用 3、分类 4、实现分类 1、简介 数据结构指的是组织和存储数据的方法。它涉及到一系列的算法和原则,用来设计和实现不同种类的数据类型,如数组、链表、树、图等等。数据结构的目的是在计算机程序中有效地管理和操作数据ÿ…...
python装饰器及其用法
python装饰器是什么? Python装饰器是一种语法结构,它可以让开发者在不修改原函数的基础上,在函数的前后运行额外的代码,这些代码可以达到修改函数行为的目的。Python装饰器的实质是一个可调用的对象,它可以接收函数作为参数…...
Appium自动化测试之启动时跳过初始化设置
Appium每次启动时都会检查和安装Appium Settings,这是完全没有必要的,在首次使用Appium连接设备是Appium Settings便已经安装好。怎样跳过安装Appium Settings呢?之前的做法是修改appium中的源文件中的android-helpers.js实现,如M…...
JavaScript DOM【快速掌握知识点】
目录 DOM简介 获取元素 修改元素 添加和移除元素 事件处理 DOM简介 JavaScript DOM 是指 JavaScript 中的文档对象模型(Document Object Model);它允许 JavaScript 与 HTML 页面交互,使开发者可以通过编程方式动态地修改网页…...
不需要高深技术,只需要Python:创建一个可定制的HTTP服务器!
目录 1、编写服务端代码,命名为httpserver.py文件。 2、编写网页htmlcss文件,命名为index.html和style.css文件。 3、复制htmlcss到服务端py文件同一文件夹下。 4、运行服务端程序。 5、浏览器中输入localhost:8080显示如下: 要编写一个简单的能发布…...
渗透测试常用浏览器插件汇总
1、shodan这个插件可以自动探测当前网站所属的国家、城市,解析IP地址以及开放的服务和端口,包括但不限于FTP、DNS、SSH或者其他服务等,属被动信息搜集中的一种。2、hackbar(收费之后用Max Hackerbar代替)这个插件可用于…...
社区1月月报|OceanBase 4.1 即将发版,哪些功能将会更新?
我们每个月都会和大家展开一次社区进展的汇报沟通会,希望通过更多的互动交流让OceanBase 开源社区更加透明,实现信息共享,也希望能营造更加轻松的氛围,为大家答疑解惑,让大家畅所欲言。如果您对我们的社区有任何建议&a…...
Javascript的API基本内容(二)
一、事件监听 结合 DOM 使用事件时,需要为 DOM 对象添加事件监听,等待事件发生(触发)时,便立即调用一个函数。 addEventListener 是 DOM 对象专门用来添加事件监听的方法,它的两个参数分别为【事件类型】和…...
ChatGPT热度“狂飙”,OceanBase也去找它唠了唠
最近互联网的关键字 非 ChatGPT 莫属 就是这个小东西 集唠嗑、提问、答疑、科普、写作于一体 让我看看哪个孤独的打工人 还没和 ChatGPT 聊上一聊 有人说 ChatGPT 这么智能 或将取代人类的工作 OceanBase 的小编表示不服气 于是,抱着好奇之心试了一试 对 …...
HTTP协议基础知识点扫盲;HTTPS协议及密码学基础
目录 一、Http协议的特性 二、http协议的请求 1.请求行第一行,包含三个信息:请求方式,url,http协议版本 2.请求头浏览器向服务器发送一些状态数据,标识数据等等 3.请求主体请求代理端项服务器端,发送的…...
【golang/go语言】Go语言之反射
本文参考了李文周的博客——Go语言基础之反射。 一、反射初识 1. 什么是反射 在计算机科学中,反射是指计算机程序在运行时(run time)可以访问、检测和修改它本身状态和行为的一种能力。用比喻来说,反射就是程序在运行的时候能够…...
Java+Swing+Mysql实现超市管理系统
一、系统介绍1.开发环境操作系统:Win10开发工具 :IDEA2018JDK版本:jdk1.8数据库:Mysql8.02.技术选型JavaSwingMysql3.功能模块4.系统功能1.系统登录登出管理员可以登录、退出系统2.商品信息管理管理员可以对商品信息进行查询、添加…...
华为OD机试题,用 Java 解【机器人走迷宫】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
软件测试基本概念
软件测试基本概念 1. 什么是软件测试 软件测试就是验证软件产品特性(功能, 界面, 兼容性, 性能…)是否符合用户的需求,同时软件测试不仅要测试系统是否做了其应该做的, 还需要测试系统是否未作其不应该做的。 2. 调试与测试 软件测试与调试的区别: …...
数学建模介绍
🚀write in front🚀 📜所属专栏: 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我最大的激励…...
【LVGL】学习笔记--(2)GUI Guider的使用
基于上一篇【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL,已经成功地移植了LVGL到我们的嵌入式板子上,并配合磁控旋钮编码器(或者诸如触摸屏、按键、键盘等其他输入设备均可),实现了简单界面的显示工作。这一章将学习…...
OpenCV-PyQT项目实战(6)项目案例02:滚动条应用
欢迎关注『OpenCV-PyQT项目实战 Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战(3)信号与槽机制 …...
3 决策树及Python实现
1 主要思想 1.1 数据 1.2 训练和使用模型 训练:建立模型(树) 测试:使用模型(树) Weka演示ID3(终端用户模式) 双击weka.jar选择Explorer载入weather.arff选择trees–>ID3构建树…...
小程序和Vue+uniapp+unicloud培训课件
文章目录**一、什么是小程序****1.1** **小程序简介****1.2** **小程序的特点****1.3** **小程序的开发流程**个人小程序和企业小程序的区别1.4 小程序代码构成1.4.1 JSON 配置1.4.2 WXML 模板**数据绑定**逻辑语法条件逻辑列表渲染模板引用共同属性1.4.3 WXSS 样式1.4.4 JS 逻…...
C语言--指针进阶2
目录前言函数指针函数指针数组指向函数指针数组的指针回调函数前言 本篇文章我们将继续学习指针进阶的有关内容 函数指针 我们依然用类比的方法1来理解函数指针这一全新的概念,如图1 我们用一段代码来验证一下: int Add(int x, int y) {return xy;…...
【步进电机和 Arduino】
【步进电机和 Arduino】 前言1. 什么是步进电机及其工作原理?1.1 步进电机结构1.2 绕线方式1.3 通电方式2. 如何使用Arduino和A17步进驱动器控制NEMA4988步进电机2.1 A4988 和 Arduino 连接2.2 测量AB相2.3 A4988 限流3. 步进电机和 Arduino3.1 示例代码 13.2 示例代码 24. 使…...
【面试一:|和||、和区别】
相同点: ||和&&都是逻辑运算符,而|和&是位运算符。位运算符的优先级要比逻辑运算符的优先级高。 &和&&的区别 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运…...
【一天一门编程语言】使用汇编语言实现斐波那契数列
文章目录使用汇编语言实现斐波那契数列一、什么是斐波那契数列二、如何用汇编语言实现斐波那契数列一、汇编语言概念1.1 什么是汇编语言1.2 汇编语言的特点二、汇编语言指令2.1 简单指令2.2 复杂指令汇编语言程序结构代码实例指令集常用指令指令代码实例使用汇编语言实现斐波那…...
RabbitMQ实现死信队列
目录死信队列是什么怎样实现一个死信队列说明实现过程导入依赖添加配置编写mq配置类添加业务队列的消费者添加死信队列的消费者添加消息发送者添加消息测试类测试死信队列的应用场景总结死信队列是什么 “死信”是RabbitMQ中的一种消息机制,当你在消费消息时&#…...
【Linux】安装Tomcat教程
目录 1.上传安装包 2.解压安装包 3.启动Tomcat 4.查看启动日志 5.查看进程 6.开放端口 7.停止Tomcat 1.上传安装包 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux(与前面上传JDK安装包步骤 一致)。 2.解压安装包 将上传上来的安装包解压到指定目录…...
学习笔记之Vuex(五)
Vuex(五)Vuex一、什么是Vuex二、Vuex工作原理三、搭建Vuex环境四、求和案例分析4.1 求和案例——vue实现4.2 求和案例——vuex实现(五)Vuex 一、什么是Vuex 1.概念 在Vue中实现集中式状态(数据)管理的一…...
SSM知识快速复习
SSM知识快速复习SpringIOCDIIOC容器在Spring中的实现常用注解Autowired注解的原理AOP相关术语作用动态代理实现原理事务Transactional事务属性:只读事务属性:超时事务属性:回滚策略事务属性:事务隔离级别事务属性:事务…...
【Linux】安装MySQL
目录 1.检测当前系统是否安装过MySQL相关数据库 2. 卸载现有的MySQL数据库 3.上传解压 4.顺序安装rpm包 5.启动MySQL 6.查看临时密码 7.登录MySQL 8.开放端口 1.检测当前系统是否安装过MySQL相关数据库 需要通过rpm相关指令,来查询当前系统中是否存在已安…...
网站建设 网站运营/山西seo谷歌关键词优化工具
1.new的实现 让我们先看看new做了什么事情 (1).创建了一个对象 (2).使新建的对象的__proto__指向了构造函数的原型对象prototype (3).使构造函数中的内部属性指向新建的对象 (4).返回一个对象 知道new做了哪些事情后就好办了function myNew(fn,...arg){// 创建一个新对象 var …...
上海网站建设推荐案例/设计模板网站
C通过虚函数来实现多态,也就是让父类指针指向子类,在运行时根据指针指向的对象的实际类型来确定调用子类或者父类中的某个函数。 1 class Base2 {3 public :4 virtual void f() { cout<<"Base::f()"<<endl ; }5 virtual v…...
大连seo外包公司/品牌推广百度seo
1.软件的前期准备分为“需求准备”和“构建准备”,两者都有系统的规范。code complete中对这两者都提出了详细的确认方法。这里的确认方法并非戒律,而更像备忘。 2.在构建活动中的设计部分,书中提出了几大范围,我个人觉得划分得非…...
西宁建站/微信营销软件排行榜
文章目录1.分布式微服务项目是如何设计的2.cookie和session的区别,如何用session进行身份验证3.token,jwt,如何通过token进行身份验证4.为什么token可以预防CSRF,cookie无法防止5.分布式下,session共享方案1.分布式微服务项目是如何设计的 1.负载层 2.业务层 3.能力层(中台) 4…...
网站开发和app开发哪个难/2345网址大全浏览器
网络故障是弱电工作中最易常见的问题,尤其是我们弱电人经常与网络打交道,那么如何才能进行网络排查,快速解决问题呢?这些基本的技术是必不可少的,我们一起来看下。一、网络排错必备为什么还要必备条件?因为…...
温州微网站制作电话/武汉网站seo公司
关于JavaScript中this指向问题 js中,this在不同情况下指向对象很复杂,分成很多种情况。 this指向window情况 注意:所有this指向window的情况,在严格模式下,this值为undefined 严格模式下,apply(),call()…...