UVM组件生成概述

UVM组件生成概述

如果你有一个金宝app®编码器™您可以从Simulink模型生成一个通用验证方法(UVM)测试平台和其他组件。金宝app生成UVM组件允许从Simulink环境直接过渡到UVM框架。金宝app

HDL验证器™将Simulink子系统作为生金宝app成的C代码导出到UVM组件中,并使用直接编程接口(DPI)。您可以将这些生成的组件集成到现有的UVM环境中。您还可以使用生成的UVM测试工作台来测试HDL DUT,方法是将生成的行为DUT替换为详细的HDL设计。

为UVM组件生成金宝app准备Simulink模型

您的Sim金宝appulink模型必须包含这些子系统。

  • DUT子系统。这个子系统为您的DUT生成一个SystemVerilog DPI (SVDPI)行为模型。有关SystemVerilog DPI生成的更多信息,请参见使用Simulink生成DPI组件金宝app

  • 一个序列子系统。这个子系统创建刺激并将其驱动到DUT。

  • 一个记分牌子系统。这个子系统收集并检查DUT的输出。

序列还可以将信号直接驱动到记分牌,如Simulink模型结构图中红色部分所示。金宝app有关如何创建子系统的详细信息,请参阅从选择中创建子系统(金宝app模型)。

金宝app仿真软件模型结构

选择系统目标

因为UVM生成使用生成SystemVerilog DPI的技术,所以您必须首先选择一个支持的系统目标文件。金宝app打开“配置参数”对话框,然后选择代码生成从左窗格。为系统目标文件,点击浏览,然后选择systemverilog_dpi_grt.tlc从列表中。

或者,如果你有嵌入式编码器®产品,您可以选择目标systemverilog_dpi_ert.tlc。此目标使您能够在选择时访问其他代码生成选项代码生成从“配置参数”对话框的左窗格中。

有关UVM生成的示例,请参见从Simulink生成参数化的UVM测试工作台金宝app

生成UVM结构

使用uvmbuild函数来生成UVM组件的这种结构。

  • Top—此模块实例化生成的行为DUT和测试环境。顶部模块有时钟和复位信号,这些信号会传播到设计中。

  • DUT—从Simulink DUT子系统生成一个有待测试的行为设计模块。金宝app

  • 测试——这个模块包括UVM环境和sequence类。

  • Sequence——这个UVM对象定义了一组事务。序列对象是由Simulink序列子系统生成的。金宝app

  • 环境-此模块包括代理和生成的计分板。

  • 记分牌——UVM记分牌是由Simulink记分牌子系统生成的。金宝app

  • 代理——UVM代理包括一个音序器、驱动程序和监视器。如果存在从Simulink序列子系统到Simulink记分牌子系统金宝app的直接路径,则包括一个附加的监视器(图中红色部分所示)来监视该信号。

  • 这个模块控制到DUT的序列事务流。

  • 驱动程序——该模块将每个事务转换为所需的协议,并将事务驱动到DUT。

  • 监视器-这个被动的实体采样DUT信号。

有关UVM组件和结构的更多信息,请参见UVM参考指南

生成的文件和文件夹结构

当生成UVM组件时,HDL验证器从DUT、sequence和记分牌子系统生成SystemVerilog DPI组件。DPI生成的工件放在三个目录中,每个子系统一个:DUT、sequence和记分牌。对于这三个子系统中的每一个,都会用这些内容创建一个文件夹。

子系统_build-此文件夹包含为三个子系统(DUT、sequence或scoreboard)中的每个子系统生成的SVDPI组件。文件夹名是子系统_build,其中子系统被DUT、sequence或scoreboard替换。每个文件夹包括:

  • 子系统_dpi_pkg.sv- SystemVerilog包文件与功能声明的组件

  • 子系统_dpi.sv-生成的SystemVerilog组件

  • DPI组件和扩展名为.c和.h的头文件

  • 扩展名为.mat、.txt、.dmr、.tmw和.def的元数据和信息文件

  • 用于将组件编译成.o和.so文件的makefile

