UVM组件发电概述
UVM组件发电概述
如果你有一个金宝app®编码器™许可证,您可以生成一个普遍的验证方法(UVM)试验台和附加组件从一个仿真软件模型。金宝app生成UVM组件可以直接从您的仿真软件环境过渡到UVM框架。金宝app
高密度脂蛋白校验™出口仿真软件子系统内部生成金宝app的C代码UVM组件直接编程接口(DPI)。你可以将这些生成的组件集成到您的现有UVM环境。您还可以使用生成的UVM试验台测试的高密度脂蛋白DUT取代生成的行为DUT详细的HDL设计。
准备UVM组件生金宝app成仿真软件模型
仿真软件模金宝app型必须包括这些子系统。
DUT子系统。这个子系统生成一个SystemVerilog DPI (SVDPI) DUT的行为模型。关于SystemVerilog DPI代的更多信息,请参阅DPI组件生成与仿真软件金宝app。
一个序列子系统。这个子系统产生刺激和推动DUT。
一个记分牌子系统。这个子系统收集和检查DUT的输出。
序列还可以直接驱动信号记分牌,见红图仿真软件模型结构。金宝app
有关如何创建一个子系统,明白了创建子系统(金宝app模型)。
需要仿真软件模型结金宝app构
除了前面的结构,您可以选择包含这些模块或子系统。
一个司机子系统
监控子系统
预测子系统
一个序列的反馈块(或是几部)
请注意
所有的子系统仿真软件模型必须以字母开头的名字和使用字母金宝app数字字符和下划线。
当添加一个监视器,司机,或预测子系统,该特性支持这些配置。金宝app
所有信号的序列必须连接到司机,预测或计分板。其他UVM生成输出信号将被忽略。
如果您的模型包括一个司机子系统,那么所有的信号必须连接到DUT的司机。
如果你的模型包括一个司机子系统,那么所有输入信号驱动程序必须起源于序列。
如果您的模型包括一个监控子系统,那么所有的信号必须连接到DUT的班长。
如果您的模型包括一个监控子系统,那么所有信号的监测必须在记分板连接。
如果你的模型包括预测子系统,那么所有输入信号预测必须起源于序列。额外的输入是无视UVM代。
如果您的模型包括预测子系统,那么所有输出信号的预测必须在记分板连接。额外的输出被忽略UVM代。
如果你的模型包括一个序列的反馈块,那么它的输入必须在记分板从子系统,子系统及其输出必须连接到序列。
这张图片显示了一个仿真软件模型,包括一金宝app个司机,一个监视器,和预测子系统,以及序列的反馈块。
扩大模型的模型结构金宝app
选择系统目标
因为UVM代利用技术生成SystemVerilog DPI,您必须先选择一个支持系统目标文件。金宝app打开配置参数对话框,并选择代码生成从左边窗格。为系统目标文件,点击浏览,然后选择systemverilog_dpi_grt.tlc
从列表中。
另外,如果你有嵌入式编码器®产品,您可以选择目标systemverilog_dpi_ert.tlc
。这个目标使您能够访问额外的代码生成选项当您选择代码生成左窗格的配置参数对话框。
UVM代的例子,请参阅从模型生成参数化UVM试验台金宝app。
生成UVM结构
使用uvmbuild
函数来生成这个UVM组件的结构。
这个模块实例化一个行为DUT生成和测试环境。高层模块时钟和复位信号传播到设计。
DUT -行为design-under-test从模型生成模块DUT子系统。金宝app
测试这个模块包括UVM环境和序列类。
序列——这UVM对象定义了一组事务。模型序列的序列对象生成子系统。金宝app
环境——这个模块包括代理和生成的记分板,并选择性地预测。
记分板——UVM记分板从模型生成记分牌子系统。金宝app记分板与DUT的输出比较预期的结果。
代理——UVM代理包括音序器,司机,和监控。如果直接从模型序列路径子系统仿真软件记分牌子系统,包括额外的监测监金宝app控信号。
音序器这个模块控制序列流DUT事务。
司机这个模块从模型生成驱动子系统和转换每个事务的行为DUT理解序列信号。金宝app如果你不包括司机金宝app子系统仿真软件模块,司机是一个直通UVM司机。
监控这个模块从模型生成监控子系统和从行为样本信号发送到DUT并生成事务UVM记分牌。金宝app如果你的仿真软件金宝app模块不包含监控子系统,监视器是一个直通UVM监视器。
监控输入这个模块生成的如果你有一个预测或直接连接序列的记分牌子系统。监控输入样本序列的信号并生成事务发送到UVM预测或记分牌。
从你的模型预测这个模块生成预测子系统。金宝app预测是一个黄金DUT的模型。它接收的输入序列,计算结果,并驱动结果对DUT的记分板比较结果。
关于UVM组件和结构的更多信息,参见UVM参考指南。
生成的文件和文件夹结构
当生成UVM组件,高密度脂蛋白验证器生成SystemVerilog DPI (SV-DPI)组件从DUT序列,和记分板子系统,以及可选的SV-DPI组件司机,显示器或如果你的模型包括他们预测子系统。DPI生成的工件放置在一个目录命名uvm_build
在您的工作目录,包括这两个目录:
——这个目录包含所有生成的DPI组件。top_model
_dpi_components
这个目录包括UVM testbench,生成的DUT,共享库。top_model
_uvm_testbench
在哪里
是你的名字顶层仿真软件模型。金宝app你可以改变通过设置默认目录top_model
buildDirectory
财产的uvmcodegen.uvmconfig
配置对象。
的
目录包含目录的每一个子系统在模型顶部(DUT、序列、记分牌、司机、监控或预测)命名top_model
_dpi_components
。每个目录包括:子系统
_build
——SystemVerilog包文件和函数声明组件子系统
_dpi_pkg.sv
——生成SystemVerilog组件子系统
_dpi.svDPI组件和扩展. c和. h头文件
元数据和信息文件扩展.mat .dmr, .tmw, . def . txt
编译组件的makefile . o和所以的文件
的
目录包括几个UVM生成的各种组件的子文件夹:top_model
_uvm_testbench
DPI_dut
这个文件夹包含一份SystemVerilog包,模块文件,和一个. dll文件
文件夹中。dut
_build司机
(可选)——这个文件夹是如果你指定一个司机子系统生成的uvmbuild
函数。这个文件夹包含一个UVM司机,一份SystemVerilog包,和一个共享库文件(dll文件或文件)
文件夹中。司机
_build监控
(可选)——这个文件夹生成如果你指定的监控子系统uvmbuild
函数。这个文件夹包含UVM监视器,一份SystemVerilog包,和一个共享库文件(dll文件或文件)
文件夹中。监控
_build预测
(可选)——这个文件夹是如果你指定一个预测子系统生成的uvmbuild
函数。这个文件夹包含UVM预测,一份SystemVerilog方案,预测交易和共享库文件(dll文件或文件)
文件夹中。预测
_build记分板
这个文件夹包含一份SystemVerilog包和一个. dll文件
文件夹中。这个文件夹还包括UVM记分板类,记分板配置对象,记分牌事务定义了记分板的输入事务类型。记分板
_build序列
这个文件夹包含一份SystemVerilog包和一个. dll文件
文件夹中。这个文件夹还包括UVM音序器,序列类,和一系列事务定义了事务类型音序器的司机。序列
_build前
这个文件夹包含SystemVerilog包和模块文件顶部仿真软件模型。金宝app这个文件夹还包含HDL-simulator执行的脚本。uvm_artifacts
这个文件夹包含这些SystemVerilog文件。mw_
,这个文件包含一个UVM代理实例化序列,司机,和监控。DUT
_agent.svmw_
——这个文件包括UVM环境中,实例化一个代理和一个记分牌。DUT
_environment.svmw_
这个文件定义了DUT SystemVerilog接口类型。它包含DUT的输入和输出,以及港口时钟,重置,clock-enable信号。DUT
_if.svmw_
,这个文件包含一个直通UVM监视器。监测样本信号从司机记分板或预测。DUT
_monitor_input.svmw_
,这个文件包含一个UVM测试,实例化一个环境和序列。测试模块通过调用启动事务DUT
_test.svseq.start
。mw_dpi_types_pkg.sv
——这个文件包含的定义生成SystemVerilog类型,如枚举
和结构体
,由UVM组件接口暴露。只有UVM组件使用这些类型导入这个包。mw_
,这个文件包含一个直通UVM默认驱动程序。当指定的司机子系统DUT
_driver.svuvmbuild
功能,该模块包括一个调度器和DPI的API调用组件
。司机
_dpi_pkg.svmw_
,这个文件包含一个直通UVM监视器。监测样本信号DUT的记分牌。当指定的监控子系统DUT
_monitor.svuvmbuild
功能,该模块包括一个调度器和DPI-component API调用
。监控
_dpi_pkg.sv
这张图片显示生成的目录结构顶层模型命名drv_and_mon_uvmtb
。
金宝app支持金宝app数据类型
金宝app支持模型的数据类型转金宝app换为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类型,如 |
逻辑向量长度( |
位向量的长度( |
单 |
shortreal |
||
双 |
真正的 |
||
复杂的 |
你可以选择一个SystemVerilog之间 |
||
向量,矩阵 | 你可以选择SystemVerilog数组或标量港口之间。这些选项之间选择,左窗格中的配置参数对话框中,选择代码生成>SystemVerilog DPI,然后选择Scalarize矩阵和向量的港口参数。 例如,一个双元素向量类型的 输入逻辑[31:0]vecInput (0:1) 当您选择Scalarize矩阵和向量的港口,生成的SystemVerilog包括这两个端口,每个类型 输入逻辑31:0 vecInput_0,输入逻辑31:0 vecInput_1 在生成向量和阵列端口时,编码器平缓矩阵列为主的顺序。 |
||
nonvirtual总线 | 你可以选择一个SystemVerilog之间 |
||
枚举数据类型 | 枚举 |
限制
默认情况下,高密度脂蛋白校验矩阵和向量转换为一维数组SystemVerilog。例如,一个4×2的矩阵矩阵模型转化为一维SystemVerilo金宝appg八个元素的数组。生成多个标量港口SystemVerilog界面,选择Scalarize矩阵和向量的港口的配置参数。
的
uvmbuild
未指定函数忽略了仿真软件组件DUT金宝app,序列,记分板,司机,监视器,或者预测子系统。您可以使用反馈回路内的任何子系统。您还可以创建反馈音序器的记分板使用序列的反馈块。其他子系统之间的反馈循环是不允许的。
序列、记分牌和预测子系统必须运行在一个单一税率,和子系统的基本示例倍必须相等。样品倍更多信息,请参阅样品在系统(金宝app模型)。
司机的基本样例次,DUT,监控子系统必须相等。可以多重速率的端口,但最大公约数(GCD)或基本样本时间必须相同。
记分板的样本时间序列,预测子系统必须大于或等于基本样本的司机,DUT,班长。