中文 英语

高级合成的进化

HLS开始解决一些最初没有预料到的问题。

受欢迎程度

高级合成技术再次获得了发光的机会,这一次来自新市场和新技术节点。但目前尚不清楚这项技术将如何充分应用。

尽管取得了一些进展,但它仍然不太可能像最初预期的那样,取代目前大部分芯片的RTL设计方法。被视为下一代的基础技术EDA世纪之交的公司,HLS在一定程度上受到重用和IP行业的兴起的影响,受到所需算法的复杂性的限制,受到可用语言的阻碍,并且它面临着一场艰难的战斗,以取代适合该行业的语言和方法。

这些因素都没有显著变化。但是对于某些特定的问题,HLS确实实现了早期的承诺,而且它的能力正在增长。

在设计自动化会议上,一个由供应商和研究人员组成的小组讲述了HLS是如何从一个研究项目发展到今天的,并让人们看到了它的发展方向。半导体工程更进一步,向更广泛的供应商提出了类似的问题,并对用户群对HLS当前状态的看法进行了抽样。

我们是怎么走到这一步的
第一位小组成员是Brian Bowyer,公司的工程总监Mentor是西门子旗下的企业.鲍耶让人们看到了过去的问题和一些新的发展。“在过去的40年里,人们做了很多工作来实现这一点,从行为开始硬件描述语言(VHDL)而且Verilog,然后再搬到c++而且SystemC他说。“即使在20年前,你也可以通过高水平的合成得到很好的结果,公司会采用它,事情很好,直到有些东西不起作用。界面上的某些东西不能很好地工作,或者调度会在一个周期后移动某些东西,突然它就坏了,没有人知道为什么。这很难理解。”

最近发生了很多变化。Bowyer说:“在过去四五年里,有一件事发生了真正的变化,那就是开源的、基于类的库的数量出现了。”“你从必须编写所有底层细节,到选择一个预先构建的类库,其中定义了协议,假设和意图都在一个包中。这使得它比历史上任何时候都要简单得多。”

英伟达的Matchlib就是一个例子。这是一个SystemC/ c++库的常用硬件函数和组件。MatchLib基于连接延迟不敏感通道实现。

伊利诺伊大学香槟分校工程学教授、Inspirit IoT联合创始人陈德明(Deming Chen)认为,跟上技术规模是首要问题。“只要技术规模继续扩大,设计的成本和复杂性就会迅速增长。因此,我们面临着一些严峻的挑战。首先是生产率差距。人类的生产力跟不上设计的复杂性,而且这种差距还在扩大。二是核查可预见性差距。对于复杂的芯片,验证所需的时间比设计本身还要长。这就产生了芯片交付方面的不确定性。三是质量差距。为RTL基于设计,人们不能探索不同的建筑选择。因此,人们真的在寻找一些新的设计方法,可以帮助真正克服这些挑战。这就是高级合成技术真正出现的原因。用C或c++描述的设备可以减少5倍到10倍的代码,并提高1000倍的模拟速度。HLS可以很好地使用模块化设计方法。它可以生产IP,并且具有合适的接口,自然适合IP重用和创建策略。”

肖恩达特,高级集团研发总监节奏,侧重于实施的质量和灵活性。“关键之一是能够将IP重新定位到许多不同的实施机制。我可能想要手机里的东西,我可能想要基站里的东西,它们使用完全相同的算法。我希望能够针对不同的性能水平。

Dart说:“在早期,我们认为我们能够以高效率赢得比赛,结果质量(QoR)是次要的。”“我们错了。QoR总是受到评判。你必须能够在面积、功率等方面制造出真正有竞争力的QoR。此外,它必须足够容易让人们使用,这样才能被采用。”

编程模型是Pierre Paulin关注的领域,他是微软嵌入式视觉研发总监Synopsys对此.“超越RTL的目标是通过更高的抽象来提高生产率。其中一个障碍是没有高级编程语言和编程模型的标准化。VHDL和Verilog与基于c的方言之间的语言战争,然后是SystemC和SystemVerilog,减慢了一切。”

这限制了HLS的潜力。“还有另一类HLS,我们称之为应用特定指令集处理器(ASIP),”Paulin说。“我们的目标是提高硬件的效率,同时满足灵活性要求。在行业中,我们看到了解决asip的两种主要方法。一种是采用标准核心,然后添加自定义扩展。像Cadence和Tensilica, Synopsys和ARC这样的公司都采用了这种方法。另一种方法是对特定于应用程序的核心进行高级综合。除了这个核心,你还生成了编译器、汇编器、ISS和RTL。”

真正让Paulin兴奋的是人工智能领域正在发生的事情。“TensorFlow和ONNX基本上是事实上的标准,所以我们只有一种编程模型,两种风格。从这个高级编程模型,自动映射到复杂的异构并行平台,具有多个核心,这些核心中的多个处理单元,以及复杂的多级内存层次结构,正变得非常高效。”

