首页 > 其他分享 >2.3.2加入env

2.3.2加入env

时间:2024-05-20 17:18:50浏览次数:20  
标签:加入 driver phase 实例 uvm env 2.3 my

env的作用:

实例化验证平台的各个组件,作为一个容器类,在这个容器里面实例化其他组件,然后再调用run_test时传递的参数就不再是my_driver,而是这个容器类,即让UVM自动创建这个容器类的实例。

所有env都应该派生自uvm_env,且与my_driver一样,容器类在仿真中也一直是存在的,使用uvm_component_utils宏来实现factory的注册。

14:这里使用了一种独特的的实例化方式。只有使用factory机制注册过的类才能使用这种实例化方式;只有使用这种实例化方式的实例,才能使用后文要讲诉的factory机制中最强大的重载功能。验证平台中的组件在实例化时都应该使用type_name::type_id::create的方式。

在drv实例化时,传递了两个参数,一个是名字drv,另一个是this指针,表示env,之前my_driver的new函数如下:

这个new函数有两个参数,第一个是实例的名字,第二个则是parent。由于my_driver在uvm_env中实例化,所以my_driver的父节点(parent)就是my_env。通过parent的形式,UVM建立起了树形的组织结构。在这种树形的组织结构中,由run_test创建的文件是树根(这里是my_env),并且树根的名字是固定的,为uvm_test_top

树根之后会长出枝叶(这里只有my_driver),长出枝叶的过程需要在my_env的build_phase中手动实现。无论是树根还是树叶,都必须由uvm_conponent或者其派生类继承而来。UVM树的结构如图:

在加入my_env之后,整个验证平台有两个build_phase,一个是my_env的,一个是my_driver的。那么这两个bulid_phase按照何种顺序执行?

在UVM的树形结构中,phase的执行顺序是从树根到树叶的顺序,先执行所有的build_phase。当把整棵树的build_phase都执行完成之后,再执行其他的phase。

my_driver在验证平台中的层次结构发生了变化,一下从树根变成了树叶,所以在代码中也需要修改。

首先在top_tb中的run_test的参数修改了,从my_driver改为了my_env,在top_tb中使用config_db机制传递virtual my_if时,要改变相应的路径;

set函数的第二个参数从uvm_test_top变成了uvm_test_top.drv,其中uvm_test_top是UVM自动创建的树根的名字,而drv则是在my_env的build_phase中实例化drv时传递过去的名字。

标签:加入,driver,phase,实例,uvm,env,2.3,my
From: https://www.cnblogs.com/tomako123/p/18202429

相关文章

  • PowerShell脚本,可以用于自动加入或退出域:BAT批处理脚本,可以用于自动加入或退出域:
    PowerShell中创建网页版的自动加入或退出域脚本,您可以使用PowerShellWebAccess(PWA)功能。PWA允许您在Web浏览器中通过安全的HTTPS连接远程运行PowerShell命令,并可与Windows身份验证一起使用。以下是一个示例脚本,可用于创建PWA网页版的自动加入或退出域:powershellCopyCode......
  • [Bash] env
    Commands:export:Setenvironmentvariables.env:Viewenvironmentvariables.echo:Displayenvironmentvariables.CommonEnvironmentVariables:PATH:Directorieswheretheshelllooksforexecutablefiles.HOME:User'shomedirectory.USER:Current......
  • OpenVX代码优化裁减简介
    OpenVX代码优化裁减简介 在OpenVX中,裁减(Reduction)是一种操作,它对数组或图像中的元素执行聚合操作。这里的“裁减”是指将大型数组或图像减少到单一数值的过程。OpenVX提供了几种不同的裁减操作,包括求和(Summation)、平均(Average)、最小值(Minimum)、最大值(Maximum)和累加器(Accumulat......
  • 2.3.1---加入transaction
    transaction概念:可以简单地将transaction理解为一个包,在不同的验证平台中的transaction也不相同。一个简单的transaction如下:在这些代码中,其中dmac是48bit的以太网目的地址,smac是48bit的以太网源地址,ether_type是以太网类型,pload是其携带的数据大小,通过pload_cons约束可以看到......
  • 2.2.4 加入virtual interface
    为了保证验证平台的可移植性,在根本上来说应该杜绝在验证平台中使用绝对路径1.使用宏(这里不提)2.使用interface定义完interface之后,在top_tb中实例化DUT时就可以直接使用:上面是在top_tb中使用interface,那如何在driver中使用interface呢?在类中不能直接使用interface,只有在modu......
  • 《Linux内核完全注释》学习笔记:2.3 Linux系统定时
    在Linux0.11内核中,PC的可编程定时芯片Intel8253被设置成每隔10ms就发出一个时钟中断(IRQ0)信号。这个时间节拍就是系统运行的脉搏,我们称之为1个系统滴答。因此每经过1个滴答就会调用一次时钟中断处理程序(timer_interrupt)。该处理程序主要用来通过jiffies变量来累计自......
  • 2.2.3 加入objection机制
    先分析前面的:上一节中虽然输出了"main_phaseiscalled",但是"dataisdrived"并没有输出。但是既然进入了main_phase,应该会把这一整个任务执行完成才对,但是这里好像在执行的过程中被外力kill掉了?UVM中通过objection来控制验证平台的关闭在上一节中并没有调用finish语句,但是在......
  • nacos2.3.2部署(鲲鹏arm版)
    1.说明  本次编译是因为公司适配鲲鹏arm系列,业务涉及到了nacos-server,所以就选择最新版本进行了编译,期间也想直接使用官方镜像nacos/nacos-server:v2.1.2-slim、nacos/nacos-server:v2.2.0-slim,无一例外失败了,启动不了,所以最后只能选择源码编译,在制作镜像的方式进行。2.编......
  • 2.2.2加入factory机制
    driver代码:这里的factory机制被集成在了一个宏中:uvm_comphonent_utils。这个宏所做的事情非常多,其中之一就是将my_driver登记在UVM内部的一张表中,这张表是factory功能实现的基础。只要在定义一个新的类时使用这个宏,就相当于把这个类注册到了这个表中。在给driver加入这个机制后......
  • Cisco Catalyst Center 2.3.7.5-VA - 网络管理和自动化
    CiscoCatalystCenter2.3.7.5-VA-网络管理和自动化CiscoCatalystCenter-NetworkManagementandAutomation请访问原文链接:CiscoCatalystCenter2.3.7.5-VA-网络管理和自动化,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoCatalystCenter节约时......