EEJournal

专题文章
现在就订阅

模棱两可的生活:另一个HLS

Matlab和SystemC代码的综合

当讨论接近尾声时,会议领导人问了他们所有人作为RTL生成源的能力。

Matlab和SystemC都立即行动起来,同时开始阐述。“您可以使用Simulink添加计时和系统元素……”“……预映射单元到RTL……”“……直接映射到fpga……”“……避免无休止的计时闭包迭代……”

但与此同时,C插话道:“哦,我已经做了很多年了!你可以用各种各样的工具把我变成RTL。我们称之为高级合成。”

“我也是!在C语言结束后,c++说。

“对不起,C,”会议主持人说,“我不太明白,因为你刚才被另外两个不守规矩的家伙打断了。你说高级合成?哎呀,你真是个聪明的孩子!”

“但我们可以做完全一样的事情!”Matlab和SystemC抱怨道。

“现在,你只是嫉妒。你们可以从C那里学到很多东西……”

“我也是!”c++说。

似乎ANSI C(和c++)一直是高级合成(HLS)的宠儿;这是大多数主流关注的焦点所在。但是C并不是唯一的选择。

事实上,当您与许多设计人员讨论C的使用时,会发生一件有趣的事情。你试着向他们描述为什么C语言在设计算法等方面很有用,而不用担心如何实现它们,通常情况下,你会得到这样的反应:“哦,我们用Matlab来做这个。”

让你想知道到底谁用C,显然有人用,第一个问题是,谁用C,谁用Matlab?

然后是C的特定硬件版本,或者更准确地说,c++: SystemC。通常只考虑验证术语,Forte Design Systems声称HLS状态,因为他们能够从SystemC合成RTL。所以第二个问题是,SystemC合成与C/ c++合成有什么不同,它真的是HLS吗?

Matlab vs. C -没有明确的决定

首先,让我们了解一些背景知识。似乎每个人都听说过“Matlab”,尽管它实际上是the Mathworks开发的一个工具的名字。有些不太熟悉的术语可能是“M代码”,指用Matlab语言编写的代码,或“M语言”指语言本身。但这或多或少都是一样的事情,我们将把它留给律师和商人来决定“M语言”是“Matlab”的通用名称还是“Matlab”只是处理“M语言”的最著名的程序。

从Mathworks的角度来看,Matlab是一个允许对各种数学结构进行高级连续建模的工具。它被大量用于滤波器和数字信号处理的其他方面。没有计时的概念;没有系统的概念。这都是关于数学的。

Mathworks的配套工具SimuLink允许您开始在实际系统中实现数学构造的过程。这个阶段的关键是,如果不提供完整的浮点处理,则将浮点值量化为定点值。还引入了时钟计时,可以将各种系统元素组合在一起,以便您验证更接近真实的东西。

从这一点来看,有几个方向是可能的。fpga允许直接实现Matlab - er - M-code已经有一段时间了,这是在被Xilinx收购之前由AccelChip首创的。但是您也可以从M-code表示生成C代码,这通常被认为是为验证测试工作台创建C模型的有用方法。但是……难道你不能从那个C生成RTL吗?两代的生成——M到C到RTL——会产生完全低效的结果吗?

这就是我们想要解决的真正问题,你应该从Matlab还是C开始?我认为The Mathworks显然是第一个寻求这方面见解的地方。毕竟,他们已经在这个游戏里玩了很长时间了。Ken Karnofsky,他们的信号处理和通信高级策略师,提出了一些有趣的相关性,但没有硬性规定。它们是:SoC应用程序比非SoC应用程序更倾向于使用C;模拟/混合信号(AMS)设计人员倾向于使用Matlab/SimuLink流,而不是数字设计人员;有软件背景的工程师比“领域专家”更倾向于使用C语言;Matlab更倾向于研究工具C更倾向于生产工具

有意思,但这有点像摇尾巴的狗。如果您试图弄清楚是使用C还是M,这些规则没有多大帮助。

