当前位置: 首页 > news >正文

11-3 register integration

文章目录

  • 原始代码
  • 详细解读:Direct vs Layered UVM验证框架
    • 一、第一段代码(Direct框架)详细解读
      • 1. APB从设备模块(slave)
      • 2. 寄存器模型(dut_regmodel)
      • 3. 测试平台(tb_top)
      • 4. 测试环境(tb_env)关键代码
    • 二、第二段代码(Layered框架)详细解读
      • 1. APB从设备模块(slave)
      • 2. 寄存器模型(dut_regmodel)
      • 3. 测试平台(tb_top)
      • 4. 测试环境(tb_env)关键代码
    • 三、关键组件详解
      • 1. `uvm_sequencer#(uvm_reg_item) reg_seqr;`
      • 2. `reg2apb_seq_t reg2apb_seq;`
      • 3. `uvm_reg_sequence seq;`
      • 4. `regmodel.set_hdl_path_root(hdl_root);`
      • 5. `reg2apb_adapter reg2apb = new;`
      • 6. `regmodel.default_map.set_sequencer(xxx, reg2apb);`
    • 四、Direct vs Layered 的关键区别
      • 1. 事务处理方式
      • 2. 代码结构对比
      • 3. 为什么需要Layered框架?
    • 五、小白理解版
      • Direct框架(直接点餐)
      • Layered框架(分层点餐)
      • 为什么Layered更好?
    • 六、实际应用中的区别
    • 七、总结

原始代码

`timescale1ns/1nsmoduleslave(apb_if apb,input bit rst);reg[31:0]pr_data;assign apb.prdata=(apb.psel&&apb.penable&&!apb.pwrite)?pr_data:'z;reg[31:0]DATA;reg[63:0]SOCKET[256];reg[31:0]DMA[1024];always @(posedge apb.pclk)beginif(rst)begin DATA<='h00;foreach(SOCKET[i])begin SOCKET[i]<=64'h0000_0000;end pr_data<=32'h0;endelsebegin// Wait for a SETUP+READ or ENABLE+WRITE cycleif(apb.psel==1'b1&&apb.penable==apb.pwrite)begin pr_data<=32'h0;if(apb.pwrite)begincasex(apb.paddr)16'h0024:DATA<=apb.pwdata;16'h1XX0:SOCKET[apb.paddr[11:4]][63:32]<=apb.pwdata;16'h1XX4:SOCKET[apb.paddr[11:4]][31:0]<=apb.pwdata;16'h2XXX:DMA[apb.paddr[11:2]]<=apb.pwdata;endcase endelsebegincasex(apb.paddr)16'h0000:pr_data<={4'h0,10'h176,8'h5A,8'h03};16'h0024:pr_data<=DATA;16'h1XX0:pr_data<=SOCKET[apb.paddr[11:4]][63:32];16'h1XX4:pr_data<=SOCKET[apb.paddr[11:4]][31:0];16'h2XXX:pr_data<=DMA[apb.paddr[11:2]];endcase end end end end endmoduleclassdut_IDextends uvm_reg;uvm_reg_field REVISION_ID;uvm_reg_field CHIP_ID;uvm_reg_field PRODUCT_ID;functionnew(string name="dut_ID");super.new(name,32,UVM_NO_COVERAGE);endfunctionvirtualfunctionvoidbuild();this.REVISION_ID=uvm_reg_field::type_id::create("REVISION_ID");this.CHIP_ID=uvm_reg_field::type_id::create("CHIP_ID");this.PRODUCT_ID=uvm_reg_field::type_id::create("PRODUCT_ID");this.REVISION_ID.configure(this,8,0,"RO",0,8'h03,1,0,1);this.CHIP_ID.configure(this,8,8,"RO",0,8'h5A,1,0,1);this.PRODUCT_ID.configure(this,10,16,"RO",0,10'h176,1,0,1);endfunction `uvm_object_utils(dut_ID)endclassclassdut_DATAextends uvm_reg;uvm_reg_field value;functionnew(string name="dut_DATA");super.new(name,32,UVM_NO_COVERAGE);endfunctionvirtualfunctionvoidbuild();this.value=uvm_reg_field::type_id::create("value");this.value.configure(this,32,0,"RW",1,32'h0,1,0,1);endfunction `uvm_object_utils(dut_DATA)endclassclassdut_SOCKETextends uvm_reg;rand uvm_reg_field IP;rand uvm_reg_field PORT;functionnew(string name="dut_ADDR");super.new(name,64,UVM_NO_COVERAGE);endfunction:newvirtualfunctionvoidbuild();this.IP=uvm_reg_field::type_id::create("value");this.PORT=uvm_reg_field::type_id::create("value");this.IP.configure(this,48,0,"RW",0,48'h0,1,0,1);this.PORT.configure(this,16,48,"RW",0,16'h0,1,0,1);endfunction `uvm_object_utils(dut_SOCKET)endclassclassdut_RAMextends uvm_mem;functionnew(string name="dut_RAM");super.new(name,'h400,32,"RW",UVM_NO_COVERAGE);endfunction `uvm_object_utils(dut_RAM)endclassclassdut_regmodelextends uvm_reg_block;rand dut_ID ID;rand dut_DATA DATA;rand dut_SOCKET SOCKET[256];rand dut_RAM RAM;functionnew(string name="slave");super.new(name,UVM_NO_COVERAGE);endfunctionvirtualfunctionvoidbuild();// createID=dut_ID::type_id::create("ID");DATA=dut_DATA::type_id::create("DATA");foreach(SOCKET[i])SOCKET
http://www.jsqmd.com/news/264336/

相关文章:

  • 智能驾驶三剑客:NDS、KIWI与ADASIS
  • day147—递归—二叉树的最近公共祖先(LeetCode-236)
  • 题解:P9353 [JOI 2023 Final] 现代机器 / Modern Machine
  • 12款论文AI工具横向对比:数学建模论文复现效率提升与格式优化方法
  • 12款论文AI工具横向对比:数学建模论文复现效率提升与格式优化方法
  • 12款AI论文工具深度分析:数学建模论文快速复现与格式精准调整方案
  • XDP与eBPF:Linux网络性能优化实战指南
  • 12款智能论文写作工具全面评测:数学建模论文高效还原与专业排版优化策略
  • 9D VR体验馆设备多少钱的投资分析与运营策略探讨
  • 从用户体验到提示工程:架构师分享如何将UX研究方法应用于提示词优化
  • 12款智能写作助手评测:数学建模论文精准复现与格式优化完整方案
  • 12款智能论文辅助工具评测:数学建模论文精准复现与专业排版优化策略
  • 12款智能论文辅助软件测评:数学建模论文快速复现与格式精细调整指南
  • 基于51/STM32单片机太阳能路灯台灯光伏风能追光光通信无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 12款AI论文工具对比分析:数学建模论文高效重现与专业排版优化策略
  • 基于51/STM32单片机老人防跌智能拐杖GSM短信北斗定位地图无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 12款AI论文写作软件深度测评:数学建模论文高效还原与排版优化技巧
  • 基于51/STM32单片机智能台灯灯光控制PWM调光语音识别坐姿设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 两步实现在ThinkLink平台上的告警功能
  • Windows 11 + WSL2 + vLLM 本地部署 Qwen3 8B AWQ 指南
  • 导师严选!专科生必看8款AI论文平台测评
  • 基于51/STM32单片机智能水杯保温杯恒温温度控制防干烧水质设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 文明十字路口的协同创生:《人类命运共同体》文明逻辑与“AI元人文”构想的思想共鸣
  • 【LGR-262-Div.2】洛谷 1 月月赛 III 题解
  • 2026国产制动卡钳优质产品推荐榜全场景适配 - 改装小龙
  • 数据清洗:大数据领域的必备技能
  • 致敬:国家有突出贡献电影艺术家、中华人民共和国电影电视艺术家大典入选者陶玉玲
  • 提示工程架构师实操指南:Agentic AI在医疗健康领域从0到1落地全流程
  • STM32单片机语音识别智能家居系统99X(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Flash了解学习