UVM
文章平均质量分 89
SD.ZHAI
好好学习,天天向上
展开
-
UVM——基础类结构图(uvm树、常用继承关系结构)
文章目录验证平台的作用就是找出待测设计(DUT,Design Under Test)中的bug,通常将DUT放到一个验证平台中来实现此过程component与object是UVM中最基本的两个概念。uvm_object是UVM中最基本的类,几乎全部的类都是由uvrn_obje口类派生出来,其中包含uvm_component.uvm_component有两大特性是uvm__obje...原创 2020-05-14 21:04:49 · 13398 阅读 · 0 评论 -
UVM——工厂(factory)机制和phase机制
文章目录一、factory工厂机制1.1. 登记注册1.2. 实例化对象1.3. 覆盖override1.4. 检查覆盖是否完成—factory.print()二、phase机制2.1. phase机制组成2.2. phase执行顺序一、factory工厂机制 在UVM中使用工厂模式基本上分为三个步骤。 1) Registration——登记; 2) Construction——...原创 2020-05-03 23:20:04 · 6526 阅读 · 2 评论 -
UVM——配置机制uvm_config_db(接口传递、对象传递、调试)
文章目录一、工厂机制factory二、组件配置机制uvm_config_db2.1.配置组件的DUT接口方式一、工厂机制factory二、组件配置机制uvm_config_db2.1.配置组件的DUT接口方式...原创 2020-04-24 14:31:35 · 22817 阅读 · 5 评论 -
UVM——sequence机制(数据激励的产生、配置方式)
文章目录一、激励的生成方式二、配置sequence方式一、激励的生成方式uvm_sequence继承自uvm_sequence_item;uvm_sequence_item:只能对数据进行封装,不存在自动执行的函数,uvm_sequence:具有可自动执行的函数,可通过body()函数进行可执行操作,产生数据激励。二、配置sequence方式...原创 2020-04-26 22:28:22 · 15842 阅读 · 2 评论 -
UVM——数据建模的相关问题(内置函数权限管理、消息管理、参数化param)
文章目录一、内置函数的使用二、`uvm_field_*宏定义使用三、override机制一、内置函数的使用二、`uvm_field_*宏定义使用三、override机制原创 2020-04-27 17:35:13 · 1126 阅读 · 1 评论 -
UVM——TLM通信机制(port、export、imp + analysis_port)
文章目录TLM(transaction level modeling)是一个基于事务(transaction)的通信方式,通常在高抽象级的语言中被引用作为模块之间的通讯方式,例如SystemC或者UVM。...原创 2020-04-26 00:40:41 · 23548 阅读 · 6 评论 -
UVM——同步通信元件(uvm_event、uvm_barrier)
文章目录一、uvm_event用法二、uvm_barrier用法 SV中用来做线程间同步的几种方法,它们分别是semaphore、event和mailbox。 UVM中,同步不再只局限于同一个对象中的各个线程,而是还有各个组件之间的同步问题。一旦发生同步的要求发生在各个组件之间,这就要求组件之间通过某种可以同步的方法来实现。而考虑到UVM各个组件的封闭性原则,我们并不推荐通过层次索引的形式...原创 2020-04-26 16:25:43 · 3737 阅读 · 0 评论 -
UVM——虚序列器与虚序列(virtual sequencer与virtual sequence)
文章目录一、virtual sequence与virtual sequencer二、virtual sequence and sequencer的产生2.1.嵌入序列器2.2.嵌入序列,控制序列2.3.在环境中连接sequencer到virtual sequencer三、实例应用 对于顶层的测试环境,测试序列所要协调的不再只是面向一个sequencer的sequence群,而是要面向多个se...原创 2020-05-04 22:30:35 · 10153 阅读 · 4 评论 -
UVM——Callback机制(作用、使用步骤实例)
文章目录一、Callback机制的作用二、回调函数callback的使用步骤:三、代码code应用实例3.1. 在组件中的主操作函数或任务之前或者之后嵌入Callback函数3.2.声明一个UVM callback空壳类3.3.编写Callback函数具体实现方法(如:错误注入)3.4.在测试案例中创建并登记callback的实例(对象)四、Callback调试方法一、Callback机制的作用...原创 2020-04-25 16:42:11 · 13441 阅读 · 15 评论 -
UVM——Sequence Libirary的运用(sequence的添加、控制执行)
文章目录一、一、原创 2021-08-14 22:36:37 · 3599 阅读 · 0 评论 -
UVM——RAL模型基础之一(相关层次、设计流程)
文章目录一、RAL设计流程二、RAL模型层次相关类三、RAL模型设计实现3.1.利用RAL generator(ralgen)将寄存器描述性文档生成UVM寄存器模型3.1.1.创建寄存器模型类(ralgen自动生成)3.1.2.将寄存器放入register block容器中,并加入到对应的Address Map3.2.创建RAL适配器(adapter)3.3.验证环境中实例化RAL模型并建立连接3...原创 2020-05-02 21:15:37 · 13437 阅读 · 7 评论 -
UVM——RAL模型运用之二(前/后门访问、寄存器值跟踪方式)
文章目录一、两种寄存器访问方式1.1.前门访问1.2. 后门访问1.2.1.访问前的地址映射1.2.2.后门访问1.3.前/后门访问的比较二、两种跟踪寄存器值的方法——prediction2.1.自动预测(auto prediction)2.2.显式预测一、两种寄存器访问方式 利用寄存器模型可以更方便的对寄存器进行操作。两种访问寄存器的方式是前门访问(front-door)和后门访问(bac...原创 2020-05-10 11:45:45 · 6136 阅读 · 0 评论 -
UVM——RAL模型运用之三(uvm_reg的访问方法介绍)
文章目录一、寄存器的访问方法汇总二、以前门访问方式对方法进行说明2.1. uvm_reg_field的属性成员介绍2.2. configure()配置uvm_reg_field2.3. 方法——reset()/get()/set()/randomize()—操作期望值2.4. 方法——write()—写入DUT2.5. 方法——read()—读出DUT2.6. 方法——update()—写入DUT...原创 2020-05-04 21:38:08 · 2749 阅读 · 0 评论 -
UVM——RAL模型运用之四(使用ralgen生成regmodel方法、部分枚举变量“_e“含义)
文章目录一、生成RAL model命令一、生成RAL model命令 生成RAL model命令: ralgen [options] -t topname -I dir -uvm {filename.ralf}。ralgen是vcs工具的命令,输入对象是*.ralf文件,生成*.sv文件,即RAL mode就是橘红色框图。ralf文件可以通过excel表格生成。-uvm...原创 2020-05-05 19:51:26 · 8803 阅读 · 8 评论 -
UVM——部分继承组件源码
文章目录1.uvm_driver2.uvm_monitor3.uvm_agent4.uvm_scoreboard5.uvm_subscriber(coverage)6.uvm_env7.uvm_test 这些组件源码,除了uvm_driver、uvm_agent、uvm_subscriber中增补定义了部分变量,以提高代码的可重用性之外,其余组件源码的内容基本一致,不存在太大变化。1.uvm_driver uvm_driver中实例化了seq_item_port端口;2.uvm_monito原创 2020-06-13 18:20:38 · 888 阅读 · 1 评论 -
UVM——架构组件代码实例(一、基础)
文章目录1.packet.sv(数据包)2.packet_sequence.sv(生产数据)3.driver.sv(驱动数据)4.input_agent.sv(代理)5.router_env.sv(环境层)6.test_base.sv(测试用例)7.test.sv(顶层主代码)8.Makefile(make编译)9.打印结果1.packet.sv(数据包) 在注册数据包后,声明随机变量、同时可添加约束,也可对进行变量权限管理;`ifndef PACKET_SV`define PACKET_SV原创 2020-06-20 17:27:06 · 1897 阅读 · 0 评论 -
UVM——架构组件代码实例(二、基础、factory数据包覆盖)
文章目录1.packet.sv(数据包)2.packet_da_3.sv(添加约束包)3.packet_sequence.sv(生产数据)4.driver.sv(驱动数据)5.input_agent.sv(代理)6.router_env.sv(环境)7.test_collection.sv(测试用例,覆盖+增补)8.test.sv(主代码)9.Makefile(make编译)10.打印结果 实例二相对于实例一有以下变化:实例二在env中采用了default_sequence的方式启动sequence原创 2020-06-20 17:23:05 · 1133 阅读 · 1 评论 -
UVM——架构组件代码实例(三、基础、配置sequence中变量)
文章目录1.packet.sv(数据包)2.packet_da_3.sv(添加约束包)3.packet_sequence.sv(生产数据、声明配置变量)4.reset_sequence.sv(可通过factory实现覆盖)5.driver.sv(驱动数据)6. input_agent.sv(代理)7.reset_agent.sv(例化reset_sequencer,引入reset_sequence)8.router_env.sv(环境,启动sequence生产数据)9.test_collection.sv(原创 2020-06-20 17:23:19 · 843 阅读 · 0 评论 -
UVM——架构组件代码实例(四、进阶、config_db配置接口/变量)
文章目录1.router_io.sv(接口)1.packet.sv(数据包)2.packet_da_3.sv(添加约束包)3.packet_sequence.sv(生产数据)4.reset_sequence.sv(生产数据、不同数据包)5.driver.sv(按router_io协议驱动)6.input_agent.sv(代理封装、虚接口配置)7.reset_agent.sv(重置seqr、drv、mon,接口配置)8.router_env.sv(环境,连接子组件,启动sequence)9.test_col原创 2020-06-20 17:30:20 · 880 阅读 · 0 评论 -
UVM——架构组件代码实例(五、进阶、TLM分析端口连接/scoreboard组件)
文章目录1.router_io.sv(接口文件)2.packet.sv(数据包)3.packet_da_3.sv(数据约束包)4.packet_sequence.sv(生产数据,添加落下objection后的绝对延迟时间)5.reset_sequence.sv(重置sequence,使用不同的数据包)6.driver.sv(按照router协议驱动数据)7.iMonitor.sv(采集激励数据)8.oMonitor.sv(采集响应数据)9.input_agent_sv(封装seqr、drv、mon,并实例化原创 2020-06-20 17:23:50 · 1322 阅读 · 0 评论 -
UVM——架构组件代码实例(六、高级、sequence library的运用)
文章目录1.packet.sv2.packet_da_3.sv3.packet_seq_lib_pkg.sv(基于packet包的sequence库(空的库))4.packet_sequence.sv5.reset_sequence.sv6.driver.sv7.iMonitor.sv(采集激励数据)8.oMonitor.sv(采集响应数据)9.input_agent_sv(封装seqr、drv、mon,并实例化连接)10.output_agent.sv(封装mon、并实例化连接)11.reset_agen原创 2020-06-20 17:22:43 · 1301 阅读 · 1 评论 -
UVM——架构组件代码实例(七、高级、RAL模型运用)
文章目录2.packet.sv3. packet_da_3.sv(数据约束包)4.packet_seq_lib_pkg.sv(基于packet包的sequence库(空的库))5.packet_sequence.sv(生产数据,导入packet_seq_lib库)6.reset_sequence.sv(重置sequence,使用不同的数据包)7.driver.sv(按照router协议驱动数据)8.iMonitor.sv(采集激励数据)9.oMonitor.sv(采集响应数据)10.input_agent_原创 2020-06-20 17:24:40 · 1340 阅读 · 0 评论