最后,东京大学(University of Tokyo)教授若林和俊(Kazutoshi Wakabayashi)指出了一些需要克服的历史问题。若林和俊不久前曾在NEC担任高级经理。“其中一个问题是与基于c语言的验证的联系。另一个问题是教育。尽管我们有一项成功的技术,但许多NEC设计师并不愿意使用它。NEC要求所有新员工参加HLS设计课程,这种教育非常成功,随后被广泛采用。

“良好QoR所需的代码和模拟所需的代码通常是不兼容的。你必须与这个问题作斗争。我们的许多客户尝试使用现有的C代码进行HLS,但这行不通。编码风格完全不同,不兼容。”

结果质量
在小组讨论中进一步讨论了QoR。Wakabayashi表示,HLS工具可以产生更好的区域结果,特别是当他们不需要满足最大性能目标时。

与此同时,鲍耶表示,当电力成为一个问题时,他看到了更好的QoR。“设计师在功率方面缺乏经验,高水平的综合设计可以产生比设计师更低的功率。”

最大的收获来自于探索。Dart说:“算法已经变得非常复杂,领先的工具有很好的算法来进行优化,但它们无法击败针对特定微架构的手工编码实现。”“有了HLS,你也有可以探索的好处。这就是你获得巨大利益的地方。”

波林同意了。“你可以优化设计错误的组件,也可以近乎优化设计正确的组件,”他说。“你可能会把错误的设计优化到死,也可能会因为不断探索而找到正确的设计。”

当涉及到处理器时,这可能特别棘手。“如果你定义了一些指令,你定义了行为,以及数据如何流经管道,那么你就可以进行大量的迭代,并非常有效地设计空间探索,”Zdenek Prikryl说Codasip.“如果没有它,你必须手动做很多事情。您必须更改编译器和RTL。然后您可以尝试使用新的编译器对RTL进行编程。”

这可能涉及处理器本身以外的内容。Codasip高级市场经理Roddy Urquhart说:“当生成编译器时,你是在为内存领域做出贡献。”“在大多数情况下,你有一个芯片上的处理器子系统,指令内存将比处理器本身更大,并贡献更多的面积和功率。通过高效地合成,不仅是RTL,还包括编译器,您将有助于管理整体的硅区域和功耗。”

鲍耶认为,一些新设计还会出现另一种情况。“当你转向新的几何图形时,规则会发生变化,你可能会突然遇到电源问题或奇怪的路由问题。此外,随着人们转向这些更新的ASIC几何结构,他们开始意识到与构建新产品相比,传统硬件要差得多。”

特定领域的合成
关于领域特定的高级合成的讨论在小组中开始,并在离线中继续进行。Codasip的Prikryl说:“我不相信HLS是所有问题的解决方案。“HLS是特定于领域的,工具应该专注于它可以解决的部分问题。在我们的例子中,我们主要关注处理器的HLS。我们用基于c的语言编写了处理器的描述,并由此创建处理器的部分或部分。”

安全带来了一些独特的挑战。Galois的首席科学家Joseph Kiniry说:“部分为了解决合成构件的不足之处,我们开发了Cryptol版本,这是一种用于指定加密算法的领域特定语言,能够从正式的规范中合成软件、固件和硬件ip实现和验证利用。”“这为我们提供了一种单一的语言和环境,在这种语言和环境中,我们可以推理属性,并进行全面的一阶定理证明。”

HLS早期的梦想之一是硬件/软件合作设计.Bowyer说:“没有人真正同意为硬件和软件建立一个通用的线程模型。”“除非你将其标准化,并将其作为语言的基础,否则很难进行硬件/软件协同设计。但这在人工智能领域正在发生。有一些工具可以使用神经网络,它们可以生成你想要的任何东西。你可以得到硬件,你可以得到软件,你可以映射到GPU。”

该行业并没有放弃硬件/软件协同设计。Silexica产品副总裁Jordon Inkeles表示:“需要更先进的工具来弥合软件开发人员和硬件实现之间的差距。“今天,大多数C/ c++软件代码本质上是串行的,并且性能有限。通过将软件转移到硬件中,可以获得更好的性能。使用硬件实现显著的软件加速需要深入了解算法的代码,以及提取和利用并行性的数据移动。HLS编译器允许用户使用pragmas或指令来引导工具,但这让用户自己决定如何以及在哪里插入这些pragmas。HLS采用的下一个阶段将发生在HLS编译器不仅能够提供这些见解,而且能够根据用户提供的约束采取行动的时候。”

系统级设计的梦想并没有破灭。“我们正在通过从系统级使用HLS来推动自上而下的设计流程,”克里斯托弗·索尔曼(Christoph Sohrmann)说,他是微软虚拟系统开发的集团经理弗劳恩霍夫IIS.“从包含功能描述的SystemC模型开始,然后细化规格以创建架构描述,然后是为现场可编程门阵列(FPGA)交付位流的HLS步骤,或为集成电路地板和ASIC制造设计。通过使用可参数化的模块,以动态的方式将它们映射到系统级模型体系结构,同时创建用于验证的测试用例,可以简化这个过程。这些方法将提高设计过程的可追溯性和可靠性。”

