作者:Gaurav Bhatnagar and Courtney Fricano
便携式激励标准 (PSS) 是最新的行业标准,旨在规范测试意图和行为,以便测试激励可以在各种目标平台上重复使用。PSS的引入改变了验证和确认片上系统(SoC)的传统方法,提供了许多优势和一些挑战。本文探讨了互连总线结构生命周期的这些过程变化,从基于 SystemC 的性能分析到使用基于 PSS 的通用流量生成器进行验证和确认。
介绍
自从设计要求开始变得复杂以来,验证技术和方法一直在不断发展。便携式激励标准 (PSS) 是这一演进过程的最新成员,旨在解决测试可移植性的挑战。新的 PSS 允许创建测试意图,以便它可以在不同的目标平台上重复使用。除了可移植性外,基于 PSS 的验证技术还在可视化测试表示、约束设置、基于数据流的随机化和更高的测试质量方面提供了价值。随着采用基于 PSS 的技术,SoC 验证和确认过程中涉及后续流程更改,了解其影响非常重要。本文试图通过互连总线结构的案例研究来探索这些过程变化,从基于 SystemC 的性能分析到验证和确认。
详细说明
随着设计变得越来越复杂,基于 SystemC 的建模、架构探索和高级综合 (HLS) 等流程变化与传统设计和集成流程一起变得越来越普遍。这些过程更改反过来又引入了检查是否符合系统设计要求的要求。参与这些流程的不同团队具有不同类型的平台和语言来支持这些更改。但是尽管存在这种差异,但每个连续过程的基本规格是相同的,这导致了大量的重复工作。
架构开发团队使用基于 SystemC 和 TLM 的建模为架构探索和软件开发创建了一个虚拟平台。组件设计团队在块级别设计 Verilog 组件,并将它们集成以手动或自动化过程创建系统。IP 级别的验证通常使用基于 UVM 的验证来完成,而在系统级别,则使用基于 C 和 UVM 的方法的组合。UVM 环境允许检查器从 IP 级到系统级轻松重用,但测试激励通常会被重写为在顶级 UVM 环境中工作,或者在 C 语言中工作以在芯片级处理器上运行。在实际硅测试中重复创建测试来验证模块的启动/配置和基本模式操作,因为测试平台或评估板上需要新的测试。然后,软件团队再次努力为客户界面编写软件驱动程序。
使用不同语言和技术的团队之间的这些重复工作会导致频繁的错误报告,并显着延长整体上市时间。需要更好的解决方案来允许整个项目中的所有测试编写者使用通用语言,并允许大部分简单的功能验证测试在水平和垂直方向上无缝重用。这种不同的方法正是基于 PSS 的验证技术带来的。
PSS 定义了一种新的测试编写语言,允许从单个测试源自动创建针对不同平台的测试。除了水平重用(仿真、仿真、板级、测试仪等)之外,新语言还将允许测试的垂直重用。在IP级别开发的测试将更容易在SoC级别集成和重用。可移植激励在更高的抽象层工作,该抽象层完全独立于目标平台的类型。此处的目标平台可以是基于 UVM 的验证环境、基于 C/C++ 和基于 SoC 的环境、基于 C 和 Python 的硅后评估平台等。®
基于 PSS 的应用程序为创建通用应用程序提供了令人兴奋的机会,这些应用程序可用于验证各个级别的测试意图。当我们在多处理器 SoC 中使用互连总线结构时,也会出现类似的机会。我们需要在各个级别验证和评估功能和性能。
需要根据 SoC 的特定要求明智地选择互连总线结构,因此需要进行早期性能分析,这可以使用系统模型(通常在 C/SystemC 中)来完成。这需要创建可以验证系统模型的测试。一旦选择了其配置并生成了 RTL,就需要在 IP 级别对其进行验证。这需要基于 UVM 的验证和 UVM 序列来验证相同的内容。随后,生成的 RTL 被集成到 SoC 系统级别,需要在 SoC 级别进行验证。这通常是通过在 C/C++ 中对测试进行编码来完成的,以进行验证和确认。
所有这些互连验证应用程序都可以通过使用基于 PSS 的技术创建可重用的测试来处理。为此,为通用流量生成器创建了一个 PSS 模型,该模型可以为不同数量的主服务器创建不同的读取和写入模式。流量生成器可以为每个主站生成具有不同分布的流量,以便可以模拟快速和慢速主站。
此外,它可以独立控制哪个主站以什么频率生成流量,以及创建背对背和延迟交易。图 1 显示了使用 PSS 的流量生成器的流程。紫色块表示具有通用从站和主站的互连总线,而绿色块表示驱动总线上事务的 RTL 或行为模型。基于 PSS 的流量生成器(以粉红色表示)集成并控制这些块以驱动和收集交易。流量生成器处理不同类型的流量生成要求,并为各种目标(如基于 SystemC 的应用程序、UVM 和基于 C 的测试)创建测试。每个过程都需要在集成和测试生成方面以不同的方式处理,这将在后续部分中描述。
图1.基于 PSS 的工艺流程,用于互连总线的性能分析和验证。
基于系统C的互连总线性能分析
对互连总线进行性能分析,在SoC开发周期中尽早定量测量系统性能和功耗。需要针对各种应用、平台和互连配置(拓扑、功能、配置等)评估互连总线的性能。它涉及收集需求,创建规格,然后将这些规格转化为符合性能、功耗和面积要求的有凝聚力的设计。这是一个在设计过程中执行的迭代过程。每次迭代都需要捕获规范并将其传达给设计和开发团队。
这是通过给定SoC规范的基于SystemC的代表性TLM模型实现的,该模型可用于准确预测系统的行为。图 2 显示了此流程,从配置用于生成 SystemC 模型的工具开始。这些模型是工具包的一部分,可以根据设计需求进行配置。它可用于为 AMBA 主站和从站、时钟发生器和激励生成周期精确或近似模型。模型到位后,需要在此级别编写流量模式,手动或使用定向自动化脚本将规范转换为实际仿真并收集结果。然后使用特定的模拟器对模型进行仿真,这些模拟器有助于提供量化性能的解决方案。
图2.使用 SystemC 建模的性能分析流程。
尽管有建模和分析工具,但将该工具用于少数候选设计可能非常耗时。使用脚本生成流量提供了某些类型的流量模式,但详尽的场景生成仍然是一个问题。最重要的是,由于模拟非常耗时,因此在模拟结束时进行分析会增加试验次数,以达到预期数量。再加上在整个设计和性能建模功能中花费在规格管理上的时间,我们看到需要从单一来源开始的更加自动化的流程。基于PSS的技术是应对这些挑战的有效方法。
基于 PSS 的工具中的随机化机制从对 DUT 高级状态之间的合法转换的抽象描述开始,并自动枚举覆盖通过此状态空间的路径所需的最小测试集。基于 PSS 的工具具有覆盖机制,可以测量给定状态空间中条件的覆盖程度。这允许在任何生成的刺激运行之前测量覆盖范围,从而节省过程中的时间。基于 PSS 的覆盖率允许用户查看横向路径,并允许生成测试,以便覆盖图形的最大长度。因此,它能够在比通常的约束随机验证少得多的周期内实现更高的覆盖率。
基于 PSS 的工具还提供测试意图的可视化表示形式,从而可以更好地可视化可以生成的方案。使用此功能,可以轻松横向覆盖特定测试条件的定向测试。它还允许约束某些条件集,从而为特定特征集创建受约束的随机场景。基于 PSS 的技术的引入基本上保留了图 2 中给出的流程,但跟踪生成流程发生了很大变化。
流量生成器的核心是一个通用 PSS 模型,其中包含用于生成不同类型流量模式的算法。它是刺激和测试场景的单一表示。可以通过不同的方式配置此模型,以生成包含可能生成流量的几种排列之一的测试。它由三部分组成:
执行块:exec 块是基于 PSS 的包装器下目标平台中使用的外部代码的语句。对于 SystemC 端应用程序,它具有自定义代码,这些代码将对基础环境执行不同类型的读取和写入。对于UVM SV部分,它具有从工具提供的宏(收发器生成)派生的逻辑,该宏通过基于PLI的系统调用转换SV世界并与之交互。它还有一个部分(C生成),可以转换并与C端交互,并允许跨不同平台的无缝重用。
PSS 模型:这是基于整套规范的实际用例模型。它由一组函数组成,这些函数等效于执行一组操作的更高级别序列。流量生成器包含不同的算法集,这些算法以各种简单和复合操作的形式表示。这些函数最终将从 exec 块调用函数以在 SV 端执行命令。
PSS 配置:通用模型需要特定信息才能生成特定测试。这可以是与验证相关的信息,例如 AMBA 主站、从站、主站类型、源地址和目标地址、访问类型、平均带宽、突发大小、数据大小、频率和带宽要求。此信息需要从规范中派生,以生成测试意图的正确表示。
图 3 表示基于 PSS 的流量模式生成流程,该流程从规范解析开始。基于 Python 的脚本解析电子表格中编写的规范的某些方面,并以通用 PSS 模型和配置可以读取的特定格式提取数据。然后,PSS 工具分析 PSS 模型和配置,以创建测试意图的可视化表示形式。图 4 显示了测试意图的某些可视化表示形式。它具有表示为写入或读取操作、单或突发模式、不同总线大小等的条件,可以控制这些条件以生成不同类型的流量模式。紫色的部分表示为横向条件,而蓝色的部分将不考虑在内。这有助于用户可视化和限制所需流量的不同方面。如果用户不添加约束,PSS 工具将随机选择某些配置并创建受约束的随机测试。这也是可以收集基于工具的覆盖范围并可以对完整性进行早期分析的点。基于工具的覆盖率是衡量工具生成的测试中测试意图的覆盖程度的度量。图 4 表示由 PSS 工具生成的部分基于 PSS 的覆盖范围。粉色块表示未涵盖的条件,而绿色块表示已覆盖的条件。用户可以查看此表示形式,并为未涵盖的条件创建测试。®
图3.基于 PSS 的流,用于生成流量模式。
图4.测试意图和基于 PSS 的覆盖范围的可视化表示。
生成测试后,将运行后处理脚本,以创建自定义格式与性能分析模拟工具兼容的流量模式。下一步是运行模拟并生成流量以生成大量原始数据,这些数据必须处理成不同的指标和可视化效果,以支持对结果的有效分析。表 1 显示了生成的报告的几个示例,其中考虑了用于计算具有多个主站和从机的 SoC 互连总线性能分析的参数。此分析可以根据平台规范生成一个(主)对一(从)和多对一模拟(称为实验)。实验基于对平台规范中定义的时钟频率和数据宽度的静态分析生成,配置为运行到其理论最大带宽。通常,基于 PSS 的流量允许更好地放置针对特定总线配置的随机方案。此外,测试意图的可视化表示允许生成更好的约束。可视化覆盖范围的能力可以带来更好的流量模式,从而减少迭代次数,以达到给定主从系统中的最高可能带宽。
实验编号 | 主人 | 奴隶 | 方向 | 平均模拟带宽 | 平均静态带宽 | 平均模拟延迟 |
5000 | 核心 | 嘟 | 读 | 1199.72 | 6000 | 24 |
5001 | 核心 | 嘟 | 写 | 999.79 | 6000 | 24 |
5002 | 核心 | L2 内存 | 写 | 99.92 | 100 | 24 |
5003 | 核心 | L2 内存 | 读 | 99.92 | 100 | 21.34 |
通过采用基于 PSS 的技术,我们已经看到达到最高平均模拟带宽所需的迭代次数有所改善,从而节省了仿真周期和分析时间。
通过减少制作互连架构性能模型所需的工作,以及统一规范中的单一事实来源,任何重新配置时间都大大减少。该流程允许我们探索许多候选设计,然后再确定一个设计方案,以运行时序收敛和 RTL 流程。
基于 UVM 的互连总线验证
互连结构的性能分析给出了性能、功耗和面积方面的最佳配置。一旦互连配置被冻结,它就可以用于生成具有可配置自动化流程的 AMBA 互连 RTL。但是,由于配置限制、软件结构和规范的手动解释,此流程可能容易出错,因此需要对其进行验证以确定完美的生成过程。传统上,这是通过使用基于UVM的行业标准方法来实现的。
用于验证互连总线的 UVM 环境如图 5 所示。它由不同类型的AMBA(AXI,AHB,APB)主站和UVC从机组成,其自定义配置分别连接到DUT从站和主站。可以使用环境的通用配置来配置环境。记分板记录事务,并指示任何类型的数据不匹配的错误。
图5.互连总线的基于 UVM 的 IP 验证。
这些测试包含控制底层 UVC 和接口功能的序列和虚拟序列集。测试根据从规范派生的测试计划运行,包括定向和随机测试用例。还根据验证计划创建了功能覆盖点,以确保我们符合规范。在此之后,运行模拟并创建覆盖率数据库以收集代码和功能覆盖率。对数据库进行分析,并审查覆盖漏洞。运行回归,并生成和分析报告。重复该过程,直到达到所需的覆盖目标,以确保高质量的验证。
除了作为验证计划一部分的定向测试外,基于 UVM 的技术还依赖于随机测试来实现覆盖目标。它从随机刺激开始,逐渐收紧约束,直到达到覆盖目标,依靠随机化和计算服务器场的蛮力来覆盖状态空间。代码覆盖率是定量度量,而功能覆盖率是 DUT 代码执行的定性度量。通常,这种质量受到制定验证计划和分析承保范围报告的人员的勤奋和彻底性的限制。决定验证质量的另一个因素是有效的自动检查。使用记分板和基于断言的检查点进行数据包比较的组合可以决定稍后在流中发现的硅后错误的数量。基于UVM的验证技术在确保高质量验证方面是自给自足且有效的。然而,基于PSS的技术的引入进一步改善了验证流程,其各种功能。
基于 PSS 的验证从根据设计规范创建验证计划和设置验证环境开始。测试意图是根据可移植激励模型、约束和配置文件捕获的。然后,支持该标准的工具可以为给定类型的验证环境生成测试,并收集基于图形的覆盖范围。对此类覆盖率的分析可以指出测试约束和配置中的漏洞,并且可以重新访问该过程。
图 6 显示了引入基于 PSS 的模型后的验证流程。这里要注意的重要一点是,基于 PSS 的模型不会取代基于 UVM 的环境。相反,它添加到现有的基于 UVM 的环境中以增强其功能。UVM 验证环境继续具有主 UVC 和从 UVC,具有 SB 和配置,而 UVM SV 基础架构绕过了虚拟序列。环境由顶级UVM测试控制,一方面调用虚拟序列来控制UVC操作,另一方面,它通过基于PLI或DPI的系统调用与便携式激励生成的格式进行交互。PSS 模型完全从基于 SystemC 的性能建模过程中重用。从基于 PSS 的模型生成的测试逻辑控制 UVC 之间的所有操作。使用生成的测试运行 IP 级别模拟并收集覆盖范围。
图6.互连总线的基于 PSS 的 IP 验证。
表 2 显示了使用 PSS 和 UVM 的验证环境运行的回归结果。采用基于 UVM 的方法后,为达到最大覆盖范围(有豁免)而运行的约束随机测试的数量显着减少。基于 PSS 的验证中的随机化机制从对 DUT 高级状态之间的法律转换的抽象描述开始,并自动枚举覆盖通过此状态空间的路径所需的最小测试集。基于图形的覆盖率允许用户查看横向路径,并允许生成测试,以便覆盖图形的最大长度。
测试运行 | 通过 | 失败 | 不运行 | 总体代码覆盖率 |
(仅限紫外线)125 | 125 | 0 | 0 | 298034/388949 (76.6%) |
(UVM PSS)75 | 75 | 0 | 0 | 298034/388949 (76.6%) |
测试质量是便携式激励验证方法可以更好地控制的另一个因素。可以直观地看到测试,使用户能够以更好的方式理解控制和数据流。此外,某些工具允许在运行时进行主动检查,从而实现有效的自动检查。这将与记分牌检查和基于断言的检查点相结合,提高核查质量。
可移植激励方法在更高的抽象层工作,然后与底层验证过程集成。因此,尽管测试或激励生成过程有一定的改进,但这种验证方法仍将继承其原始形式的基础过程。在与基于 UVM 的环境集成的情况下,一方面它将受益于验证组件的重用,另一方面,它将受到其复杂性的限制。同样,与UVM的情况一样,核查的质量受到核查计划和覆盖率报告分析质量的限制。
互连总线的 SoC 验证
当互连作为SoC的一部分集成时,检查其与系统中各种主站和从站的集成至关重要。这通常通过在处理器上运行的基于 C 的测试来完成,以检查互连总线的集成。IP 级别的通用主站更改为特定的总线主站,如多个处理器、DSP、DMA 控制器、串行协议主站(如 SPI、I2C,CAN以及更多自定义主站和从站。这需要特定的序列或宏,旨在控制SoC中的不同主站和从站。宏或序列通常具有寄存器编程,以实现来自DMA控制器,存储器等主站的发送和接收事务。此级别没有受约束的随机化,因此需要手动探索和编写每个方案。在重用方面,IP级别的一些UVM监视器可用于监视协议或记分牌以检查特定的兴趣点。但是包含规范主要部分的测试和序列需要在 C 语言中重做,并具有不同的重点。
基于 PSS 的验证技术专为 IP 到 SoC 测试重用而设计。图 7 显示了流量生成器 PSS 模型在 SoC 级别验证中的重用。在 IP 级别编码的模型根据 SoC 规范针对不同的地址映射进行配置,并针对 C 测试生成进行配置。在 IP 级别编写的同一组序列具有基于图的约束随机化,可以重复使用。当我们为基于处理器的应用程序编写模型时,模型中的几乎所有序列(用于执行代码的部分除外)都是可重用的。话虽如此,在这种情况下,exec 代码要复杂得多,包括为各种主站(如 DMA 和内存控制器)完全启用和禁用宏,这些主控器可以在互连总线上启动单个或突发事务。对于每个通用主站,需要重写 exec 代码,以便它可以与 SoC 中的各种主站集成。该工具随机化允许主从交易的多种组合。在 SoC 级别为集成检查创建定向测试的限制可以通过测试的可视化表示得到很好的管理。生成 C 测试后,它们将与具有某些系统特定标准基础结构的 SoC 设置集成。然后编译 C 测试并在处理器上运行以生成事务。
图7.互连总线的基于 PSS 的 SoC 验证。
图 7 还显示了使用 PSS 工具创建多核测试的过程,这些工具很难手动编写。测试意图的不同部分可以针对在不同的内核上运行,从而允许创建有趣的场景。在这种情况下,如果存在多个总线主站,它特别有用。由于此功能集,可以对不同的主站进行编程。能够在 SoC 级别重现基于图形的约束随机测试,而无需实际重新编码场景,这也是一个主要优势。它还允许测试生成检查具有不同地址映射的同一 IP 的不同实例。除此之外,当不同IP的不同类型的PSS模型在SoC级别组合时,可以创建复杂的场景,否则很难手动编码。
互连总线验证
验证过程是确定产品符合客户规范、可用性和验收测试所必需的。传统上,评估板需要基于C的测试,这些测试是根据原始规范手动编写的。通过使用基于PSS的方法,可以生成与评估软件兼容的C测试,可以大大减少这种重复工作。
图 8 显示了使用 PSS 的方法进行验证的过程。流量生成器的 PSS 模型可以根据 SoC 规范配置为不同的地址映射,并针对 Eval-C 测试生成进行配置。PSS 工具通常能够为多个内核生成测试,这也支持特定的方案测试。生成的C测试由调试器编译,代码通过JTAG等接口加载到评估板上。可以在评估板和调试器界面上运行测试并查看结果。在SoC级别编写的同一组序列具有基于图的约束随机化,完全可以重复使用。除此之外,测试意图的可视化表示形式和应用约束的能力对于创建定向方案非常方便。这是一种在传统上完全手动的验证过程中创建测试的独特且受控的方法。
图8.互连总线的基于 PSS 的硅验证。
同样,需要根据芯片验证的特定要求重写exec代码。验证平台中用于控制总线上不同主站的基本软件驱动程序(如DMA和内存控制器)通常可用于此类应用。生成的 C 代码还需要以评估平台可接受的格式进行集成。通常,此过程包括重用标头,从预先编写的验证代码中获取文件,并在生成的集成代码中重用它们。然后编译代码并使用目标调试器运行,以确保在此级别进行适当的测试。
PSS 工具通常提供使用后处理应用程序分析运行结果的功能。可以对指示测试通过或失败的结果进行可视化分析,并生成代码的特定段产生结果。这在验证过程中特别有用,因为传统的调试功能在这里非常有限。
虽然我们还没有在后硅基应用程序中重用流量生成器模型的 C 测试,但我们相信它可以在任何采用基于 C 的测试的评估平台上使用。事实上,基于SoC的PSS模型被重用于硅后评估板的模型类型已被证明可用于其他基于处理器的应用。这种重用是仅基于便携式激励的方法所特有的应用。
总结
基于 PSS 的通用流量生成器允许从基于 SystemC 的性能分析到验证和确认过程的互连总线的测试重用。每个进程都需要集成和基础设施开发。但这是一个一次性过程,并提供了在后续应用程序中重用的可能性。除了重用之外,基于 PSS 的方法在特异性随机化、测试意图的可视化表示和早期覆盖分析方面具有优势,从而增加了更多价值。创建通用应用程序的能力允许即插即用解决方案的可能性,这可以进一步加快验证和确认过程。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !