主要内容

UVM组件生成概述

UVM组件生成概述

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

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

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

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

  • 一个DUT子系统。该子系统生成DUT的SystemVerilog DPI (SVDPI)行为模型。有关SystemVerilog DPI生成的详细信息,请参见DPI组件生成与Simulink金宝app

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

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

  • 序列还可以直接将信号驱动到计分板,如Simulink模型结构图中红色部分所示。金宝app

创建子系统的方法请参见创建子系统(金宝app模型)

金宝appSimulink模型结构

图像显示了一个包含序列、DUT和计分板子系统的框图。一个箭头从序列连接到DUT,另一个箭头从DUT连接到计分板。

除了前面的结构之外,您还可以选择包括这些子系统。

  • 驱动子系统

  • 监控子系统

  • 预测子系统

请注意

Simulink模型中的所有子系统的名称必须以字母开头金宝app,并使用字母数字字符和下划线的组合。

当添加监视器、驱动程序或预测子系统时,该特性支持这些配置。金宝app

  • 从序列中发出的所有信号必须连接到驱动器、预测器或记分牌上。其他输出信号被忽略以产生UVM。

  • 如果您的模型包含一个驱动子系统,那么所有来自驱动的信号都必须连接到DUT。

  • 如果你的模型包含一个驱动子系统,那么驱动的所有输入信号都必须从这个序列开始。

  • 如果您的模型包含一个监视器子系统,那么来自DUT的所有信号都必须连接到监视器。

  • 如果您的模型包括一个监视器子系统,那么所有从监视器发出的信号都必须连接到计分板。

  • 如果你的模型包括一个预测子系统,那么预测器的所有输入信号都必须来自这个序列。生成UVM时会忽略其他输入。

  • 如果您的模型包括一个预测子系统,那么来自预测器的所有输出信号必须连接到计分板。生成UVM时会忽略其他输出。

这张图显示了一个Simulink模型,金宝app它包括一个驱动程序、一个监视器和一个预测子系统。

图像显示了一个包含序列、DUT和计分板子系统的框图。在序列和DUT之间有一个驱动子系统,在DUT和计分板之间有一个监控子系统,在序列和计分板之间有一个预测子系统。

选择系统目标

由于UVM生成利用了生成SystemVerilog DPI的技术,因此必须首先选择一个支持的系统目标文件。金宝app打开配置参数对话框,选择代码生成从左边窗格。为系统目标文件,点击浏览,然后选择systemverilog_dpi_grt.tlc从名单上。

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

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

生成的UVM结构

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

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

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

  • Test——这个模块包括UVM环境和序列类。

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

  • 环境——这个模块包括代理和生成的记分牌,还有一个可选的预测器。

  • 记分牌- UVM记分牌是从Simulink记分牌子系统生成的。金宝app记分牌将预期结果与DUT的输出进行比较。

  • 代理——UVM代理包括一个排序器、驱动程序和监控器。如果存在从Simulink序列子系统到Simulink记分板子系统金宝app的直接路径,则包含一个额外的监视器来监视该信号。

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

  • 驱动程序——该模块由Simulink驱动子系统生成,并将每个事务从序列转换为行为DUT能金宝app够理解的信号。

  • Monitor——这个模块是从Simulink监视器子系统生成的,它从行为DUT中采样信号金宝app,并生成发送到UVM记分牌的事务。

  • Monitor Input—如果您有一个预测器或从序列到记分板子系统的直接连接,则生成该模块。监控器输入从序列中采样信号,并生成发送到UVM预测器或记分牌的事务。

  • Predictor——这个模块是从Simulink Predictor子系统生成的。金宝app预测器代表了DUT的黄金模型。它接收来自序列的输入,计算结果,并将结果驱动到计分板,以便与DUT结果进行比较。

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

生成的文件和文件夹结构

当生成UVM组件时,HDL Verifier从您的DUT、序列和记分牌子系统生成SystemVerilog DPI (SV-DPI)组件,如果您的模型包括它们,还可以为驱动器、监视器或预测器子系统生成可选的SV-DPI组件。生成DPI的工件被放置在一个名为uvm_build在你的工作目录中,包括这两个目录:

  • top_model_dpi_components—该目录包含所有生成的DPI组件。

  • top_model_uvm_testbench—包含UVM测试台、生成的DUT和共享库。

在哪里top_model是顶级Simulink模型的名称。金宝app属性可以更改默认目录buildDirectory的财产uvmcodegen.uvmconfig配置对象。

top_model_dpi_components目录包含顶层模型(DUT、序列、记分牌、驱动程序、监视器或预测器)中每个子系统的目录子系统_build.每个目录包括:

  • 子系统_dpi_pkg.sv—包含组件函数声明的SystemVerilog包文件

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

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

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

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

