news 2026/3/27 22:57:12

10-1 tlm2:temporal decoupling(时间解耦) UVM-TLM2 读-改-写最小验证环境概述0

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10-1 tlm2:temporal decoupling(时间解耦) UVM-TLM2 读-改-写最小验证环境概述0

文章目录

  • 原始代码及log
  • 📌 UVM-TLM1最小可运行示例:APB读-改-写流程概述
    • 🧩 核心组件与角色定位
    • 🧠 代码级深度解析
      • 1. APB事务对象:`apb_rw.sv`(封装操作细节)
      • 2. TLM发起方:`initiator.sv`(发起读改写)
      • 3. TLM目标方:`target.sv`(响应读写请求)
      • 4. 测试环境:`tb_env.sv`(组件连接)
    • 🚀 执行流程与数据变化
      • 序列图展示
      • 步骤说明
    • 🔑 关键概念速览
    • ⚠️ 潜在问题与改进建议
    • 📝 课后思考与答案
    • 🌟 IC验证场景扩展:集成寄存器模型
      • 1. 寄存器类与寄存器块
      • 2. APB→寄存器适配器
      • 3. 环境中集成寄存器模型
      • 4. 测试用例:前门访问寄存器
    • ✅ 总结

原始代码及log

classapb_rwextends uvm_sequence_item;typedefenum{READ,WRITE}kind_e;rand bit[31:0]addr;rand logic[31:0]data;rand kind_e kind;`uvm_object_utils_begin(apb_rw)`uvm_field_int(addr,UVM_ALL_ON|UVM_NOPACK);`uvm_field_int(data,UVM_ALL_ON|UVM_NOPACK);`uvm_field_enum(kind_e,kind,UVM_ALL_ON|UVM_NOPACK);`uvm_object_utils_end functionnew(string name="apb_rw");super.new(name);endfunction function stringconvert2string();return$sformatf("kind=%s addr=%0h data=%0h",kind,addr,data);endfunction endclass:apb_rwclassinitiatorextends uvm_component;uvm_tlm_b_initiator_socket#(apb_rw)sock;`uvm_component_utils(initiator)functionnew(string name="initiator",uvm_component parent=null);super.new(name,parent);sock=new("sock",this);endfunction//// Execute a simple read-modify-write//virtualtaskrun_phase(uvm_phase phase);apb_rw rw;uvm_tlm_time delay=new;phase.raise_objection(this);rw=apb_rw::type_id::create("rw",,get_full_name());rw.kind=apb_rw::READ;rw.addr=32'h0000_FF00;sock.b_transport(rw,delay);// Ok to reuse the same RW instancerw.kind=apb_rw::WRITE;rw.data=~rw.data;sock.b_transport(rw,delay);phase.drop_objection(this);endtask endclassclasstargetextends uvm_component;local bit[31:0]m_data;uvm_tlm_b_target_socket #(target,apb_rw)sock;`uvm_component_utils(target)functionnew(string name="target",uvm_component parent=null);super.new(name,parent);sock=new("sock",this);m_data=32'hDEADBEEF;endfunction taskb_transport(apb_rw rw,uvm_tlm_time delay);case(rw.addr)32'h0000_FF00:beginif(rw.kind==apb_rw::READ)rw.data=m_data;elsem_data=rw.data;end endcase #5;endtask functionvoidstart_of_simulation_phase(uvm_phase phase);`uvm_info("TRGT/RPT/START",$sformatf("m_data: 'h%h",m_data),UVM_NONE)endfunction functionvoidreport_phase(uvm_phase phase);`uvm_info("TRGT/RPT/FINAL",$sformatf("m_data: 'h%h",m_data),UVM_NONE)endfunction endclassclasstb_envextends uvm_component;`uvm_component_utils(tb_env)initiator master;target slave;functionnew(string name="tb_env",uvm_component parent=null);super.new(name,parent);endfunction functionvoidbuild_phase(uvm_phase phase);master=initiator::type_id::create("master",this);slave=target::type_id::create("slave",this);endfunction functionvoidconnect_phase(uvm_phase phase);master.sock.connect(slave.sock);endfunction endclass import uvm_pkg::*;`include"uvm_macros.svh"`include"apb_rw.sv"`include"initiator.sv"`include"target.sv"`include"tb_env.sv"program tb_run;initial beginstatictb_env env=new("env");run_test();end endprogram----------------------------------------------------------------**
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 8:29:27

CAJ转PDF终极指南:从零开始快速掌握转换技巧

CAJ转PDF终极指南:从零开始快速掌握转换技巧 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/3/12 21:55:13

如何快速实现CAJ转PDF:新手完整操作指南

如何快速实现CAJ转PDF:新手完整操作指南 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/gh_mirrors/ca/c…

作者头像 李华
网站建设 2026/3/20 4:36:00

WarcraftHelper终极指南:如何让经典魔兽在现代系统流畅运行

WarcraftHelper终极指南:如何让经典魔兽在现代系统流畅运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在新系统…

作者头像 李华
网站建设 2026/3/16 2:25:24

COB封装LED灯珠品牌可靠性测试方法操作指南

如何用科学测试“拷问”COB灯珠?揭秘真正靠谱的LED品牌筛选法你有没有遇到过这样的情况:采购了一批看起来亮度高、价格便宜的COB LED灯珠,装进灯具后刚开始效果惊艳,可半年不到就出现光衰严重、色温漂移甚至局部死灯?更…

作者头像 李华
网站建设 2026/3/26 23:21:39

CyberEngineTweaks模组工具终极完整指南:从安装到精通

CyberEngineTweaks模组工具终极完整指南:从安装到精通 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks CyberEngineTweaks是《赛博朋克2077》最强…

作者头像 李华
网站建设 2026/3/27 17:39:19

远程办公好搭档:通过anything-llm共享团队知识资产

远程办公好搭档:通过 anything-LLM 共享团队知识资产 在远程办公成为常态的今天,信息分散、沟通滞后和知识沉淀困难成了许多团队的日常痛点。员工可能花数小时翻找一封旧邮件,或是重复提问同一个政策问题;新成员入职时面对堆积如山…

作者头像 李华