14 UVM sequencer

sequencer是在sequence和driver之间建立连接的中介。最终,它将transactions或sequence items传递给driver,以便将其驱动到DUT。

1. uvm_sequencer class hierarchy

uvm_sequencer class declaration:

class uvm_sequencer #( type REQ  = uvm_sequence_item, RSP = REQ ) extends uvm_sequencer_param_base #(REQ, RSP)

建议从参数化基类“uvm_sequencer”扩展用户定义的sequencer,该基类由请求(REQ)和响应(RSP)项类型参数化。response item的用法是可选的。所以,大多数sequencer类是从只有REQ item 的基类扩展而来的。 

class my_sequencer extends uvm_sequencer #(data_item, data_rsp); // with rsp
class my_sequencer extends uvm_sequencer #(data_item);           // without rsp

sequencer和driver使用TLM(事务级建模)接口传递事务。seq_item_export和seq_iem_port TLM连接方法在uvm_sequencer和uvm_driver类中定义。有关详细信息,请参阅sequence-driver-sequencer handshake章节。

class my_sequencer extends uvm_sequencer #(data_item);
  `uvm_component_utils(my_sequencer)

  function new (string name, uvm_component parent);
    super.new(name, parent); 
  endfunction
endclass

2. m_sequencer and p_sequencer in UVM

2.1 m_sequencer

m_sequencer是一个sequence中默认可用的句柄。m_sequencer的type是uvm_sequencer_base.

简单地说,它是运行sequence的sequencer的引用句柄。

要在sequencer上运行sequence,需要调用start()方法。此start()方法需要提供sequencer句柄。

例子:

base_seq.start(env_o.seqr);

这里,m_sequencer是设置为env_o.seqr的base_seq的句柄。 

2.2 p_sequencer

所有序列都有m_sequencer句柄,但它们没有p_sequencer句柄。

p_sequencer不是自动定义。它是使用宏`uvm_declare_p_sequencer(sequencer_name)定义的。

`define uvm_declare_p_sequencer(SEQUENCER) \
  SEQUENCER p_sequencer;\
  virtual function void m_set_p_sequencer();\
    super.m_set_p_sequencer(); \
    if( !$cast(p_sequencer, m_sequencer)) \
      `uvm_fatal("DCLPSQ", $sformatf("%m %s Error casting p_sequencer, please verify that this sequence/sequence item is intended to execute on this type of sequencer",get_full_name())) \
  endfunction

如上所示,定义 p_sequencer宏声明了SEQUENCER类型的p_sequencer句柄,并将m_sequencer句柄强制转换为p_sequencer。

virtual sequencer通常称为p_sequencer。这是为了方便用户。这不是强制性要求。您可以使用env层次结构路径访问virtual_sequencer。

这听起来很令人困惑,但要理解p_sequencer的用法以及它到底是什么。我们将在下一节中理解virtual sequence and virtual sequencer是什么开始。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美国某金融公司遭遇网络攻击,130 万民众受影响

The Record 网站披露,美国最大的产权保险公司富达国民金融(Fidelity National Financial("FNF"))子公司向所在州监管机构报告了一起数据泄露事件,并指出有 1316938 人的数据信息被入侵其母公司的…

ActiveMQ漏洞合集

