便携式刺激内部:UVM 集成

电子说

1.2w人已加入

描述

将便携式刺激标准 (PSS) 功能与通用验证方法 (UVM) 集成与两种语言之间的集成不同。

在我们之前的专栏中,Aileen Honess 提供了一个背景,说明为什么使用通用验证方法 (UVM) 和 SystemVerilog 的团队可能希望通过添加便携式激励来扩展他们的方法。通过结合不仅了解组合约束而且了解设计的时间方面的约束求解器,可以生成针对特定验证意图的更有效的测试。

本博客将介绍这种集成的基本策略。需要注意的是,集成便携式刺激标准 (PSS) 功能不会删除任何可能已经存在的功能。现有的测试平台仍然可以工作,并且它们将继续提供相同的覆盖范围。PSS 添加了新功能,如果您在达到所需覆盖水平时遇到问题,或者如果您想要制作可重新定位到仿真或可用于芯片启动的测试用例,这些功能将变得非常有用。

随着时间的推移,您可能会发现您希望更改验证方法以支持由 PSS 生成的测试用例,而不是来自现有 UVM 环境的更简单、随机的测试用例。随着您对 PSS 的功能越来越有信心,这些更改可能会随着时间的推移而发生。此外,PSS 还提供了新的——我们相信,更直观的——记分板和评估覆盖率的方法。

我们还必须提醒您,PSS 和 UVM 的集成并不等同于两种语言之间的集成。PSS 定义了一个模型,工具在该模型上运行以生成测试用例。它是与 UVM 集成的生成的测试用例。这意味着,在谈论集成时,您不能使其独立于特定供应商的工具。我将尽可能用最笼统的术语来描述集成,其他供应商可能会有类似的步骤集,但细节或自动化水平可能会有所不同。

这六个步骤是:

识别 UVM 接口,包括事务级建模 (TLM) 接口、软件接口和内存。配置工具并集成到 UVM。

创建 PSS 寄存器类型描述。这可以通过硬件/软件接口 (HSI) 寄存器定义或从 IP-XACT 描述转换来手动完成。

确定设计的整体 PSS 模型/表示(组件、操作、资源等)。

提供每个“动作”的详细信息。这些是根据可合成到 TLM 或软件驱动验证 (SDV) 测试的可移植原语定义的。

编译模型、综合测试用例并运行 UVM 仿真。

查看和调试结果,并分析覆盖率。

我们将使用一个相当简单的设计来演示这些概念。此设计源自公共领域示例,可在 Breker 发行版中使用。该示例有两个 CPU、两个 UART、一个 DMAC 和一个 AES 加密块。

每个 UART 都有一个验证 IP (VIP),用于配置以及发送和接收数据。此外,每个 CPU 都公开了由 AMBA 高级外围总线 (APB) VIP 驱动的端口。TLM 事务和 TLM 端口是为 UART VIP 定义的;此外,为 APB VIP 定义了在 TLM 模式下配置的处理器代理。内存资源被定义为供 DMAC 操作使用。

PSS

PSS

步骤 2 建立 VIP 的寄存器和内存映射。很多时候,这些已经以 IP-XACT 格式定义,这是第三方 IP 块的常用格式。许多公司还使用它来记录其内部 IP。如果是这种情况,实用程序将进行必要的转换。Breker 采用了提议的 HSI,但在 PSS 标准的第一个版本中并未获得批准。

trekhsi使用随设计发布的 IP-XACT 文件可以轻松创建三个组件(UART、DMAC、AES)中每一个的寄存器描述。可以修改字段名称以提高可读性。

PSS

第 3 步是识别系统的组件。对于本设计,主要的 IP 模块是 UART、DMA 和 AES,它们成为“PSS 组件”。每个块都具有描述为“动作”并表示为“PSS 动作”的核心功能。这些块的关键功能(动作)可以定义为:

UART — 配置、接收、发送

DMAC — 输出数据,输入数据

AES——加密、解密

CPU——输出数据,输入数据

请注意,在第一次编写 PSS 模型时,定义所有动作并不重要。起初,只需要定义最重要的,随着验证任务的进行,还可以定义附加的、次要的操作。这不会影响任何已经执行的验证——它只是使更多的序列成为可能。

为每个计算元素(UART、DMAC、AES)创建一个资源池。

块的接口是使用流对象(FIFO、Reg)和为每个对象创建的相应“池”定义的。

最后,PSS 锁定控制资源的共享或独占使用。调度程序将使用这些来确保它不会尝试使硬件同时执行互斥操作。

PSS

Entry 操作(顶部)将同时安排两个 UART 场景,一个 Encrypt 和一个 Decrypt 操作。UART 场景(左下)将为 DUT 选择配置,配置 VIP 以匹配,并并行执行多个接收和发送操作。加密和解密操作由 DMAC 传输提供(右下)。资源锁用于保证同一硬件块上的两个操作不允许同时执行。

整个模型的 PSS 代码由该工具生成。每个生成的动作都有一对// Start of user code和// End of user code标记,可以在其中输入动作的详细操作。重新生成模型时,这些标记中的代码将被保留。

在我们的下一个专栏中,我们将介绍剩下的三个步骤。同时,与往常一样,如有任何问题或需要澄清,请与我联系。

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分