0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将sequences类型添加或注册到sequence library里呢?

冬至子 来源:CSDN 作者:谷公子 2023-09-08 15:06 次阅读

uvm_sequence_library是从uvm_sequence扩展而来的,它是一个容纳了一系列其它sequences类型的容器,在启动时,它会根据模式从这系列sequences中选择并执行它们。

如果处于UVM_SEQ_LIB_RAND模式,它的select_rand属性将会随机并作为选择sequences的索引

如果处于UVM_SEQ_LIB_RANDC模式,它的selec_randc属性将会随机并作为索引。

如果处于UVM_SEQ_LIB_ITEM模式,仅生成并执行REQ类型的sequence items。

如果处于UVM_SEQ_LIB_USER模式时,select_sequence()方法用来获取下一个执行sequence的索引,用户可以在子类中overwrite这个方法来实现自定义的选择算法

既然uvm_sequence_library是一系列sequences类型的集合,那么如何将sequences类型添加或注册到sequence library里呢?UVM提供两类方式:全局方式和私有方式。

1. 全局方式

全局方式添加到uvm_sequence_library的sequences类型会被该类的所有实例(instances)选择,也就是所有实例里都会注册了这些sequences类型。与这功能相关的函数和变量有:

image.png

从上述变量和函数可以看出,UVM是利用systemverilog的static机制来实现全局注册方式,sequences类型必须在sequence library被创建之前都注册进去。

需要注意的是,要用这种方式,在创建sequence library的子类时,必须需要在其声明中调用uvm_sequence_library_utils宏,并在其构造函数中调用init_sequence_library()方法。

另外,全局的注册方式也可以使用uvm_add_to_seq_lib(TYPE,LIBTYPE)宏来完成。

2. 私有方式

私有方式添加到uvm_sequence_library的sequences类型会被该类的每个实例(instances)独享,也就是每个实例注册的sequences类型互不影响。与这功能相关的函数和变量有:

image.png

从上述变量和函数可以看出,它们都不是static的,也就是必须要等sequence library创建出实例后,才能注册到实例里,因此每个实例注册的sequences类型可以互不影响了。

3. 总结

这两种方式都有自己的使用场景,如果想让所有sequence library的实例都有的sequence类型,那么使用全局方式会更方便点。

如果想让sequence library的实例想有一些额外的sequence类型,那么私有方式是最好的选择。下图总结了注册的两种方式以及涉及到的相关变量和函数。

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19125
  • sequence
    +关注

    关注

    0

    文章

    23

    浏览量

    2829
收藏 人收藏

    评论

    相关推荐

    如何将SCOUT的工程关联STEP7中?

    如何将SCOUT的工程关联STEP7中,就是SCOUT添加了一个伺服的设置,然后如何关联STEP7中,可以在STEP7中打开SCOUT 的文件
    发表于 01-09 13:16

    急急急,如何将modbus library加载到lv的express vis中

    大家都知道lv有专业的modbus library用来做基于modbus协议的通信,但是有谁知道如何将modbus library加载到lv的express vis中的么,就是说我可以在
    发表于 11-14 09:52

    如何将不同数据类型的数据批量读写到ini文件

    如何将不同数据类型的数据批量读写到ini文件
    发表于 05-20 10:30

    如何将两个多个相同类型的记录写入动态NFC标签?

    HI, 如何将两个多个相同类型的记录写入动态NFC标签?例如,如果我想写WriteEmail,SMS,URI任何此类数据,我可以将其调用两次吗? 喜欢 TT4_WriteVcar
    发表于 08-09 10:43

    简单的LED如何将添加进去 ?

    看到了历程中都有库函数的例子 但不知道如何从无有还想请教各位 从最简单的LED 如何将添加进去 ?
    发表于 08-20 06:45

    如何将gdb移植嵌入式板子上单独运行

    如何在Linux下去调试C++执行程序如何将gdb移植嵌入式板子上单独运行
    发表于 12-24 06:57

    请问一下在UVM中的UVMsequences是什么意思啊

    uvm_object基类扩展得到。UVM sequences不是在仿真的开始,而是在仿真的过程中生成并分配内存的,也没有类似uvm_component的层次结构。随着仿真的进行,创建一个多个UVM
    发表于 04-11 16:43

    如何配置sequence的仲裁算法和优先级及中断sequence的执行

    01 Arbitrary在UVM中,多个sequence可以同时被绑定相同的sequencer并启动。这种测试场景在实际中是存在的,比如在模拟同一个总线master口上的不同类型的数据流时,可以
    发表于 09-23 14:35

    如何将RAFL添加到我的项目的适当示例和/文档?

    我无法找到有关如何将 RAFL 添加到我的项目的适当示例和/文档。查看 RFAL 中的 rfal.chm 文件有一个示例,但它对我不起作用?当我查看 X-CUBE-NFC5.chm 时,应该有 4
    发表于 01-10 06:02

    如何将FPGA的数据导入dsp板子去呢?

    如何将FPGA的数据导入dsp板子去呢?有哪位大神可以指教一下吗
    发表于 03-21 14:47

    UVM中seq.start()和default_sequence执行顺序

    override它,在里面添加各自的功能。各自举个例子吧。  对于uvm_common_phase类型的uvm_run_phase类,它在exec_task(xxx)会调用对应uv
    发表于 04-04 17:15

    如何将ADI公司的Spice模型导入Multisim仿真软件

    请问如何将ADI公司的Spice模型导入Multisim仿真软件? 当我导入时为什么找不到该文件
    发表于 11-17 06:20

    如何将TDM业务添加到WiMAX平台上

    如何将TDM业务添加到WiMAX平台上 对于今天的运营商来说,“接入”是一个热门词汇。尽管传统接入链路依然是主要的收入来源,但它同时也成为限制
    发表于 10-20 21:29 704次阅读

    如何将Crosswalk添加到Cordova应用程序中

    英特尔开源技术中心的Bob Spencer解释了如何将Crosswalk添加到Cordova应用程序中,以提供具有世界级性能的可预测运行时。
    的头像 发表于 11-07 06:37 2279次阅读

    如何将Klayout Cell动态导入Lumerical Multiphysics

    在本例中,演示了如何将KLayout Library Cell动态导入 Lumerical 以执行设计扫描和表征。该功能支持动态导入Lumerical FDTD、MODE以及Multiphysics的所有工具,包括CHARGE
    的头像 发表于 01-22 14:27 611次阅读
    <b class='flag-5'>如何将</b>Klayout Cell动态导入Lumerical Multiphysics