最近,Synopsys发布了Synphony,这是一个用于从M-code生成RTL的HLS工具。他们的重点是数据路径(支持一些控制路径),特别是从浮点模型创建定点实现的过程。它们还生成用于高级验证的C/ c++模型。他们特别将他们的m语言方法视为C/ c++流程的补充,而不是竞争。

那么他们如何看待M和C呢?在与Synopsys的Chris Eddington和George Zafiropoulos的讨论中,我们发现无线应用程序倾向于更多地使用M;视频应用程序倾向于更多地使用C语言。但是,这些都是相关的。似乎没有人很确定M和C之间最重要的决定因素是什么。

事实上,如果我们对自己诚实的话,我们会发现其实并没有真正的幸福。

在这个角落里……

同时,Forte的Brett Cline直言不讳地谈到了他对C和SystemC的看法。“ANSI C是一条死胡同。开始设计很容易,但很难完成。”Forte的Cynthesizer工具使用单元格映射IP与特定技术相匹配,从SystemC合成RTL。你给它一个.lib文件和一个时钟速度,它将生成一个优化的数据路径。在针对FPGA时也可以这样做。

从他们的角度来看,真正的优势在于,您可以在非计时级别进行验证,然后生成您知道将会工作的RTL;他们说,其他技术要求您将大部分验证推迟到RTL级别。

许多人认为SystemC只是一种使用c++语法的硬件语言,因此怀疑它是一种HLS方法。但是Forte认为HLS只是从一个不定时的表示开始,然后合成一个定时的表示。您可以从一个不定时的SystemC表示开始(可能的例外是接口是针/周期精确的)。从那里你可以生成RTL,所以这在他们的书中是HLS。

有人可能还会说,SystemC作为一个特定的c++环境,没有“纯”c++那么通用。但是Brett认为HLS真的不存在纯c++;您通常需要使用某些类。所以,他说,这“实际上是SystemC和MentorC的对决。”

至于更模糊的问题,即M语言在图景中的位置,他也无法画出一个清晰的边界。滤波器再次抬起头作为Matlab指标…更多的相关性。

那么,我们从这一切中学到了什么?主要是HLS比C和c++有更多的东西。尽管对C的迷恋,Matlab或M语言也有作用,SystemC也是如此。

关于问题二,Forte看到了SystemC和ANSI C/ c++方法之间的明显区别,并且,根据他们的定义,SystemC-to- rtl确实可以是HLS。

至于第一个问题,嗯,没有令人满意的答案:M语言和其他语言之间的区别真的不清楚。显然存在一个使用M的定义不清的世界,以及另一个使用C的定义不清的世界。有时它们一起使用。如果你很难处理模棱两可的问题,这可不是一个好地方。

链接:

福特Cynthesizer

Mathworks Matlab

Synopsys对此Synphony

留下回复

有特色的博客
2023年2月16日
了解我们如何通过GuideWare方法帮助芯片设计人员实现更快的代码检测和功能验证,用于航空航天和汽车soc。后扩展超越Synopsys指南:如何功能绒布分析节省时间和减少bug在…
2023年2月16日
在当今世界充斥着笨重的扫描仪、手工处理和几乎没有数据的情况下,Nexite团队为客户带来了关于商品的连续实时数据流。他们报道了每件产品的全部故事,从工厂的第一针到……
2023年1月19日
你是否在调整表带或更换手表电池时遇到了问题?如果是这样,我是好消息的携带者....

特色粉笔谈话亚博里的电子竞技

TE APL:任何用途的灵活性

逮老鼠的电子产品而且TE的连接

当涉及到降低系统复杂性和易用性时,连接器可以发挥很大的作用,但您知道它们还可以帮助实现自动化和可持续性吗?在本集Chalk Talk中,来自TE亚博里的电子竞技的Amelia Dalton和Anita Costamagna讨论了TE的APL连接解决方案。他们深入研究了这些连接器解决方案的细节,以及如何在下一次设计中开始使用这些连接器解决方案。

点击这里了解更多关于TE连接设备解决方案的信息

Baidu