中文 英语
系统与设计
的意见

系统设计还需要抽象吗?

如果RTL之外的高级综合和基于事务的开发是如此必要,为什么它们还没有出现呢?

受欢迎程度

大约15年前,EDA行业的假设是系统设计将是不可避免的。从门级设计到寄存器传输级(RTL)的新入口点的过渡似乎已经完成,逻辑综合被广泛采用。在当时,下一步似乎是显而易见的:超越rtl的高级综合(HLS)和基于事务的开发(也考虑到软件)将成为下一个可以实现自动化设计和验证的入口点。15年过去了,这事还没发生。为什么?

早在2003年,在第40届DAC, EDA传奇阿尔贝托Sangiovanni-Vincentelli发表了题为“EDA潮流”的专题演讲。在这篇文章中,他使用了我最初在1999年为他准备的一个图表版本,这是Felix项目的一部分,最终形成了名为VCC的产品:

节奏

来源:Alberto Sangiovanni-VincentelliEDA的潮流

就像电影里的史密斯先生矩阵当他们面对一辆迎面而来的火车时,他对尼欧说:“你听到了吗,安德森先生?这是必然的声音。”在70年代,基于布局的设计被抽象为晶体管,在80年代,复杂性和自动化使得晶体管集群可以作为门进入,而在90年代,进一步的自动化将入口点转移到RTL和逻辑合成,创建了门集群。显然,这种情况会继续下去,我们会找到下一个抽象层次,从这个抽象层次开始,设计将被自动化。


来源:节奏

从那时起,一些抽象概念显然已经出现。

HLS已经发生,今天已成为发展流的主流组成部分。虽然它通常不会在芯片(soc)上合成包含多个处理器、外围设备和互连的完整系统,但它在块级上工作,并允许在不同技术节点之间很好地重新定位块。它位于实现流的顶部。

对于完整的soc,从更高级别的拓扑描述(如IP-XACT)组装顶级RTL正在发生,这是目前相当标准的方法。再加上IP块的重用、HLS和互连结构的自动化,这可能是硬件设计的下一个设计阶段,而且大部分是自动化的。

今天使用的另一个抽象是围绕软件实现的。SystemC还用于虚拟平台组装,并允许抽象硬件来运行真实的软件(不抽象)。正如上图二所示,虚拟平台的SystemC抽象与HLS的抽象仍然有很大的不同,因此不幸的是,我们在这里没有一个合并的自动化入口点。

这意味着今天,在2019年,近15年过去了,我们仍然没有达到可以使用RTL等自动化完整的硬件/软件系统从更高级别的描述中合成的地步,这使我们能够进入芯片设计的大门。那么在RTL之上的硬件/软件系统设计是如何完成的呢?为什么在行业接受RTL后的第二个十年结束时,我们还没有达到这个目标?

有人可能会说没有必要,原因有三:并行性、模拟性能和硬件辅助开发。

在阿尔贝托的《潮汐》出版两年后,赫伯·萨特发表了他的文章,免费午餐结束了,软件的基本转向是并发”,在《多布医生日记在2005年。它的前提很简单。虽然每个处理器芯片的晶体管数量在增长,但单线程性能、频率和典型功率却趋于平缓。获得更高性能的唯一方法是在芯片上安装更多的处理器。当然,他是对的。结果,并行的一系列活动发生了,新的编程模型,c++的增强,并行编程的教育。今天,使用并行性对EDA工具进行了巨大的改进,使我们能够保持完全的准确性,而不必抽象到更高的级别——我们最近在这一领域的公告显示了令人印象深刻的结果。

仿真性能是第二个原因。甚至不包括现在的RTL模拟(在长期运行中使用并行),内在单核性能每季度增长约10%到20%,每年将模拟速度提高约1.4倍到2倍。这意味着在2009年需要一个小时才能完成的模拟,在模拟器和处理器改进的结合下,今天可能只需要2到40秒。

第三,硬件辅助验证——模拟和原型——已经从根本上改变了我们现在的开发方式。正如我之前在《一个esl狂的自白,硬件辅助开发甚至常常是担心抽象硬件以实现更高性能的替代方案。我们经常看到虚拟平台与仿真和原型一起使用,这使得软件开发人员能够有效地平衡保真度和性能。

那么,归根结底,系统设计还需要抽象吗?

当然,因为系统的复杂性在持续增长!

不过,我们还是避免了撞到墙上。随着来自并行性、模拟性能和硬件辅助开发的改进,我们已经能够继续提高开发生产力,而不必为了性能而牺牲准确性。

有趣的时期…



留下回复


(注:此名称将公开显示)

Baidu