PCB设计论坛
直播中

modemdesign

4年用户 49经验值
擅长:RF/无线
私信 关注
[经验]

UVVM(通用 VHDL 验证方法)

UVVM(通用 VHDL 验证方法)
UVVM (Universal VHDL Verification Methodology)1.png

简介

UVVM(通用 VHDL 验证方法)是一种免费的开源方法和库,用于开发非常结构化的基于 VHDL 的测试平台。

概述、可读性、可维护性、可扩展性和重用性对于 FPGA 开发效率和质量都至关重要。 UVVM VVC(VHDL 验证组件)框架于
2016 年发布,专门处理这些方面。

UVVM 目前由以下元素组成:

实用程序库

VVC(VHDL验证组件)框架 - 包括实用程序库

BFM(总线功能模型)可与 UVVM 的任何部分一起使用(请参阅下文了解 Bitvis 当前支持的接口)

VVC 与 UVVM VVC 框架一起使用,并且可以与 BFM 结合使用(请参阅下面的概述)

请注意,UVVM 有两种不同的复杂性级别。用于中高级测试平台的 VVC 框架和 VVC,以及用于简单使用的实用程序库和
BFM,并作为更高级测试平台的基础。强烈建议新手用户首先使用 UVVM Utility 库和 BFM。它的用户门槛非常低,您将在一小时内启动并运行。请参阅实用程序库了解介绍。
VVC 框架稍微复杂一些,但已尽可能简化,以允许高效开发高质量的测试平台。

请注意,已提供专用存储库 UVVM_Light 来简化实用程序库和 BFM 的使用入门。这里所有的代码和文档都收集在一个目录中,并且只使用了一个
VHDL 库。文档和代码与完整 UVVM 100% 相同。

我需要这个 VVC 框架有什么用?

UVVM 是一个验证组件系统,允许实现非常结构化的测试平台架构,以处理任何验证复杂性 - 从非常简单到非常复杂。该系统的一个主要优点是非常简单的类似软件的
VHDL 测试定序器,它可以使用任意数量的验证组件控制完整的测试平台架构。这将概述、可读性和可维护性提升到了一个新的水平。例如,像
uart_expect(UART_VVCT, my_data) 或 axilite_write(AXILITE_VVCT, my_addr, my_data,
my_message) 这样的简单命令将自动告诉相应的 VVC(对于 UART 或 AXI-Lite)执行 uart_receive() 或
axilite_write() BFM分别。

使用该系统的主要好处是什么?

这里真正的巨大好处是,您可以从拥有最好的测试平台架构中获得独特的概述、可读性、可维护性、可扩展性和重用性——就像良好的架构对于任何复杂的设计也至关重要一样。这里的另一个主要好处是,可以从测试定序器同时发出任意数量的命令

  • 从而允许完全控制何时执行访问,并且这些命令“甚至”对于软件开发人员来说是可以理解的;-)命令可以被排队、倾斜、延迟、同步等——并且当然也可以应用用于应用受约束的随机或其他数据序列的超集。这可以很好地控制您的测试平台和
    VVC。

对于调试,您可以选择在从定序器发出命令时、在 VVC 接收命令时、在 VVC 启动命令时和/或在 DUT 执行命令时记录命令。这样可以全面概览完整测试平台中的所有操作。

UVVM 是免费且开源的,并且标准化了构建良好测试平台架构和 VVC 的方法,因此重用非常简单,并且允许 FPGA 社区共享将在结构良好的测试工具中协同工作的
VVC。

当然,您可以将 UVVM 与任何其他传统或第 3 方测试平台或验证模型结合起来。 LinkedIn 上的这篇文章将为您提供更多关于为什么应该使用这个库的信息。

主要特点

对于检查值、范围、时间方面以及等待给定窗口内的事件的非常有用的支持

基本功能(如日志记录、警报处理和检查器)的用户门槛极低

一个非常结构化的测试平台架构,允许类似乐高的测试平台/线束实施

非常结构化的 VHDL 验证组件 (VVC) 架构,允许以非常容易理解的方式在多个接口上同时进行活动(刺激和检查)

易于理解的命令语法,用于控制具有多个 VVC 的完整测试平台

即使对于具有大量 VVC 的测试台,也可以轻松保留结构和概述

一种 VVC 架构,从一个 VVC 到另一个 VVC 几乎完全相同 - 有时仅将 BFM 调用作为区分器,从而允许从一个
VVC 到另一个 VVC 的极其高效的重用

VVC 架构可轻松允许多个线程,例如同时进行 Avalon 命令和响应

VVC 架构允许对任何给定接口或协议的所有验证功能进行简单封装

允许将 VVC 包含在测试工具中的任何位置,甚至包含在设计本身内

支持功能和层次结构的完整详细控制的日志记录和警报系统

日志系统可让您轻松查看命令如何从中央测试定序器传播到 VVC - 通过执行队列 - 直到它被执行并完成到 DUT

允许将第 3 方随机化和功能覆盖范围包含在中央测试定序器中,甚至更好地包含在本地定序器的 VVC 内,以实现更好的控制和封装

与 Jenkins 等回归测试工具简单集成

提供 UVVM 实用程序库、VVC 框架和所有 BFM/VVC 的快速参考

可用的 VVC 和 BFM

这些 VVC 和 BFM 可以在典型的 UVVM 测试平台内使用,但它们也可以独立使用 - 例如作为 BFM 或 VVC
来仅处理 AXI4-Lite 接口,而其他所有内容都是您的专有测试平台和方法。

阿瓦隆MM

Avalon ST - 主站和从站

AXI4-Lite

AXI-Stream - 主设备和从设备

SBI(简单总线接口 - 单周期简单并行总线接口)

串口

SPI——主机和从机

I2C - 主设备和从设备

通用输入输出接口

GMII

RGMII

更多即将到来

重要的

VIP 遵守各自的协议,因此可以正常访问该接口。 VIP 不是协议检查器。

先决条件

UVVM 独立于工具和库,但必须使用 VHDL 2008 进行编译。UVVM 已使用以下模拟器进行了测试:

Modelsim 版本 19.1

Riviera-PRO版本:2018.10.137.7135

Questa Sim 版本 19.1

GHDL 版本 0.36

注意:

Questa Sim 版本 19.2 和 Modelsim 版本 19.2 存在可能阻止 UVVM 正常工作的已知错误。

如果要执行 VVC 生成脚本,则需要 Python

更多回帖

发帖
×
20
完善资料,
赚取积分