关键要点:
集成挑战已不仅限于确保模块正确连接。语义问题是最大的麻烦来源,其中许多都源于规格说明不完整或质量不佳。
复杂性的增加(包括软件内容的增长)使得追踪设计中包含的一切内容变得更具挑战性。
许多设计正在不断逼近功耗和散热极限,这就需要新增一层必须加以规定和追踪的信息。
IP集成并非半导体设计中最光鲜亮丽的工作,但却常常是最麻烦的环节之一。在模块级验证与系统级交互的交汇处,错误往往极难被发现。
1996年虚拟插座接口联盟(VSIA)的成立,对许多人而言,是通过整合第三方IP模块来设计系统这一理念首次成为现实的时刻。该联盟的章程旨在统一和规范IP的构建、验证、交付与支持方式。2008年该联盟解散,原因是其认为工作已经完成,或者将部分工作转交给了其他更专注于具体问题的组织。十八年过去了,这个问题仍在不断演变。
其核心理念是,每家公司应专注于开发设计中新颖独特的部分,贡献自身的专业能力,而将其余部分交由领域专家来开发。
"十年前,一个设计可能包含数十个IP模块,"是德科技EDA部门的SOS产品经理佩德罗·皮雷斯(Pedro Pires)表示。"如今,一家公司可能拥有数千个IP,同一IP的数十个不同版本,你需要理清这一切。此外,它们比过去更具可配置性。随着每个模块所需数据的数量和类型不断增加,以临时方式进行管理正变得十分困难。"
这给验证工作带来了巨大压力。"最棘手的故障几乎从不出现在单个模块内部,"Axiomise创始人兼首席执行官阿希什·达尔巴里(Ashish Darbari)表示。"它们会出现在模块之间——消息依赖性死锁、逐渐泄漏的信用额度、被破坏的重排序缓冲区、跨桥接处被打破的排序规则。每个模块都通过了自身的验证,但系统却因为两个团队对同一协议规则的理解略有不同而发生挂起。"
随着时间推移,跨IP问题的数量不断增加。"从SoC的角度来看,可能涉及许多不同的问题,包括地址映射、中断、一致性、服务质量(QoS)、安全性,"新思科技高性能计算IP产品组合技术产品管理高级总监玛杜米塔·桑亚尔(Madhumita Sanyal)表示。"此外还有一些物理实现方面的情况,比如动态电压频率调整(DVFS),用于降低功耗的动态电压调整。再加上软件和操作系统的交互。如果考虑die-to-die的IP,还涉及互操作性。有已知良品裸片(known-good-die)封装、信号完整性、电源完整性、配电网络、热耦合、遥测等问题。"
虽然设计规模一直在稳步增长,但这本身并不能作为复杂性的指标。"我可能设计一款拥有32个核心的巨型CPU,但那只是同一个东西的32份副本,"IC Manage首席执行官迪恩·德拉科(Dean Drako)表示。"它可能带有一个巨大的缓存,那只是一个单元重复了一亿次。复杂性并不总是与芯片规模成正比。它们很复杂,但复杂性并未随芯片规模线性增长。人脑难以应对这一点。"
真正重要的是一个模块对其周围环境做出了多少假设,而这个数字的增长速度远快于规模的增长。"一个UART只需要时钟、复位和寄存器接口,仅此而已,"Axiomise的达尔巴里表示。"一个一致性缓存、CHI home node或NoC则携带数百项假设。其中有排序规则、信用契约、未完成事务的数量限制、复位和电源时序、地址映射预期以及安全属性。除此之外,还有数据手册往往无法完全解释清楚其影响的配置参数。"
日益增加的压力
许多方面都在加剧集成压力,例如IP模块规格说明书写得糟糕或不完整。在系统层面,软件复杂性不断增加,功耗和散热问题日益突出——尤其是与chiplet相关的问题、模拟内容的增多,以及许可、地缘政治限制和出口管制带来的额外复杂性。以下将简要论及每一方面。
糟糕或不完整的规格说明:规格说明书向来难以做到毫无歧义或完整无缺。"这些信息往往不够完整,无法让你准确了解系统在各种情况下将如何表现,"是德科技的皮雷斯表示。"了解系统将在何种条件下运行可能会对你有所帮助,这取决于你的IP文档质量。也许这些IP所携带的信息恰好与那组特定情况相关,从这个意义上说,了解系统的运行环境会对你有帮助,但也可能帮不上忙。"
这个问题通常是在出现漏洞逃逸时才被发现的。"架构师、设计师、软件团队、DV负责人和形式化验证团队都看着同一个故障,却各自看到不同的东西,"达尔巴里表示。"没有人能就系统本应做什么达成一致,因为从来没有人把它以一种大家共享的形式写下来。这些分歧从第一天起就存在。它们只是在两年后才浮出水面,而且往往是在流片后调试阶段,这时修复成本最为高昂。"
软件复杂性:虽然有些软件是完全封装并对任何外部接口隐藏的,但大多数并非如此。"即便是像PHY这样简单的东西,也包含大量软件内容,"新思科技的桑亚尔表示。"有负责建立所有时钟、复位和内存的引导固件。然后PHY还有校准固件,负责初始校准和自适应,并且会持续更新。该驱动程序需要与操作系统的中断和DMA框架相连接,还要兼顾BIOS、管理程序或一致性、PCI控制器的IOMMU依赖关系等等。这些都将依赖关系延伸到了拓扑结构与操作系统服务以及电源管理框架之间的中断上。"
这些问题棘手到UCIe标准都试图加以解决。"UCIe 3.0标准化了固件在初始化早期的下载方式,"达尔巴里表示。"问题在于,硬件通常只有在某些软件假设成立的条件下才是正确的。例如,寄存器可能必须按特定顺序编程,或者在事务进行期间绝不能写入某个字段。这些规则很少被写下来,而RTL验证本身从不会检查这些规则。"
硬件与软件之间的鸿沟很大。"软件的世界和硬件的世界截然不同,这意味着操作硬件的人和操作软件的人是不同的,"皮雷斯表示。"这其中包括固件,即与IP紧密相连的软件。这两个团队的工作流程和节奏也不相同。"
功耗与散热:功耗控制正成为一个日益严重的问题。"电源管理已经成为一项功能性特性,也是功能性漏洞的主要来源,"达尔巴里表示。"每个电源域都会增加状态、转换、隔离和唤醒序列。一个模块在上电时可能完全正确,但当其邻接模块在传输过程中断电时,仍可能丢失事务或导致握手挂起。诸如'如果该域在响应未完成时关闭,该请求是否会丢失'这类问题,是典型的形式化验证难题。仿真很少能恰好命中出错的那个周期。"
功耗消耗会产生热量,进而可能改变敏感电路的行为。"随着功耗和散热如今成为SoC的限制因素,模拟IP不能再只是被动地坐在那里,"Agile Analog产品营销副总裁克里斯·莫里森(Chris Morrison)表示。"我们必须设计它来主动管理芯片,使用嵌入式PVT传感器、时序监测器、压降检测器和毛刺检测器,将实时遥测数据反馈给电源管理单元,在问题影响运行之前就捕捉到它们。"
模拟内容:模拟内容向来面临独特的挑战。"这些IP的运行范围有限,并且是针对特定用例高度定制的,"皮雷斯表示。"虽然AI在许多领域都有所帮助,但我们发现在创建AI自动化来加速射频和模拟设计方面存在巨大挑战,原因在于数据的稀缺性。要获得一个质量良好、数量足够的数据集,用来训练智能体完成你流程中的特定部分,并非易事。这些信息更加定制化、聚焦且狭窄,而且往往是我们无法获取的专有信息。"
模拟模块的创建者正在寻找将其设计抽象到数字世界的方法。"客户越来越多地要求提供完整的模拟子系统,而不愿与十几个独立模块纠缠,"Agile Analog的莫里森表示。"在SoC层面用SPICE仿真大型模拟子系统耗时过长,因此可以通过用数字封装包裹IP来简化验证。在内部完成繁重的混合信号处理工作,意味着数字SoC集成团队可以尽早采用SystemVerilog实数模型(RNM),并在其数字环境中运行全芯片验证。"
Chiplet:Chiplet可以被视为IP的一种新型物理交付机制。"Chiplet放大了这个问题,并使其也成为一个供应链集成问题,"新思科技系统解决方案战略项目执行总监弗兰克·希尔迈斯特(Frank Schirrmeister)表示。"你不仅要面对IP本身的问题,还要把设计从SoC边界上移到封装边界。这就把IP集成变成了供应链集成。你不仅要集成各种设计,还要集成这些可能来自不同公司、不同制程节点和不同代工厂的组件,而它们各自在IP层面都有自己的验证方法。"
所有的集成问题都不会凭空消失。"NoC如今正被拉伸跨越裸片边界,因此几个裸片看起来像一个整体结构,"达尔巴里表示。"UCIe很好地处理了物理层和链路层,跨厂商互操作性也已得到验证。但一条能工作的链路并不等于一个能工作的系统。你仍然需要就地址映射、一致性模型和软件达成一致,而这些恰恰正是标准所留下的语义层面的空白问题。目前的规范还涵盖了可测试性设计(DFD)、可测试性(DFT)、可制造性设计(DFM)以及可管理性,因此chiplet开始看起来不再像一个被动的模块,而更像一个拥有自身管理固件的小型系统。"
Chiplet所需的信息甚至比IP模块更多。"现在出现了多物理场的问题,这意味着你需要掌握关于所管理IP的更多信息,"皮雷斯表示。"把所有这些数据整合在一起正变得越来越难以驾驭。这意味着伴随你的IP一起流转的复杂性在增加。例如,功耗意图需要作为附加产物随IP一同传递。"
验证:对于IP而言,尤其是对chiplet而言,对模块内部的可见性使验证变得更加困难。"大型IP越来越多地以加密形式交付,因此你无法读取RTL来弄清楚它到底期望什么,"达尔巴里表示。"你只能依靠文档,而根据我的经验,漏洞往往就藏在文档里。这些模块现在也更多地是作为生成器而非固定设计来交付的。供应商验证了某一组配置,但你流片的可能是另一种配置。当参数超过几个之后,很容易碰上一种没有人测试过的组合。"
好消息应该是,并非IP的每一项功能都需要验证。"识别出功能的合法子集是一项架构和验证任务,"桑亚尔表示。"这并非一刀切就能自动化完成的事情。如果你关注其验证方面,现在已经有AI模型,我们在使用,我们的客户也在使用,用以比以往更快地找到那些边界情况。这正是进入验证环节的部分。"
版本控制
很少有东西能一次就做到完美。初版发布后漏洞总是会被修复。"非AI的版本就是关于IP生命周期管理,"IC Manage的德拉科表示。"有了AI,这些生命周期可能会推进得更快,但你仍然需要管理这些生命周期。也许你可以让AI替你完成,但你必须具备数据和系统来加以追踪,知道你流片了什么、构建了什么、什么被用在了什么地方、哪个IP被用在了哪里。"
硬件和软件的发布与更新遵循不同的时间表。"现场的一次固件更新可能会改变芯片在签核之后的行为方式,"达尔巴里表示。"中断、电源状态、DMA缓冲区和安全属性是硬件与软件共享的,而冲突往往在启动调试阶段浮出水面,那时第一个真正的驱动程序会执行一段没有人规定过的序列。"
硬件和软件通常使用不同的版本控制机制。"这个挑战与将所有这些数据整合到单一系统中有关,"皮雷斯表示。"你硬件的某个特定版本需要对应软件的某个特定版本,而这种关联往往存在于Excel表格中,这既混乱又容易出错。当你在集成一个系统时,你需要管理配置本身,比如特定系统的物料清单,即你系统中所拥有的组件的具体组合。每次你对其进行更改,都需要让它持久保存下来。你需要保存它,以便具备可追溯性。"
结语
这看起来似乎是一个日益令人担忧的问题。但正如EDA领域内大多数问题一样,随着问题的增长,它所受到的关注也随之增加,而对该问题的投入最终会带来更好的解决方案。
"管理问题正在增长,但解决该问题的机制也在随之演进,"皮雷斯表示。"从相对意义上说,痛点保持不变,但其背后的问题却在变得更大。"
编者注:本报告的第二部分将探讨近期的改进情况,以及AI如何被用于改善IP的选择、配置与集成。
相关文章
加速IP复用
如何将1000个IP模块放入一个芯片设计中并确保它们协同工作。
纵向集成日益普及
没有对硬件和软件的共同理解,任何系统都无法得到优化,而做出正确的架构选择需要双方的协作。
