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