top_model_uvm_testbench目录包含多个子文件夹,用于生成各种UVM组件:

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

  • 司机(可选)—如果指定了驱动程序子系统,则生成此文件夹uvmbuild函数。该文件夹包含UVM驱动程序、SystemVerilog包的副本和共享库文件(dll-file或so-file)司机_build文件夹中。

  • 监控(可选)—如果您指定一个监视子系统到uvmbuild函数。该文件夹包含UVM监视器、SystemVerilog包的副本和共享库文件(dll-file或so-file)监控_build文件夹中。

  • 预测(可选)—如果指定了预测器子系统,则生成此文件夹uvmbuild函数。该文件夹包含UVM预测器、SystemVerilog包的副本、预测器事务和共享库文件(dll-file或so-file)预测_build文件夹中。

  • 记分板—此文件夹包含SystemVerilog软件包的副本和。dll文件记分板_build文件夹中。此文件夹还包括UVM记分板类、记分板配置对象和定义记分板输入事务类型的记分板事务。

  • 序列—此文件夹包含SystemVerilog软件包的副本和。dll文件序列_build文件夹中。这个文件夹还包括UVM排序器、序列类和一个序列事务,该事务定义了从排序器到驱动程序的事务类型。

  • —此文件夹包含了顶级Simulink模型的SystemVerilog包和模块文件。金宝app此文件夹还包含用于执行hdl模拟器的脚本。

  • uvm_artifacts—该文件夹包含这些SystemVerilog文件。

    • mw_DUT_agent.sv—该文件包括一个实例化序列、驱动程序和监视器的UVM代理。

    • mw_DUT_environment.sv-这个文件包括一个UVM环境,实例化一个代理和一个记分牌。

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

    • mw_DUT_monitor_input.sv—该文件包含一个直通UVM监视器。监控器采样信号从司机到记分牌或预测。

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

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

    • mw_DUT_driver.sv—该文件默认包含直通UVM驱动。控件指定驱动程序子系统时uvmbuild函数,该模块包括调度程序和对DPI组件的API调用司机_dpi_pkg.sv

    • mw_DUT_monitor.sv—该文件包含一个直通UVM监视器。监视器从DUT采样信号到记分牌。对象指定监视子系统时uvmbuild函数,该模块包括调度程序和对dpi组件的API调用监控_dpi_pkg.sv

此图像显示了为顶级模型命名的生成的目录结构drv_and_mon_uvmtb

为名为drv_and_mon_uvmtb的顶级模型生成目录结构。展开名为“drv_and_mon_uvmtb_dpi_components”的目录以显示内容,展开名为“drv_and_mon_uvmtb_uvm_testbench”的目录以显示内容。

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

金宝app支持的Simulin金宝appk数据类型转换为SystemVerilog数据类型,如下表所示。

生成的SystemVerilog类型

MATLAB® SystemVerilog
兼容C型 逻辑向量 位向量
uint8 字节无符号 逻辑(7:0) 位(7:0)
uint16 shortint无符号 逻辑15:0 位(15:0)
uint32 int无符号 逻辑(31:0) 位(31:0)
uint64 longint无符号 逻辑(63:0) 位(63:0)
int8 字节 逻辑符号[7:0] 位符号为[7:0]
int16 shortint 逻辑签名[15:0] 位符号[15:0]
int32 int 逻辑签名[31:0] 位符号[31:0]
int64 longint 逻辑符号[63:0] 位符号[63:0]
布尔 字节无符号 逻辑0时 位(0时)
定点

端口被符号扩展为内置的C类型,例如intint无符号字节字节无符号等。

逻辑(n-1:0)

逻辑符号为[n-1:0]

逻辑向量长度(n)等于.符号继承自定点类型。

位(n-1:0)

位符号为[n-1:0]

位向量长度(n)等于.符号继承自定点类型。

shortreal
真正的
复杂的

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

向量,矩阵

您可以选择SystemVerilog数组或标量端口。要在这些选项中进行选择,请在“配置参数”对话框的左窗格中选择代码生成>SystemVerilog DPI,然后选择缩放矩阵和矢量端口参数。

例如,类型的两元素向量uint32在Si金宝appmulink中生成这个SystemVerilog矢量端口:

输入逻辑[31:0]vecInput [0:1]

当你选择缩放矩阵和矢量端口,生成的SystemVerilog包含这两个端口,每个端口的类型都是逻辑(31:0)

输入逻辑[31:0]vecInput_0,输入逻辑[31:0]vecInput_1

在生成矢量和数组端口时,编码器将矩阵按列-主序排列。

nonvirtual总线

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

枚举数据类型 枚举

限制

  • 默认情况下,HDL Verifier将矩阵和向量转换为SystemVerilog中的一维数组。例如,Simulink中的4 × 2矩阵在SystemVeril金宝appog中转换为一维的8个元素数组。如果需要在SystemVerilog接口中生成多个标量端口,请选中缩放矩阵和矢量端口在配置参数中。

  • uvmbuild函数忽略未指定为DUT、序列、记分金宝app牌、驱动程序、监视器或预测器子系统的Simulink组件。

  • 您可以在任何子系统内部使用反馈循环,但不能在子系统之间使用反馈循环。

  • 序列、记分牌和预测子系统必须以单一速率运行,并且它们子系统的基本采样时间必须相等。有关采样时间的详细信息,请参见系统中的采样时间(金宝app模型)

  • 驱动程序、DUT和监视器子系统的基本采样时间必须相等。它们的端口可以是多速率的,但最大公约数(GCD)或基本采样时间必须相同。

  • 序列、记分牌和预测子系统的采样时间必须大于或等于驱动程序、DUT和监视器的基本采样时间。

另请参阅

相关的话题

外部网站