为指定的子系统生成三个文件夹之后,将为额外的UVM组件文件和执行脚本创建第四个文件夹。文件夹命名为top-model-name_uvmbuild / uvm_testbench,在那里top-model-name是顶级Simulink模型的名称。金宝app这个文件夹包括几个子文件夹。

  • DPI_dut-此文件夹包含SystemVerilog包、模块文件和.dll文件的副本dut_build文件夹中。

  • 记分板-此文件夹包含SystemVerilog包的副本和.dll文件记分板_build文件夹中。此文件夹还包括记分板类。

  • 序列-此文件夹包含SystemVerilog包的副本和.dll文件序列_build文件夹中。该文件夹还包括sequence类、类型定义和一个样板排序器类。

  • -此文件夹包含SystemVerilog包和顶级Simulink模型的模块文件。金宝app此文件夹还包含用于HDL-simulator执行的脚本。

  • uvm_artifacts-此文件夹包含这些SystemVerilog文件。

    • mw_dpi_types_pkg.sv-该文件包含生成的SystemVerilog类型的定义,例如枚举结构体,由UVM组件接口公开。只有使用这些类型的UVM组件才会导入这个包。

    • mw_DUT_trans.sv这个文件包含一个UVM对象,它定义了记分牌的输入事务类型。

    • mw_DUT_if.sv这个文件定义了DUT SystemVerilog接口类型。它包含DUT输入和输出,以及用于时钟、复位和时钟启用信号的端口。

    • mw_DUT_driver.sv-该文件包括一个通过的UVM驱动程序。

    • mw_DUT_monitor_input.sv-该文件包括一个通过的UVM监视器。监控器从驾驶员那里采集信号到记分牌。

    • mw_DUT_monitor.sv-该文件包括一个通过的UVM监视器。监视器从被测设备采集信号到记分牌。

    • mw_DUT_agent.sv这个文件包含一个UVM代理,它实例化序列、驱动程序和监视器。

    • mw_DUT_environment.sv这个文件包含一个UVM环境,它实例化一个代理和一个记分板。

    • mw_DUT_test.sv这个文件包含一个UVM测试,它实例化了一个环境和序列。测试模块通过调用来启动事务seq.start

金宝app支持金宝app数据类型

金宝app受支持的Simuli金宝appnk数据类型被转换为SystemVerilog数据类型,如下表所示。

金宝app模型数据类型 SystemVerilog数据类型
uint8 字节无符号
uint16 shortint无符号
uint32 int无符号
uint64 longint无符号
int8 字节
int16 shortint
int32 int
int64 longint
shortreal
真正的
布尔 字节无符号
复杂的

您可以在SystemVerilog之间进行选择结构体SystemVerilog接口中实部和虚部的数据类型或平坦端口。要在这些选项之间进行选择,请在“配置参数”对话框的左窗格中选择代码生成>SystemVerilog DPI部分,并设置复合数据类型结构夷为平地

向量,矩阵

数组

例如,Simulink中的4×2矩阵被转换成SystemVeri金宝applog中包含8个元素的一维数组。编码器按列-主序将矩阵压扁。

nonvirtual总线

您可以在SystemVerilog之间进行选择结构体在SystemVerilog接口中为单独的组件信号键入或平展端口。要在这些选项之间进行选择,请在“配置参数”对话框的左窗格中选择代码生成>SystemVerilog DPI部分,并设置复合数据类型结构夷为平地

枚举数据类型 枚举
定点

可以选择位向量、逻辑向量或兼容的C类型。在“配置参数”对话框中选择代码生成>SystemVerilog DPI。在SystemVerilog港口节中,设置定点数据类型

限制

  • HDL验证器将矩阵和向量转换为SystemVerilog中的一维数组。例如,Simulink中的4×2矩阵被转换成SystemVeri金宝applog中包含8个元素的一维数组。

  • UVM组件生成不支持多速率子系统。金宝app

  • 金宝app未指定为DUT、sequence或记分牌子系统的Simulink组件将被忽略。

  • 反馈回路允许在每个子系统内部进行,但不允许在子系统之间进行。

另请参阅

相关的话题

外部网站