当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 用SoC进行嵌入式系统的验证

用SoC进行嵌入式系统的验证 时间:2020-05-07      来源:原创

随着片上系统(SoC)设计的发展,其复杂性越来越高,包含数千行用于系统级验证的代码的测试套件继续由人手工编写,这是一门古老的传统,无效的做法使格言“自动化只要有可能。” 对于在SoC嵌入式处理器上运行以在制造之前验证整个设备的C测试而言,尤其如此。
已经证明,在可能的情况下自动执行验证测试组合可以提高SoC开发许多阶段的生产率。约束随机技术,例如,在通用验证方法(UVM)测试平台中,利用针对特定场景的随机测试矢量来增加覆盖范围。尽管这些已提高了硬件块级别的验证效率,但该设计仍被视为黑匣子,其中分别编写了激励,支票和覆盖代码,对于大型块而言,这仍然是繁重且容易出错的任务。
鉴于需要将处理器测试代码与I / O事务(通常在仿真器或原型系统上执行)结合在一起,因此很难将这种方法扩展到系统级。为了正确验证SoC,必须对处理器本身进行测试。UVM和其他受约束的随机方法无法解决处理器上运行的代码。实际上,要在SoC上使用UVM,通常会删除处理器,并用虚拟输入和输出替换到SoC总线上,从而允许子系统减去处理器来进行验证。
SoC验证工程师意识到受限随机测试平台的局限性,即使它们在完全执行SoC设计方面受到限制,也迫使他们手写C测试以在处理器上运行以进行仿真和硬件仿真。这些验证平台的性能不足以运行完整的操作系统(OS),因此这些测试执行“裸机”,这增加了编写工作的开销。手写测试(尤其是在没有OS服务的帮助下)通常无法在利用多个线程的多核处理器之间以协调的方式运行。结果是最小限度地验证了SoC行为的各个方面,例如并发操作和一致性。

自动生成C测试
当然,自动生成的C测试将更有效地利用工程资源。它们还增加了覆盖范围。与手写测试相比,生成的C测试用例可以发挥SoC的更多功能,并且可以发现难以想象的复杂拐角处。多线程,多处理器测试用例可以使用设计中的所有并行路径来验证并发性。他们可以在内存段之间移动数据以增强一致性算法,并在应将数据发送到芯片的输入或从芯片的输出读取数据时与I / O事务进行协调。这样做的总体效果是增加了系统功能的覆盖范围,通常从特征上要低得多的数字开始,大于90%。
测试生成软件称为Test Suite Synthesis,它使用易于理解的基于图形的方案模型来捕获预期的设计行为。这些模型可以使用本机C ++使用Accellera便携式刺激标准来编写,也可以进行直观描述。方案模型由设计或验证工程师创建,是SoC开发的自然组成部分,因为它们类似于传统的芯片数据流程图,可能会在白板上绘制以说明设计规范的一部分。
这些模型固有地包含激励,检查,覆盖范围详细信息和调试信息,从而为生成器提供了生成高质量,自检C测试用例所需的一切,这些用例会影响设计的各个方面。因为它们是分层和模块化的,所以在块级别开发的任何测试都可以完全重用为完整SoC模型的一部分,并且可以轻松地与不同团队和整个项目共享。最后,综合工具可以分解单个意图模型,以提供跨线程和I / O端口的并发测试,所有这些同步在一起。

优势测试套件综合
测试套件综合的一项重要优势是能够在意图模型上预先定义覆盖目标。一旦指定了意图,该工具就可以对其进行分析,以了解可以进行的测试数量以及将要实现的功能意图。

对于SoC,它可以进行成千上万次测试。然后可以通过限制要测试的意图并将工具集中在关键区域来设置覆盖范围目标。此功能避免了传统方法中出现的痛苦的迭代循环,该循环是建立测试,运行验证工具,了解实现的覆盖范围然后一次又一次地重置测试。
在由知名半导体公司开发的大型SoC的一个典型项目中,验证工程师将测试编写时间减少到以前需要手写测试的20%。自动化技术产生了更严格的测试用例,覆盖率从84%增加到97%。另外,这些模型是便携式的。
单个模型可以生成虚拟平台的测试用例,寄存器传输级别(RTL)模拟,仿真,现场可编程门阵列(FPGA)原型或实验室中经过硅验证的实际芯片。
调试是工程师的又一个耗时,特别是在SoC级别。如果测试用例发现了一个潜伏的设计错误,则验证工程师必须了解哪个测试触发了该错误以跟踪其来源。测试用例失败可能是由于场景模型中的错误所致,因此必须有可能将测试用例与捕获设计意图的图形相关联。此过程创建易于分解的高度模块化和自包含的测试,因此易于发现发现的错误的测试。

应用场景
综合测试用例可以用于设计的实际用例(称为应用场景)。例如,考虑图1所示的数码相机SoC。

图1:图像处理SoC示例。

SoC块级组件包括两个处理器,外围设备和内存。框图下方显示了SoC的简单图形。该图包括SoC验证过程中可能行使的可能的高级路径。例如,在图形的顶部路径中表示的一种可能的情况是,从SD卡读取JPEG图像,并将其通过内存中分配的区域传递给照片处理器。图像被处理成可以显示的形式,并加载到内存中的第二个块中。从那里,它传递到显示控制器。当然,这些高级块中的每一个本质上都是分层的,许多动作和决定作为流程的一部分被执行。
综合工具将接受随机测试并适当安排时间。如图所示,以最简单的形式,测试可能会调度到单个线程中,然后再进行下一个测试,依此类推。但是,测试用例对SoC施加压力的能力来自跨多个线程和多个处理器的交错应用程序。该工具将在设计固有的并发支持下并行运行多个应用程序,并以尽可能曲折的方式分配内存。在图中,这也显示为替代方案,其中测试分散在三个线程中,利用了SoC存储器中分配的各个区域。
当然,将以较高的级别显示此示例,以使过程清晰明了。实际上,层次图将由综合工具展平,从而创建大量动作和连接。这些还将包括随机决策,需要通过求解器算法来运行。随着图表的移动,采用了AI计划算法,该算法检查所需的输出并优化输入测试以匹配此输出。综合工具包括类似于OS的服务,这些服务分配内存,提供地址映射访问,处理中断和完成测试结构所需的其他任务。然后随机安排测试时间,并适当分配存储空间和其他资源。
结论
就像约束随机的测试平台消除了块验证的手动工作一样,基于嵌入式处理器的SoC的综合测试内容也被证明可以减少系统级验证工作。此外,该解决方案现在正在块级应用,并用于芯片后验证。在此示例中,自动C测试用例采用了“尽可能自动执行”格言,从而大大提高了覆盖范围,同时缩短了验证时间表。

上一篇:嵌入式单片机在科技中的应用

下一篇:使用状态机轻松编程嵌入式系统

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部