【UVM】phase机制

news2024/12/27 10:34:29

Phase的种类

funcion phase

  • 不消耗仿真时间
  •  八种(图中白色背景)

task phase

  •  消耗仿真时间
  • 一种(图中灰色背景,run_phase又可以细分为十二种

Phase的功能

  • bulid_phase:uvm_component类的实例化,uvm_object实例化可以在任何phase完成;config_db的获取
  • connect_phase:连接
  • reset_phase:对DUT进行复位、初始化等操作
  • configure_phase:进行DUT的配置
  • main_phase:DUT的运行
  • shutdown_phase:做一些与DUT断电相关的操作

Phase的执行顺序

不同phase执行顺序

  • 自上而下,如上图所示
  • run_phase和其12个小的phase并行运行。后者称为动态运行(runtime)的phase
    fork
        begin
            run_phase();
        end
        begin
            pre_reset_phase();
            reset_phase();
            post_reset_phase();
            pre_configure_phase();
            configure_phase();
            post_configure_phase();
            pre_main_phase();
            main_phase();
            post_main_phase();
            pre_shutdown_phase();
            shutdown_phase();
            post_shutdown_phase();
        end
    join

相同phase执行顺序

  • 上表所示的执行顺序指空间概念,即UVM树从根到叶为自上而下
  • build_phase和final_phase,自上而下
  • 其他function_phase,自下而上
  • task_phase,自下而上的启动,同时以fork_join none的形式在同时运行
  • 对于task_phase中的12个小phase,虽然是顺序执行,但每个小phase会在前一个小phase全部执行完后再去执行

同一层次、具有兄弟关系的component

  • 按照字典序执行,即实例化顺序依据new时指定的名字
  • example: agent下的driver与monitor,若monitor在new时指定名字“aaa”,driver指定名字“bbb”,则先执行monitor的build_phase,再执行driver的build_phase

叔侄关系component  

  • 执行顺序为深度优先,即先执行的A下的全部分支执行完成后,再会去执行A的兄弟及其分支
  • example:env下的agent与scoreboard属于同一层次,若agent在new时指定名字“aaa”,scoreboard指定名字“bbb”,则先执行agent的build_phase,然后执行agent下driver及monitor的build_phase,最后再执行scoreboard的build_phase

domain与phase执行顺序关系

  • 同一个domain内的多个component的phase是同步的,起一个phase执行完才能进入下一个phase
  • 位于不同domain内的component的phase是异步的,不用等到不同domain内的componenet的前一个phase执行完就能进入下一个phase

UVM_ERROR停止仿真

  • 在end_of_elaboration_phase 及其之前的phase出现一个或多个UVM_ERROR,就会调用uvm_fatal结束仿真
  • 优点是,将所有类似的问题一次性暴露出来,一次性修复

Phase的跳转

  • 跳转函数:
    phase.jump(xxx_phase::get());
  • 可以作为jump参数的phase:uvm_pre_reset_phase::get()后的所有phase
  • 向前跳转:该phase之前的动态运行的phase
  • 向后跳转:可以到final phase

Phase的调试

  • 命令行参数:
    <sim command> +UVM_PHASE_TRACE

超时退出

  • 代码中设置:
    uvm_top.set_timeout(500ns, 0);
    //第一个参数是要设置的时间,第二个参数表示此设置是否可以被其后的其他set_timeout语句覆盖
  • 命令行中设置:
    <sim command> +UVM_TIMEOUT=<timeout>,<overridable>
    //其中timeout为设置时间,overridable表示是否能被覆盖,其值为YES/NO
  • 默认超时退出时间:
    `define UVM_DEFAULT_TIMEOUT 9200s
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》

《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》 一、引言二、K-5S 电化学传感器模组概述&#xff08;一&#xff09;产品简介&#xff08;二&#xff09;产品特点&#xff08;三&#xff09;产品适用场景 三、电化学传感器原理及优点&#xff08;一&#xf…

【Linux课程学习】:文件第二弹---理解一切皆文件,缓存区

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 Linux学习笔记&#xff1a; https://blog.csdn.net/d…

汽车控制软件下载移动管家手机控车一键启动app

移动管家手机控制汽车系统是一款实现车辆远程智能控制的应用程序‌。通过下载并安装特定的APP&#xff0c;用户可以轻松实现以下功能&#xff1a;‌远程启动与熄火‌&#xff1a;无论身处何地&#xff0c;只要有网络&#xff0c;即可远程启动或熄火车辆&#xff0c;提前预冷或预…

匿名发帖/匿名论坛功能设计与实现(编辑发帖部分)

前言 还是之前的音乐系统&#xff0c;首页一直是没想好写些什么&#xff0c;想写一个基于数据分析筛选的歌曲推荐功能&#xff0c;但是目前技术选型没太有考究等以后再实现吧&#xff0c;昨天突然想到可以把首页设计成前40%页面是歌曲推荐后面接下来就是一段匿名论坛功能&…

微信小程序 城市点击后跳转 并首页显示被点击城市

在微信小程序中&#xff0c;渲染出城市列表后&#xff0c;如何点击城市&#xff0c;就跳转回到首页&#xff0c;并在首页显示所点击的城市呢&#xff1f; 目录 一、定义点击城市的事件 二、首页的处理 首页&#xff1a;点击成都市会跳转到城市列表 城市列表&#xff1a;点击…

DOM,事件监听和VUE入门

四个事件、 JS模块化 VUE入门 Ajax VUE总结

Python学习笔记(5)Python的创建型设计模式

创建型设计模式&#xff08;Creational Design Patterns&#xff09;&#xff0c;主要关注对象的创建机制。这类模式可以使得系统更加独立于如何创建、组合和表示其对象。通过将这些职责分离出来&#xff0c;创建型设计模式有助于提高代码的灵活性和复用性。 本书的范例代码已经…

云备份实战项目

文章目录 前言一、整体项目简介二、服务端环境及功能简介三、 客户端环境及功能简介四、服务端文件管理类的实现1. 获取文件大小&#xff0c;最后一次修改时间&#xff0c;最后一次访问时间&#xff0c;文件名称&#xff0c;以及文件内容的读写等功能2. 判断文件是否存在&#…

Java有关数组的相关问题

Java中的栈和堆的含义 栈 存储局部变量&#xff1a;栈主要用于存储方法中的局部变量&#xff0c;包括基本数据类型&#xff08;int、double、boolean等&#xff09;和对象的引用&#xff08;不包含对象本身&#xff09;。 遵循后进先出原则&#xff1a;当一个方法被调用时&…

使用Dify与BGE-M3搭建RAG(检索增强生成)应用-改进一,使用工作流代替Agnet

文章目录 前言Agent vs 工作流编写工作流 前言 在上一篇中&#xff0c;我们实现了一个基本的基于Dify的RAG的示范。 使用Dify与BGE-M3搭建RAG&#xff08;检索增强生成&#xff09;应用 这个效果确实很差。 我们一起来看看&#xff0c;该怎么改进。 今天我们就尝试一下&…

Python语法基础(四)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 高阶函数之map 高阶函数就是说&#xff0c;A函数作为B函数的参数&#xff0c;B函数就是高阶函数 map&#xff1a;映射 map(func,iterable) 这个是map的基本语法&#xff0c;…

Python毕业设计选题:基于django+vue的智慧社区可视化平台的设计与实现+spider

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 养老机构管理 业主管理 社区安防管理 社区设施管理 车位…

Ubuntu环境中RocketMQ安装教程

参考教程 https://blog.csdn.net/weixin_56219549/article/details/126143231 1、安装JDK&#xff0c;并配置环境变量&#xff08;略&#xff09; 2、下载RocketMQ安装包 RocketMQ下载地址&#xff0c;选择二进制包下载 unzip rocketmq-all-5.0.0-ALPHA-bin-release.zip 使…

【SSM】mybatis的增删改查

目录 代理Dao方式的增删改查 1. 创建项目 $$1. 在sql.xml里增加日志代码以及user的mapper资源。 $$ 2. 在usermapper里引入接口。 $$3. 在测试类中引入以下代码&#xff0c;并修改其中名字。 $$ 4. 实例对象User.java里属性要与表中列严格对应。 2. 查询 1>. 查询所有 …

【C++习题】23.二分查找算法_寻找旋转排序数组中的最小值

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 153. 寻找旋转排序数组中的最小值 题目描述&#xff1a; 解法 暴力解法&#xff1a;O(n) 从前往后找数组中的最小值。 二分算法&#xff1a;O(logn) 先找二段性 因为这…

Linux笔记---进程:进程终止

1. 进程终止概念与分类 进程终止是指一个正在运行的进程结束其执行的操作。以下是一些常见的导致进程终止的情况&#xff1a; 一、正常终止 完成任务当进程完成了它被设计要执行的任务后&#xff0c;就会正常终止。收到特定信号在操作系统中&#xff0c;进程可能会收到来自操作…

立创庐山派 K230 RTSP 推流

立创庐山派使用的是K230芯片&#xff0c;按照教程刷了canmv固件&#xff0c;下载canmv ide&#xff0c;使用嘉楠社区的rtsp和wlan例程&#xff0c;修改成连接wifi以及RTSP推流例程 # Description: This example demonstrates how to stream video and audio to the network us…

Oracle数据恢复—Oracle数据库sysaux文件损坏的数据恢复案例

Oracle数据库故障&分析&#xff1a; 一台Oracle数据库打开报错&#xff0c;报错信息&#xff1a; “system01.dbf需要更多的恢复来保持一致性&#xff0c;数据库无法打开”。管理员联系我们数据恢复中心寻求帮助&#xff0c;并提供了Oracle_Home目录的所有文件。用户方要求…

【kafka04】消息队列与微服务之Kafka 图形工具

Kafka 在 ZooKeeper 里面的存储结构 topic 结构 /brokers/topics/[topic] partition结构 /brokers/topics/[topic]/partitions/[partitionId]/state broker信息 /brokers/ids/[o...N] 控制器 /controller 存储center controller中央控制器所在kafka broker的信息 消费者 /c…

微众银行前端面试题及参考答案

使用的协议是 HTTP 还是 HTTPS&#xff0c;为什么没用 HTTPS&#xff1f; 在前端开发中&#xff0c;有些网站使用 HTTP 协议&#xff0c;有些使用 HTTPS 协议。 使用 HTTP 协议的情况可能是因为网站对安全性的要求不是极高&#xff0c;或者处于开发的早期阶段&#xff0c;还没有…