【sequence进阶 config_db message_2024.03.14】

news2024/11/18 17:44:33

sequence进阶

sequence的仲裁

多个sequence发送给一个sequencer的情况,使用的两种方式:

class virtual_seqence extends uvm_sequence;
	virtual task body();
		sub_sequene seq_0;
		sub_sequene seq_1;
		
		//第一种方式
		p_sequencer.apb_mst_sqr.set_arbitration(SEQ_APB_STRICT_FIFO);
		fork
			`uvm_do_on_pri_with(seq_0,p_sequencer.apb_mst_sqr,100,{seq_0.addr==0;});
			`uvm_do_on_pri_with(seq_1,p_sequencer.apb_mst_sqr,200,{seq_1.addr==1;});
		join
		
		//第二种方式
		p_sequencer.apb_mst_sqr.set_arbitration(SEQ_APB_WEIGHTED);
		fork
			`uvm_do_on_pri_with(seq_0,p_sequencer.apb_mst_sqr,1,{seq_0.addr==0;});
			`uvm_do_on_pri_with(seq_1,p_sequencer.apb_mst_sqr,2,{seq_1.addr==1;});
		join
endclass	

lock & grab

允许sequence获得对sequencer的独占访问权
lock()和unlock():被插入sequencer仲裁队列的最后面
grab()和ungrab():直接被放入sequencer仲裁队列的最前面

response

应用:如AXI乱序操作则需要response
sequence需根据driver对transaction的反应决定接下来发送数据→在sequence中使用get_response,在driver中使用put_reponse
当只有put的情况而没有get情况下,队列中存满8个response时,会发出溢出错误提示
solution:用response_handler,调用函数use_response_handler(1),此值默认是0

sequence library

一个sequence可以加入多个不同的sequence library中;
可以有多个sequence加入同一个sequence library中。

layer sequence

注意端口连接问题
在这里插入图片描述

config_db

使用uvm_config_db配置机制来传递接口,可以将接口的传递与获取彻底分离开

//四个参数,前两个参数决定路径;第一个参数null等于uvm_root::get()
uvm_config_db#(type T)::get( uvm_component  cntxt, string inst_name, string field_name, T value )

uvm_config_db#(type T)::set( uvm_component  cntxt, string inst_name, string field_name, T value )

uvm_config_db#(type T)::exists(uvm_component  cntxt,string  inst_name,string   field_name,bit  spell_chk = )

uvm_config_db#(type T)::wait_modified( uvm_component  cntxt, string inst_name, string field_name)

配置接口

top_tb文件中set interface:
在这里插入图片描述
即可在driver中get该interface:
在这里插入图片描述
若为uvm_test_top.apb_env.* 则env下的component都能get到该interface
若为uvm_test_top.apb_env* 则env下的component,包括env都能get到该interface

配置sequence/ 配置参数

在这里插入图片描述

配置到object:config类

整合需要配置的变量,放置到一个uvm_object中,再使用其在验证环境中传递
在这里插入图片描述
定义test case,将该config实例化并传递给apb_env中所有的component:
在这里插入图片描述
driver中get该cfg,并做类型转化;输出得到config中的值:
在这里插入图片描述
在这里插入图片描述

create和new的区别:create可用factory机制,new不行

得到seqence路径的两种方法

component里的值传到object sequence里:
在这里插入图片描述

多重set/get发送覆盖规则:
	同层次set,后执行覆盖先执行
	非同层次set,高层次覆盖低层次

message

//某个component的冗余度阈值
get_report_verbosity_level()
set_report_verbosity_level()
//把env.i_agt及其下所有的component的冗余度阈值设置为UVM_HIGH
env.i_agt.set_report_verbosity_level_hier(UVM_HIGH);
`define uvm_info(ID,MSG,VERBOSITY)
typedef enum
{
	UVM_NONE=0,
	UVM_LOW=100,
	UVM_MEDIUM=200,//默认,小于等于阈值显示
	UVM_HIGH=300,
	UVM_FULL=400,
	UVM_DEBUG=500
}uvm_verbosity
`define uvm_warning(ID,MSG)
`define uvm_error(ID,MSG)
`define uvm_ fatal(ID,MSG)//会结束仿真

越关键的阈值越小
warning、error、fatal默认UVM_NONE
error和fatal区别:发现一个error继续仿真,fatal直接停止

设置uvm_error计数结束
	//退出阈值为5,0表示此值不可以被后面的设置语句重载
	<sim command>+UVM_MAX_QUIT_COUNT=5,0

message的实现(信息打印到log中)

在monitor中定义打印信息:
在这里插入图片描述
base_test中创建file,读取文件,action并将error放入err_result_file中:
在这里插入图片描述
err_result.log中显示:
在这里插入图片描述

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

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

相关文章

计算机一级word 文字处理理论+实操试题

计算机一级word 文字处理理论实操试题 单选题&#xff1a; 1、在Word编辑状态下&#xff0c;要将另一文档的内容全部添加在当前文档的当前光标处&#xff0c;应选择的操作是依次单击______。 A.“文件”选项卡和“打开”项 B.“文件”选项卡和“新建”项 C.“插入”选项卡…

智能硬件 | XR头显市场只有少数玩家,AI是扭转局面的关键?