目录 介绍CVE-2015-5254:Apache ActiveMQ任意代码执行漏洞漏洞介绍 & 环境准备漏洞发现Nuclei❌Vulmap✅漏洞验证漏洞利用 CVE-2016-3088:Apache ActiveMQ Fileserver远程代码执行漏洞漏洞发现Nuclei✅Vulmap✅MSF✅第三方工具1(漏洞探测…

【SAM系列】I-MedSAM: Implicit Medical Image Segmentation with Segment Anything

论文链接:https://arxiv.org/abs/2311.17081 比较有趣的点:frequency adapter

中间件系列 - Redis入门到实战(原理篇)

前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis数据结构Redis网…

若依common模块解读,Java小白入门(四)

● 若依springboot版本后端,有两个核心模块,一个是ruoyi-common,一个是ruoyi-framewok,今天我们来看第一个模块ruoyi-common, 一些基类,工具等框架底座,分别来看其包含哪些基本内容: 1. annotation 注解,…

K8S 全局架构图 —— 筑梦之路

kube-apiserver: Kubernetes API 服务器验证并配置 API 对象的数据, 这些对象包括 pods、services、replicationcontrollers 等。API 服务器为 REST 操作提供服务,并为集群的共享状态提供前端, 所有其他组件都通过该前端进行交互。…

传感器原理与应用复习--电感式传感器

文章目录 上一篇自感式电感传感器差动变压器式传感器电涡流式传感器下一篇 上一篇 传感器原理与应用–传感器基本特性与应变式传感器 自感式电感传感器 将线圈通入电流产生磁场,而间隙的大小将影响磁场的大小,从而进行检测 变气隙式电感传感器&#xf…

ERP系统与智能商品系统在供应链管理上的区别和优势在哪些方面?

ERP系统和智能商品系统在供应链管理方面有以下区别和优势: 范围和综合性:ERP系统涵盖了企业的整个供应链管理过程,包括供应商管理、采购管理、库存管理、生产计划和物流管理等。它可以实现供应链上下游的信息共享和协同,提高供应…

第十一章:实验案例一:软件仓库部署及应用

实验环境 随着某公司内部的Linux服务器不断增多.软件更新.系统升级等需求也逐渐凸显。为了提高软件包管理效率,减少重复下载,公司要求部署一台软件仓库服务器,面向内网提供安装源。 需求描述 1,服务器使…

【日志系列】什么是分布式日志系统?

✔️什么是分布式日志系统? 现在,很多应用都是集群部署的,一次请求会因为负载均衡而被路由到不同的服务器上面,这就导致一个应用的日志会分散在不同的服务器上面。 当我们要向通过日志做数据分析,问题排查的时候&#…

【AI】计算机视觉VIT文章(Transformer)源码解析

论文:Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020 源码的Pytorch版:https://github.com/lucidrains/vit-pytorch 0.前言 …

QT、C++实验室管理系统

一、需求介绍: 题目:基于Qt的实验室管理系统的设计 项目命名以LabSystem姓名拼音首字母(例如: LabSystemwXC) 功能要求: 一,基本必要功能: 1,使用QSQLITE数据库完成数据库的设计。 2,注册功能:包含学生注册&#xff0…

鸿蒙项目二—— 注册和登录

此部分和上篇文章是连续剧 ,如果需要,请查看 一、注册 import http from ohos.net.http; Entry Component struct Reg {// 定义数据:State username: string "";State userpass: string "";State userpass2: string …

【网络技术】【Kali Linux】Wireshark嗅探(一)ping和ICMP

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探,旨在了解ping命令的原理及过程。 二、网络环境设置 本系列实验均使用虚拟机完成,主机操作系统为Windows 11,虚拟化平台选择Oracle VM VirtualBox,组网模式选择“N…

python嵌套异常处理器

1 python嵌套异常处理器 python的异常处理器支持嵌套。 1.1 嵌套的try/except处理器 用法 def f1():raise E def f2():try:f1()except E:pass try:f2() except E:pass描述 嵌套的try/except处理器,发生异常时,控制权会跳回具有相符的except分句、最近…

SAP PP 配置学习(三)

Classification 分类 关联特征值 – (省市联动) 关联特征显示 一个特征是否输入,根据另一个特征来判断。如:只有输入了省份,才需要输入城市。没输省份前,城 市这个特征是不可见的。 修改【城市】特征. 在【城市】特征值中&#xf…

无人职守自动安装linux操作系统

无人职守自动安装linux操作系统 1. 大规模部署案例2. PXE 技术3. Kickstart 技术4. 配置安装服务器4.1 DHCP服务4.2 TFTP 服务4.3 NFS服务 5. 示例5.1 搭建server1. 启动dhcp并设为开机自启2. 设置并启动tftp3. 将客户端所需启动文件复制到TFTP服务器4. 创建Kickstart自动应答文…

C语言操作符逻辑与,逻辑或面试真题(2)

各位少年&#xff1a; 今天给大家分享几个代码示例&#xff0c;希望能帮助能从学习的方面&#xff0c;帮助大家。 #include<stdio.h> int main() { int i0,a0,b2,c3,d4; ia&&b&&d; printf("a%d\n b%d\n c%d\nd%d",a,b,c,d); return 0; } 大…

虚函数的讲解

文章目录 虚函数的声明与定义代码演示基类Person派生类Man派生类Woman 测试代码动态绑定静态绑定访问私有虚函数总结一下通过成员函数指针调用函数的方式 虚函数的声明与定义 虚函数存在于C的类、结构体等中&#xff0c;不能存在于全局函数中&#xff0c;只能作为成员函数存在…