news 2026/6/15 20:28:10

11-3 register integration

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:41:03

导师严选!专科生必看8款AI论文平台测评

导师严选&#xff01;专科生必看8款AI论文平台测评 2026年专科生论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着AI技术在学术领域的广泛应用&#xff0c;越来越多的专科生开始借助AI平台提升论文写作效率。然而&#xff0c;面对市场上五花八门的AI论文工具&am…

作者头像 李华
网站建设 2026/6/15 13:51:21

数据清洗:大数据领域的必备技能

数据清洗&#xff1a;大数据领域的必备技能 1. 引入与连接&#xff1a;数据世界的"清洁革命" “2.3亿美元的错误&#xff1a;一个小数点引发的灾难” 1999年&#xff0c;NASA的火星气候轨道器在进入火星大气层时意外解体。调查结果令人震惊&#xff1a;洛克希德马丁公…

作者头像 李华
网站建设 2026/6/13 13:10:31

STM32单片机语音识别智能家居系统99X(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32单片机语音识别智能家居系统99X产品功能描述&#xff1a; 本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、&#xff08;无线蓝牙/WIFI模块-可选&#xff09;、智能语音识别&#xff08;SNR6812&#xff09;电路、DHT11温湿度检测电路、光照采集电路、USB高亮灯、风扇…

作者头像 李华
网站建设 2026/6/15 10:41:00

STM32-S176-交流电压+电流+功率+过载保护+LCD1602液屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32-S176-交流电压电流功率过载保护LCD1602液屏声光报警按键(无线方式选择)STM32-S176N无无线-无APP板(硬件操作详细): STM32-S176B蓝牙无线-APP版: STM32-S176W-WIFI无线-APP版: STM32-S176CAN-视频监控WIFI无线-APP版: STM32-S176I-云平台-APP版: 产品功能描述&#xff1a;…

作者头像 李华
网站建设 2026/6/15 11:44:34

基于51/STM32单片机智能台灯灯光控制PWM调光语音识别坐姿设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51-C01-人走灯灭AD采集自动手动10档调节坐姿监测蜂鸣器OLED屏(无线方式选择) 51-C01N无无线-无APP板: 51-C01B蓝牙无线-APP版: 51-C01W-WIFI无线-APP版: 51-C01CAN-视频监控WIFI无线-APP版: 产品功能描述&#xff1a; 本系统由STC89C52单片机最小系统电路、OLED液晶显示、&…

作者头像 李华
网站建设 2026/6/15 12:51:58

两步实现在ThinkLink平台上的告警功能

1. 功能概述 ThinkLink 的告警通知功能是基于平台强大的 RPC (Remote Procedure Call) 机制 实现的。通过将告警逻辑封装在触发联动模型中&#xff0c;平台能够根据设备上报的数据实时判断是否达到告警条件&#xff0c;并调用预设的 alarm 类型 RPC 消息&#xff0c;实现告警的…

作者头像 李华