苹果头显设备Vision Pro突出2项技术&#xff0c;即“空间计算”和手部、眼部跟踪。“空间计算”使设备能够学习并与物理环境进行交互&#xff1b;手部和眼部跟踪功能通过从设备侧面、前置和底部安装的摄像头收集手部和眼球的感应数据&#xff0c;使用户能够操作虚拟环境并与之交…

QT插件简单使用2

目录 1 总的目录结构 2 主程序 3 插件程序 4 运行结果 相比原来的QT插件简单使用-CSDN博客增加了 QObject *create(const QString &name, const QString &spec) override; 函数的使用和Plugin.json的使用 1 总的目录结构 编译器mingw-64 2 主程序 1 新建一个其他…

和解费用3362万美元,谁来守护跨境卖家的“钱包”

公司向原告支付3362万美元(包括原告方主张的损害赔偿金2500万美元及原告方支付的律师费用862万美元)&#xff1b; 公司不得通过任何方式访问或使用原告的产品或数据&#xff1b; 公司不得向最终用户提供维修帮助服务(属于公司汽车诊断产品中的辅助维 修功能&#xff0c;不影响…

【代码】提取图像轮廓坐标并保存为YOLOv8所需的txt格式

该段代码的应用场景为对图像标注过后&#xff0c;想要对图像进行裁切&#xff0c;但是标签不能裁切&#xff0c;所以将原图像按照标签进行二值化后&#xff0c;将二值化后的图像进行裁切&#xff0c;然后使用opencv对裁切后的图像进行处理&#xff0c;识别出白色区域轮廓&#…

从零开始学习数据结构与算法:Python实现【第139篇—Python实现】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 从零开始学习数据结构与算法&#xff1a;Python实现 数据结构与算法是计算机科学中至关重要…

FDA: 用于语义分割的傅里叶域自适应

论文链接&#xff1a;https://arxiv.org/abs/2004.05498 代码链接&#xff1a;GitHub - YanchaoYang/FDA: Fourier Domain Adaptation for Semantic Segmentation 机构&#xff1a;UCLA 发表于2020CVPR 这篇文章别的地方略读了&#xff0c;主要看看方法&#xff0c;感兴趣自…

基于Spring Boot的四川火锅文化网站的设计与实现

摘 要 四川火锅文化网站的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&…

基于SpringBoot+MYSQL的课程作业管理系统

目录 1、前言介绍 2、主要技术 3、系统流程分析 3.1、操作流程 3.2、添加信息流程 3.3、删除信息流程 4、系统设计 5、数据库设计 6、数据表 6、运行截图(部分) 6.1、管理员功能模块 6.2、教师功能模块 7、源码获取 基于springboot的课程作业管理系统 1、前言介绍 …

代码随想录算法训练营第47天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍 III

动态规划章节理论基础&#xff1a; https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 198.打家劫舍 题目链接&#xff1a;https://leetcode.cn/problems/last-stone-weight-ii/ 思路&#xff1a; 当前房屋偷与…

Vue+OpenLayers7入门到实战:OpenLayers7创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小、文字和按钮等样式

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小、文字和按钮等样式。 二、依赖和使用 "ol": "7.5.2"使用npm安装依赖npm inst…

RP2040 VSCode C/C++开发环境快速部署

RP2040 VSCode C/C开发环境快速部署 &#x1f4cc;安装参考《树莓派(Raspberry Pi) Pico VSCode C/C开发环境配置(无需Visual Studio)》&#x1f4cd;Windows环境下 MSYS2一键式部署pico程序包&#xff0c;下载地址&#xff1a;https://github.com/raspberrypi/pico-setup-wind…

以太坊开发学习-solidity(二)值类型

文章目录 第一个Solidity程序编译并部署代码变量值类型1. 布尔型2. 整型3. 地址类型4. 定长字节数组 第一个Solidity程序 开发工具&#xff1a;remix 本教程中&#xff0c;我会用remix来跑solidity合约。remix是以太坊官方推荐的智能合约开发IDE&#xff08;集成开发环境&#…

Windows系统搭建web网站并结合内网穿透实现公网访问本地站点

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

阿里云服务器选哪个地域比较好?考虑因素4点分享

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

【学习学习】学习金字塔

学习金字塔&#xff08;Cone of Learning&#xff09;&#xff0c;全称学习吸收率金字塔&#xff0c;是一种现代学习方式的理论。网上流传它是美国缅因州的国家训练实验室&#xff08;National Training Laboratories&#xff09;研究成果&#xff0c;用数字形式形象显示了采用…

【机器学习】详细解析Sklearn中的StandardScaler---原理、应用、源码与注意事项

【机器学习】详细解析Sklearn中的StandardScaler—原理、应用、源码与注意事项 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x…

JetBrains全家桶激活,分享PyCharm 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; PyCharm 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

【晴问算法】入门篇—贪心算法—区间选点问题

题目描述 给定n个闭区间&#xff0c;问最少需要确定多少个点&#xff0c;才能使每个闭区间中都至少存在一个点。 输入描述 输出描述 输出一个整数&#xff0c;表示最少需要确定的点的个数。 样例1输入 3 1 4 2 6 5 7输出 2 解释 至少需要两个点&#xff08;例如3和5&#xff…

Windows系统安装GeoServe结合内网穿透实现公网访问本地位置信息服务

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…