码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UVM中uvm_config_db在sequence中的使用


    在UVM中使用get_full_name()可以得到一个component的完整路径,同样的,此函数也可以在一个sequence中被调用,尝试在一个sequence的body中调用此函数,并打印出返回值,其结果大体如下:
    uvm_test_top.env.i_agt.sqr.case0_sequence
    这个路径是由两个部分组成,此sequence的sequencer的路径,即实例化此sequence时传递的名字。

    在sequence中get参数

    //my_case0.sv

    function void my_case0::build_phase(uvm_phase phase);
    ...
      uvm_config_db#(int)::set(this, "env.i_agt.sqr.*", "count", 9);
    ...
    endfunction
    
    • 1
    • 2
    • 3
    • 4
    • 5

    set函数的第二个路径参数里面出现了通配符,这是因为sequence在实例化名字一般是不固定的,而且有时是未知的,所以使用通配符。

    在sequence中以如下方式调用config_db::get函数。
    //my_case0.sv

    class case0_sequence extends uvm_sequence#(my_transaction);
    ...
      virtual task per_body();
        if(uvm_config_db#(int)::get(null, get_full_name(), "count", count)
          `uvm_info("seq0", $sformatf("get count value %0d via config_db", count), UVM_MEDIUM)
        else
          `uvm_error("seq0", "cannot get count value!")
      endtask
    ...
    endclass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在get函数原型中,第一个参数必须是一个component,而sequence不是一个component,所以这里不能使用this指针,只能使用null或uvm_root::get()。前面已经提到过,当使用null是,UVM会自动将其替换为uvm_root:get(),再加上第二个参数get_full_name(), 就可以完整地得到此sequence的路径,从而得到参数。

    在sequence中set参数

    //my_case0.sv

    class drv0_seq extends uvm_sequnece #(my_transaction);
    ...
      virtual task body();
        void'(uvm_config_db#(bit)::get(uvm_root::get(), get_full_name(), "first_start", first_start));
        if(first_start)
          `uvm_info("drv0_seq", "this is the first start of the sequence", UVM_MEDIUM)
        else
          `uvm_info("drv0_seq", "this is not the first start of the sequence", UVM_MEDIUM)
        uvm_config_db#(bit)::set(uvm_root::get(), "uvm_test_top.v_sqr.*", "first_start", 0);
      endtask...
    endclass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    需要注意的是,由于此sequence在virtual sequence中被启动,所以其get_full_name的结果应该是uvm_test_top.v_seq.,而不是uvm_test_top.env0.i_agt.sqr.,所以在设置时,第二个参数应该是前者。

  • 相关阅读:
    Dart(9)-函数
    php实战案例记录(24)不要键名只保留值的算法
    【学习】TensorFlow2环境配置
    java面向对象的三大特性之封装和继承(配视频讲解)
    [技术发展-27]:互联网平台的常见算法与新的治理办法
    SPARKSQL3.0-SessionState构建源码剖析
    使用python setup.py报错:Upload failed (403) / Upload failed (400)
    Spring AI 第二讲 之 Chat Model API 第三节Azure OpenAI Chat
    嵌入式系统,嵌入式系统定义和使用,嵌入式系统和桌面通用系统的区别,嵌入式系统结构组成,嵌入式软件组成
    流畅的Python读书笔记-第九章-符合Python风格的对象
  • 原文地址:https://blog.csdn.net/Michael177/article/details/125473234
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号