语言
真正让人兴奋的科目是语言。现有的供应商坚定地致力于C, c++, SystemC。鲍耶说:“我们几乎都不同意做SystemC。“在高级合成方面,你需要很多工具。这不仅仅是一个综合设计的工具;有验证工具,linters,正式的,还有所有这些其他的工具,需要与这个设计的含义的合成一致。也许在未来的某一天,人们会使用其他比SystemC或c++更抽象的语言,但在实际的生产环境中,我们可能还会在这里停留一段时间。”

凯蒂丝的飞镖同意。“其中一个关键方面不仅仅是合成工具能做什么,以及用户想要写什么,”他说。“这是关于设计进入芯片的东西的整个环境。所以你不能忘记调试和验证之类的事情。”

Prikryl说:“C语言有足够的抽象来提高处理器设计的效率,而且很多工程师都很适应它。”“如果你研究函数式语言,你会发现它很难学,因为它是一种不同的方法。C是一种标准的命令式语言,我们不想尝试一些非主流的东西。C语言是嵌入式世界的主流,不管你喜不喜欢。”

还有一些其他的方法没有引起那么多的关注。Bluespec的CTO Rishiyur Nikhil说:“HLS这个术语似乎已经进入了公众的意识,意思是用C/ c++编写代码,并让工具生成微架构设计。”Bluespec和Chisel是高级硬件设计语言(hlhdl),其中设计师专注于微架构的显式描述。用于描述微架构的语言结构包括高阶函数、多态类型、极端参数化和组合性,以及用于描述行为的高级结构(受保护的原子动作、具有受保护原子动作语义的面向对象、受保护原子动作的组合性)。”

学术界正在呼吁一个不同的方向。“有一些新的研究方向,”陈说。“这些都是基于高级语言,如Python或Java。”

印度卡纳塔克邦圣约瑟夫工程学院的学生Shashank V M说:“与Scala相比,Python更容易学习,与C/ c++相比,Python的效率更高。”“Python正在迅速取代C语言,成为教育机构教授的第一种编程语言,所以年轻的未来人才更有可能使用Python编程和调试,而不是Verilog/SV/VHDL。”

那么Python有什么显著的优势吗?“Python要简单得多,”鲍耶说。“这是一种更安全的语言。它有很多保护,让新用户更容易上手。但从能力的角度来看,我不认为它会给你带来任何额外的能力。”

这需要做更多的功。“如果你使用Python,我们必须为高级合成创建一个新的c++库,”若林说。

在一天结束的时候,是设计师做出选择。“不是每个大学毕业的人都能成为c++大师,”Dart说。“这意味着你必须能够让人们进入这个系统。这个行业迫切需要这个领域的专家。如果你毕业时带着HLS的工作经验,而且你有c++方面的专业知识,你很快就会找到工作。”

结论
高级合成已经成为EDA工具箱中的坚实工具。在新算法出现的领域,或者设计师受现有IP限制较少的领域,它的使用越来越多。人工智能等领域有巨大的潜力,自RISC-V开放ISA出现以来,处理器合成的潜力也越来越大。

虽然学术界可能能够基于Python创建一些新的工具,但他们将面临的阻力不仅是遗留的IP和设计,而且他们还必须参加语言战争,他们必须提供一个完整的流程,包括所有其他必要的工具,以实现高质量的产品设计。如果他们不能提供显著的QoR或生产力优势,这可能会很困难。这个行业总是声称,你需要10倍的优势才能击败在位者。



3评论

Shashank V M 说:

嗨,布莱恩,恭喜你又发表了一篇很棒的文章!我想澄清一下,我在nMigen和MyHDL的上下文中提到了Python。这是一种HLHDL方法,而不是HLS方法。所以HLS和c++库并不在考虑范围之内。(nMigen的README中也提到它不是HLS)。你可以检查这个开源项目,以了解它在FPGA设计中带来的生产力优势:https://github.com/enjoy-digital/litex

nMigen相对于SystemVerilog/VHDL的生产力优势类似于Python相对于C/ c++的生产力优势,但没有性能下降。这与HLS提供的生产力优势不同,后者是针对给定功能描述进行不同优化的多个HDL实现。

布莱恩•贝利 说:

谢谢你的澄清。我没有提到其他语言,因为它们是hdl,而不是本文其余部分所关注的高级语言。SystemVerilog/VHDL被取代的可能性几乎为零,因为依赖于这些语言的工具数量实在太多了。不管你喜不喜欢,我们被这些语言束缚住了,但我不认为我们被一种高级语言束缚住了。当然,越来越多的人正在考虑使用Python。

罗恩 说:

“如果你总是做你一直在做的事,你总是会得到你一直得到的。”
也许是时候使用Flowpro机器了?

留下回复


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

Baidu