多芯片设计 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构建树…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...