让芯片设计更加敏捷的两个方法

分享到:

由于敏捷方法能够提高生产力和质量,业界对硬件设计的兴趣也随之增加。然而,广泛认为硬件领域的成功仍然受到限制。但实际情况可能比想象中要好,因为硬件上的敏捷性趋势没有明确标记。举例来说,我们看到把 IP级别的设计和验证从 SoC级别中分离出来。因此,不同的 IP团队从 SoC项目的“列车模型”中异步操作,在 SoC设计完成后,可以选择任意版本的 IP。尽管这一方法并没有被贴上敏捷的标签,但是它确实符合敏捷哲学。 

敏捷设计发展的最大阻力——算力

芯片流片的高成本和流片后无法更改设计通常被认为是敏捷方法不能很好地映射到到硬件设计的关键原因。但是,流片后无法敏捷并不一定意味着我们不能在流片前更加敏捷。

在硬件设计中采用敏捷性设计最大阻力之一是硬件验证的复杂性。测试软件程序只需要执行该程序所需的计算,当然测试会全速运行。

测试硬件设计需要一个模拟器程序,该程序可以在软件中模拟芯片设计在硬件中制造时的行为。这个模拟器程序的计算非常昂贵,但其执行速度比它正在模拟的真实芯片的速度慢数千倍。

设计硬件的公司在测试其设计时会受到计算能力的限制。几家支持系统设计的公司都提供特殊的仿真加速器,它们使用专为仿真加速而设计的专用处理器或FPGA。这些系统的模拟速度比通用服务器上的模拟快数百倍,它们的成本也相应地更加昂贵。因此,设计团队发现他们在这些平台上的计算资源同样有限。

敏捷设计需要持续集成和测试,不仅是单元级别,整个系统级别同样如此。如果测试受限于计算能力,那么敏捷设计需要更高的计算效率,尤其是在系统级别。例如,一个典型的现代SoC需要在数千台机器的服务器群上进行长达五天的连续计算来完成一组基本的完整芯片测试。在如此极端的计算背景下,设计团队如何才能让芯片设计变得更加敏捷?

解决敏捷计算挑战的两个方法

有两个关键方法可以推动解决敏捷硬件设计中的计算障碍:通过参数化减少设计规模和通过计算物流(计算物流涉及使用计算和高等数学来规划和实施大型和复杂的任务。计算物流应用于许多领域,包括货物、服务和相关信息从原产地到消费地的流动和储存。)减少测试规模。

第一,参数化。复制在SoC设计中越来越普遍,无论是IP级复制(如多核 CPU),还是架构级复制(如GPU中的着色器内核或AI加速器中的MAC节点)。通过利用参数化,可以在某种形式的参数化下将更多相似但不同的事物融合在一起,从而显着增强复制的范围。

设计中的复制越多,自动生成设计的缩减配置的可能性就越大,这些配置更小但对测试仍然有意义。参数化的使用越复杂,在SoC级别最小化用于测试特定功能的设计尺寸就越灵活。

System Verilog等主流硬件描述语言(HDL)已经很好地支持复制和参数化,但可以通过采用更高级的语言作为HDL生成器来进一步启用它们。例如,SystemC、Matlab、Python或Chisel。与分离IP和SoC级设计的趋势一样,采用高级语言进行硬件设计也出现了类似的趋势。

至于计算物流,如果我们在敏捷设计方法下持续集成和测试,那么每次集成和测试都是对之前的集成和测试的增量。对于给定的增量设计更改,计算逻辑意味着自动确定最佳设计配置、测试集和测试配置,以便以最低的计算成本提供良好的验证质量。

可以将其视为一类新的EDA工具——一个引擎在完整的验证流程中控制所有其它引擎。

我们看到了通过计算物流提高验证计算效率的巨大潜力,特别是如果期待异构的、基于云的未来,在广泛的模拟和仿真平台上可以对无限使用容量进行计费。正如计算物流改变了UPS和FedEx等运输公司的包裹吞吐量一样,它也可以改变硬件设计中的验证吞吐量。

总结

虽然硬件设计变得更加敏捷,但是还有很多地方可以改进。相对于软件验证而言,这一改进的主要障碍是硬件验证的计算量很大。在测试中,我们可以利用复制、参数化和高级语言作为作为HDL生成器来最小化设计尺寸。利用计算物流,我们可以将测试工作降到最低,并进一步优化测试中的设计尺寸,尤其是在支持云的未来和基于使用无限制验证计算的可用性方面。

 

继续阅读
让芯片设计更加敏捷的两个方法

由于敏捷方法能够提高生产力和质量,业界对硬件设计的兴趣也随之增加。然而,广泛认为硬件领域的成功仍然受到限制。但实际情况可能比想象中要好,因为硬件上的敏捷性趋势没有明确标记。举例来说,我们看到把 IP级别的设计和验证从 SoC级别中分离出来。因此,不同的 IP团队从 SoC项目的“列车模型”中异步操作,在 SoC设计完成后,可以选择任意版本的 IP。尽管这一方法并没有被贴上敏捷的标签,但是它确实符合敏捷哲学。