采用基于模型的设计,FPGA、ASIC和SoC发展
连接MATLAB®和仿真软件®数字硬件设计和验证已帮助众多客户(在下面的例子)缩短他们的时间表,提高验证效率,并提供更高质量的结果FPGA、ASIC,或SoC设计流程。虽然这个工作流看起来完全不同于现有的工作流程,你可以采用增量而实现直接的好处。
学习如何:
- 使用MATLAB和Simulink仿真的优势共同协作优化算法实现细节
- 构建一个可重用的试验台基础设施
- 生成SystemVerilog验证组件速度RTL验证环境的发展
- 协作算法和数字硬件工程师在早期收敛之间高效的硬件架构
- 自动化和管理定点转换过程,甚至利用本机浮点实现的更有效率
- 生成错误synthesizable RTL针对FPGA、ASIC、SoC设备
本文概述了经过验证的方法开始,随着采用典型的路径。
例子:
你可能听说过一个或多个客户讨论的好处将MATLAB和Simulink FPGA、ASIC、SoC设计工作流。你可能看它,认为这是一个远离今天的你在哪里。但是所有的这些客户开始采用一个或两个功能,帮助解决他们最紧迫的挑战之一,和增量地构建自己的完整的工作流程。
我们将首先显示高层建立一个更具协作性的好处和连接芯片设计环境,但是最主要的重点是如何开始和一些常见的第一步,我们看到我们的客户,和他们去的地方。然后我们将结束我们的一个客户的一些实际经验。
如果我们今天看芯片设计项目,使用优秀的导师图形和威尔逊研究小组提供的调查数据,67%的这些项目是落后于预定计划。
看着上面的瓶颈,一个是验证,平均超过50%的项目时间,但大多数情况下,对于ASIC的60 - 70%,而FPGA约为50 - 60%。
尽管这一努力,75%的ASIC项目仍然需要衍生版本,在数百万美元的直接成本,但更糟糕的是,可能会导致你的计划表。
相同的调查显示,84%的FPGA项目仍然看到重要的bug逃入生产。很多人认为这没什么大不了,因为fpga是“现场可编程”毕竟,但如果它是一个卫星在太空很难以重新编程。如果这样的产品在工厂检测设备,那么它可能导致线路被关闭或者你可能不得不召回产品。最后,你真的不希望硬件错误转义成飞机和汽车。
这一切的根源是芯片设计是一个复杂的过程,需要关键贡献[和]很多专业技能。但是他们每个人都有自己的工具和环境,和太多的项目依赖于手工通信技术像手写的规范文档或会议为了成功。当有不完整的信息,假设得到了或者得到本地和经常导致问题做出决定,只有当系统出现在项目的最后,和修复是昂贵的。敏捷,这使得它几乎不可能是在适应变化的需求,就像杰米在快板微系统所指出的那样,汽车传感器ASICs-definitely多学科设计混合信号产品,严格的质量要求,但他们也需要为每个汽车制造商敏捷开发定制的功能。
这可能看起来很熟悉如果您熟悉基于模型的设计。如果不是,别担心。
通常今天,这个早期只是设计师系统和算法,重点是“我做什么?“在设计方面,和“我做正确的事吗?”或验证。然后他们移交这些规格的各种实施工程师独立工作,并验证他们“使它正确。“如果一个或多个组的其中一个地方决定不管出于什么原因,它会引起问题才发现已经太迟了。
失踪的关键是把实现知识转化为早期找出早期“我们如何让它”和“它去上班”之前他们去做,当然,经常跟她一样得到实现。使此连接,使一切工作,这就是我们关注这里。
让我们开始我们的客户通常采取的普遍方法。
从根本上我们想要到算法的硬件。首先,我们可能需要适应他们的工作在一个连续的数据流,并尽可能高效的硬件资源使用情况的同时,仍满足功能和吞吐量需求,这通常包括定点量化数据。我们的很多信号处理、无线和视频/图像处理的客户主要是在MATLAB中,这当然是伟大的为探索数学,操纵数据集和编程控制。但是如果你目标硬件,可并行过程需要的时间并行路径管理、仿真软件是伟大的。也是不错的可视化体系结构和如何通过传播定点数据类型操作。的好处是这两个环境中能够很好地协同工作,所以我们可以使用最好的平稳过渡和提炼这些算法。
通常第一步是分区。很多时候算法和他们的测试成为相同的MATLAB脚本交织在一起。所以我们需要单独出将针对硬件。这也是很好的练习来帮助建立一个更健壮的和自动化测试环境。在这个例子中,我们使用脉冲检测算法,这是相当简单的关联与匹配滤波器的信号,这将产生一个峰值的匹配。这将是硬件设计。剩下的将测试bench-the输入刺激,我们不会进入细节,分析,现在只是一些可视化和流语句。
专注于算法,需要一个完整的信号,通过过滤器运行它,然后max函数发现全球峰值。但在硬件、数据连续流。所以我们需要适应的算法来处理。
我们将建立在使用一些MATLAB仿真软件。我们仍然可以使用相同的测试环境中,从“从工作区”块获得输入和发送它通过“工作区”街区。的过滤器,我们有一个流冷杉块,很简单。然后我们需要找到大小的平方,我们可以建筑师并行广场的真实和虚构的。找到最大,现在我们会滚动缓冲存储最近的11个样本。
这很容易在MATLAB程序,所以我们可以使用MATLAB功能块,会发现这11个样品的峰值检查如果中间样品比其他人也高于最小阈值被称为一个“高峰。”因为这是不断地流,输出一个脉冲表示这中间样品标识的高峰。
从验证的角度来看,我们从刺激和分区的设计分析。这将允许我们交换的任何版本的改进设计和仍然比较黄金参考算法。验证工程师通常称此功能为“记分牌。“注意我们添加了一些自检功能;这将允许我们在批处理和运行模拟容易检查结果。
在这一点上,您可以生成组件启动RTL验证过程。记得多少时间表被验证?帮助这个进程,自动生成测试和黄金参考模型帮助他们更早开始,不需要开发和调试自己的版本。这是用SystemVerilog包裹的C代码,所以它运行在任何SystemVerilog模拟器。因为它是自动生成的,你可以把它作为一个可执行版本的规范,设计变更,重新生成。这是一个很容易开始生成模式的工作方式可以生成C代码从任何地方MATLAB仿真软件。
如果RTL模拟识别不匹配,你可以调试co-simulating MATLAB或仿真软件连接到一个RTL模拟。因为你已经生活模拟器算法和RTL,调试对双方的可见性和他们在同步运行。既然如此,你可能不会运行回归这种方式,但它是非常有用的调试问题当你需要比较实际的黄金参考算法。
类似于适应你的算法的流媒体行为,细化的下一个级别是添加硬件体系结构。有很多架构级的决定将影响硬件性能和资源使用,这真的需要硬件设计师的专业知识。一些例子显示就是找到复数滤波器输出的大小,你用勾股定理,但一个平方根操作是非常昂贵的硬件资源和延迟。知道我们只需要找到最大的一组值,我们可以跳过这一步,这就是知识的了解算法的硬件实现合作可以更有效地得到好的结果。
FFT实现选项选择一个更简单的例子是,在FFT阻碍你可以设置基数,如何实现复杂的乘法,添加管道阶段。
和针对硬件通常需要定点量化减少资源的使用。但这降低了精度,所以有一个效率和准确性权衡,可以成为一个耗时的反复过程。但是我们有两种方法,帮助自动化这个过程和驱动它走向趋同,这是另一个功能,我们认为客户采用的第一步。
第一种方式是将手动输入,让模型适当地传播通过逻辑。在这个例子中,我们设置输入乘18位,以确保它们映射到DSP片FPGA。输出可以通过默认的生长繁殖,但我们减少和回到18位的输出为下一个阶段。这就是模型的可视化真是方便。这种方法是一个很好的平衡的起点,你可以收敛一些小调整。
如果你需要更细粒度的控制你的数据类型,定点设计师可以帮助自动化和管理事情。的步骤将指导您完成模拟代表性样本的测试,收集数据范围,那么它将提出定点类型的数据范围,然后您可以使用原有或调整,模拟使用这些类型为双精度比较,看看结果是在公差内。它也会看看溢出/下溢的条件显示图形。
第三个选项是使用HDL编码器生成与本机硬件浮点操作。这是用于加速量化更敏感的操作。把这个简单的例子,有人显然花费了大量的时间建立一个查找表计算正弦余弦操作为一个32位的输入与30位的精度。节省很多时间,你可以在这里使用单精度数据类型并生成硬件执行本地浮点正弦余弦计算。是的,查找表将更高效的硬件资源,但如果你只是想获得到硬件和你有足够的资源,这种方法花费更少的时间。
在这种情况下,高密度脂蛋白编码器可以共享正弦和余弦的硬件资源。它支持广泛的运营商和优化,因此你可以在硬件中实现这些不牺牲准确性。这对高动态范围的计算尤其有帮助。你可以使用这个为你的整体设计,或者只是孤立的地区如下所示。生成独立于目标RTL。
Demcon此功能用于精确的手术器械的运动控制算法。你可以看到他们的研究结果,并使用更多的硬件资源,但是五次少开发工作。对于更多的细节,你可以看看他们的用户故事MathWorks网站。
是的,一旦你得到,你有一个流算法与硬件架构和工作实现的数字,很容易产生synthesizable硬件描述语言(VHDL)或用Verilog HDL编码器。有数百名hardware-ready块,您可以使用嵌入的MATLAB代码或Stateflow图表更有效率的实例,对于复杂的控制逻辑。你有很多选择申请硬件知识探索和控制优化,或只使用默认值迅速开始。我们有很多内置的目标设置,包括各种AXI总线接口映射,我们有能力创建自定义的目标。真正好的部分设计在一个高水准,这是探索,进行更改,并生成代码,而不必担心制作手工编码错误。
那些AXI总线接口通常是如何硬件子系统与其他芯片级子系统和通信软件的处理器,并使用这些协议通信的延迟通常需要建模。同样,使用外部内存需要阅读和写作通过内存控制器的延迟可能会影响你的硬件架构和算法功能。SoC Blockset提供这些影响的仿真模型可以模拟现实环境和得到它之前你到硬件或甚至在分区之间的硬件和软件。
最后让我们重新审视我们的客户的例子。
这些结果快板看到;他们现在的设计和模拟仿真软件模拟和数字功能在一起,提前调试问题,并完善实现细节,不断整合提炼模型验证。这使得他们仍并行化发展而不断验证一切一起消除后期惊喜。他们一旦到达一个implementation-ready模型,生成synthesizable RTL去实现和他们还生成DPI组件的验证环境。杰米提供更多详细的记录了MATLAB世博会视频。我鼓励你去看看吧。
开始使用基于模型的设计实现硬件,最好采用增量方法,分区和精炼你的算法与实现细节之间的合作算法和硬件设计,并开始与验证模型或者定点转换得到一些早期的一个小投资回报率。这将不仅消除沟通上的问题,让这些人在一起工作,你会得到一个更好的整体设计。当你变得更舒适和走向设计可以生成synthesizable RTL,你会轻松地重新生成的敏捷性需求的变化。
如果你有兴趣学习更多关于如何最好地开始,例如与验证与定点转换,或精炼MATLAB算法硬件实现,你可以从这些资源得到更详细的这些技术,或者你可以直接跟我们联系销售如下所示。
了解更多
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。
欧洲