采用基于模型设计的FPGA、ASIC和SoC开发
连接MATLAB®和仿真软万博1manbetx件®数字硬件设计和验证已经帮助众多客户(示例如下)缩短了他们的时间表,提高了他们的验证效率,并在他们的FPGA、ASIC或SoC设计过程中提供了更高质量的结果。虽然这个工作流可能看起来与您现有的工作流非常不同,但是您可以在实现即时利益的同时逐步采用它。
学习如何:
- 使用MATLAB和Simulink的优点一起协作,用更多的实现细节来改进算万博1manbetx法
- 构建一个可重用的测试平台基础结构
- 生成SystemVerilog验证组件以加快RTL验证环境的开发
- 在算法和数字硬件工程师之间进行协作,以便尽早实现高效的硬件架构
- 自动化和管理定点转换过程,甚至在效率更高的地方利用本地浮点实现
- 生成无错误的可合成RTL,以针对任何FPGA, ASIC或SoC设备
本文概述了经过验证的入门方法,以及从那里开始的典型采用路径。
例子:
您可能听过我们的一个或多个客户谈论将MATLAB和Simulink连接到他们的FPGA、ASIC或SoC设计工作流程的好处。万博1manbetx你可能会看着它,认为它离你今天的位置还有很长的路要走。但是所有这些客户都开始采用一两个功能来帮助解决他们最紧迫的挑战之一,并逐步构建他们的完整工作流。
我们将首先展示构建更具协作性和互联性的芯片设计环境的高级好处,但主要重点是如何开始,以及我们看到客户采取的一些更常见的第一步,以及他们从那里开始。然后,我们将从我们的一位客户那里获得一些真实的经验。
如果我们看看今天的芯片设计项目,使用Mentor Graphics和Wilson Research Group提供的优秀调查数据,67%的这些项目都落后于计划。
从最大的瓶颈来看,最突出的瓶颈是验证,它平均占项目时间的50%以上,但最常见的是,对于ASIC来说,它是60-70%,而FPGA大约是50-60%。
即使付出了所有的努力,75%的ASIC项目仍然需要一个周期,这有数百万美元的直接成本,但更糟糕的是,可能会导致你的计划推迟几个月。
同样的调查显示,84%的FPGA项目仍然看到一些重要的bug逃到生产环境中。很多人认为这没什么大不了的,因为fpga毕竟是“现场可编程”的,但如果它是在太空中的卫星上,那就很难重新编程。如果是在工厂的检测设备这样的产品中,那么它可能会导致生产线关闭,或者你可能不得不召回产品。最后,你肯定不希望硬件漏洞逃到飞机和汽车上。
所有这一切的根源在于,芯片设计是一个复杂的过程,需要关键贡献[和]许多专业技能。但是他们每个人都有自己的工具和环境,太多的项目依赖于手工沟通技术,如手写的规范文档或会议,以取得成功。当存在不完整的信息时,假设或决定只能在本地做出,通常会导致只有当系统在项目结束时才会出现的问题,而修复这些问题的成本很高。这使得敏捷地适应不断变化的需求几乎是不可能的,正如设计混合信号汽车传感器asic的Allegro Microsystems的Jaimie所指出的那样——这绝对是一种具有严格质量要求的多学科产品,但它们也需要敏捷性来为每个汽车制造商开发定制功能。
如果您熟悉基于模型的设计,这可能看起来很熟悉。如果没有,也不用担心。
如今,通常只有系统和算法设计师在做这个早期工作,他们关注的是“我在做什么?”以及“我做的是对的吗?”或确认。然后,他们将这些规范交给不同的实现工程师,让他们独立地“制作”,并验证他们“制作正确”。如果一个或多个组织出于某种原因做出了这样的地方决定,就会引发问题,直到发现时为时已晚。
这里所缺少的关键是将实施知识带入早期,以便在他们开始实施之前尽早弄清楚“我们将如何实现它”以及“它是否可行”,当然,随着各个部分的实现,不断地重新集成。正是这种联系使一切正常运转,这就是我们在这里关注的。
让我们从客户通常采取的一般方法开始。
从根本上说,我们想把我们的算法放到硬件上。首先,我们可能需要调整它们以处理连续的数据流,并尽可能在硬件资源使用方面提高效率,同时仍然满足功能和吞吐量要求,这通常包括将数据量化为定点。我们的很多信号处理、无线和视频/图像处理客户主要使用MATLAB,当然,MATLAB对于探索数学、操纵数据集和编程控制非常有用。但如果你的目标是硬件,它可以并行处理,这需要并行路径的时间管理,Simulink很适合这个。万博1manbetx它还有助于可视化体系结构以及定点数据类型是如何通过操作传播的。好在这两个环境可以很好地协同工作,这样我们就可以利用两者的优点,并在改进算法时顺利过渡。
通常第一步是分区。很多时候,算法和它们的测试在同一个MATLAB脚本中交织在一起。因此,我们需要区分出硬件的目标是什么。这也是帮助构建更健壮的自动化测试环境的良好实践。在这个例子中,我们使用的是一个脉冲检测算法,它非常简单——它将一个信号与一个匹配的滤波器相关联,它将在有匹配的地方产生一个峰值。这就是硬件设计。剩下的部分将是测试台——输入刺激,我们不会详细讨论,以及分析,目前只是一些可视化和fprintf语句。
专注于算法——它取一个完整的信号,让它通过滤波器,然后max函数找到全局峰值。但是在硬件中,我们有数据不断地流入。所以我们需要调整算法来处理这个问题。
我们会在Simulink中构建这个同时也会用万博1manbetx到MATLAB。我们仍然可以使用相同的测试环境,从“from Workspace”块中获取输入,并通过“To Workspace”块将其发回。对于过滤器,我们有一个流式FIR块——这很简单。然后我们需要找到大小的平方,我们可以把它设计成实数和虚数平行的平方。现在,为了找到最大值,我们将存储一个最近11个样本的滚动缓冲区。
这很容易在MATLAB中编程,所以我们可以使用MATLAB函数块,它将通过检查中间样本是否比其他样本大,并且也高于被识别为“峰值”的最小阈值来找到这11个样本的峰值。因为这是不断的流,它输出一个脉冲来表示中间的样本是已识别的峰值。
现在,从验证的角度来看,我们已经把设计从刺激和分析中分离出来了。这将允许我们交换任何版本的改进设计,并仍然与黄金参考算法进行比较。验证工程师通常将此功能称为“记分牌”。注意我们增加了一些自检功能;这将允许我们批量运行模拟,并容易检查结果。
此时,您可以实际生成组件来启动RTL验证过程。还记得验证占用了多少调度空间吗?通过自动生成测试和黄金参考模型来帮助这个过程,可以帮助他们更早地开始,而不必开发和调试他们自己的版本。这是用SystemVerilog包装的C代码,因此它在任何SystemVerilog模拟器中本机运行。因为它是自动生成的,所以您可以将其视为规范的可执行版本,当设计更改时,只需重新生成即可。这是一种非常简单的开始生成模型的方法——它适用于任何可以从MATLAB或Simulink生成C代码的地方。万博1manbetx
如果RTL模拟识别出不匹配,则可以通过联合模拟连接到RTL模拟的MATLAB或Simulink进行调试。万博1manbetx由于您同时拥有算法和RTL的实时模拟器,因此可以对双方进行调试可见性,并且它们同步运行。考虑到所有这些,您可能不会以这种方式运行回归,但当您需要与实际的黄金参考算法进行比较时,它确实有助于调试问题。
类似于为流行为调整算法,下一个层次的改进是添加硬件架构。有许多架构级决策将影响硬件性能和资源使用,这确实需要硬件设计人员的专业知识。这里展示了一些示例—为了找到复杂过滤器输出的大小,您可以使用毕达哥拉斯定理,但是平方根操作在硬件资源和延迟方面非常昂贵。知道我们只需要找到一组值中最大的,我们就可以跳过这一步——所以这就是硬件实现知识与算法知识一起工作可以更有效地得到好结果的地方。
一个更简单的例子是选择FFT实现选项,在FFT块上—您可以设置基数,如何实现复杂的乘法,以及添加管道阶段。
目标硬件通常需要定点量化以减少资源使用。但这会降低精度,因此在效率与精度之间存在权衡,这可能成为一个耗时的来回过程。但我们有一些方法可以帮助自动化这个过程,并推动它走向融合,所以这是我们看到客户作为第一步采用的另一个功能。
第一种方法是手动转换输入,并让Simulink在逻辑中适当地传播。万博1manbetx在本例中,我们将输入设置为18位,以确保它们映射到FPGA上的DSP片。输出可以通过默认传播增长,但我们将下一阶段的和的输出减少到18位。这就是Simulink的可视万博1manbetx化真正派上用场的地方。这种方法是一个很好的平衡起点,您可以通过一些小的调整来收敛。
如果需要对数据类型进行更细粒度的控制,Fixed-Point Designer可以帮助实现自动化和管理。它将指导您完成模拟具有代表性的测试样本的步骤,收集数据范围,然后它将为这些数据范围提出定点类型,您可以使用原样或调整,然后模拟使用这些类型与双精度进行比较,以查看结果是否在公差范围内。它还会查看溢流/下溢情况,如图所示。
第三种选择是使用HDL Coder生成带有本机浮点运算的硬件。这对于加快更敏感操作的量化是有用的。以这个简单的例子为例,其中有人显然花了大量时间构建一个查找表,以计算一个精度为30位的32位输入的sin -cos运算。为了节省大量时间,您可以在这里只使用单精度数据类型,并生成执行原生浮点正弦余弦计算的硬件。是的,就硬件资源而言,查找表将更加有效,但是如果您只想访问硬件,并且有大量的资源,那么这种方法将花费更少的时间。
在这种情况下,HDL Coder实际上可以共享正弦和余弦硬件资源。它支持万博1manbetx广泛的操作符和优化,因此您可以在硬件中实现这些操作符而不牺牲精度。这对于高动态范围计算特别有帮助。你可以在你的整个设计中使用它,或者只是像这里显示的孤立区域。生成与目标无关的RTL。
Demcon将这种能力用于一种手术器械的精确运动控制算法。您可以在这里看到他们的结果,它确实使用了更多的硬件资源,但开发工作量减少了五倍。有关更多详细信息,您可以在MathWorks网站上查看他们的用户故事。
是的,一旦你有了一个硬件架构的流算法和为你的实现工作的数字,使用HDL Coder生成可合成的VHDL或Verilog是非常容易的。有数百个硬件就绪的块,您可以在效率更高的地方使用嵌入式MATLAB代码或状态流程图——例如,用于复杂的控制逻辑。您有很多选择可以应用硬件专业知识来探索和控制优化,或者只使用默认设置来快速入门。我们设置了许多内置目标,包括映射到各种AXI总线接口,并且能够创建自定义目标。高层次设计的真正好处在于探索、修改和生成代码,而不必担心手工编码错误。
这些AXI总线接口通常是硬件子系统与其他芯片级子系统和处理器上的软件通信的方式,使用这些协议通信的延迟通常需要建模。类似地,使用外部内存需要通过内存控制器进行读写,延迟可能会影响硬件架构和算法的功能。SoC Blockset提供了这些效果的仿真模型,因此您可以模拟现实环境,并在进入硬件之前,甚至在硬件和软件之间进行分区之前得到正确的结果。
最后,让我们回顾一下客户示例。
这些是Allegro看到的结果;他们现在在Simulink中一起设计和模拟他们的模拟和数字功能,尽早调试问题,并通过实现细节来改进它,不断集成改进的模型以进行验证。万博1manbetx这允许他们在不断验证所有内容的同时仍然并行开发,以消除后期的意外。一旦他们得到了一个可以实现的模型,他们就会生成可合成的RTL以进入实现,他们还会为他们的验证环境生成DPI组件。杰米在录制的MATLAB博览会视频中提供了更多的细节。我鼓励你们去看看。
要开始使用基于模型的设计来实现硬件,最好采用增量方法,通过算法和硬件设计之间的协作,用实现细节划分和改进算法,并从验证模型或定点转换开始,以便在少量投资中获得一些早期回报。这不仅可以消除这些沟通问题,而且通过让这些人一起工作,你会得到一个更好的整体设计。当您越来越适应并转向可以为其生成可合成RTL的设计时,您将能够灵活地为不断变化的需求轻松地重新生成。
如果您有兴趣了解更多关于如何最好地开始的信息,例如验证使用定点转换,或通过细化MATLAB算法实现硬件,您可以从这些资源中获得这些技术的更多细节,或者您可以通过联系销售直接与我们交谈,如图所示。
相关产品s manbetx 845
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。