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

IC验证 AHB-RAM 项目(一)——项目理解

目录

  • 概念理解
    • AHB-RAM
    • VIP
  • 项目基本框架
  • class 创建三要素
  • component 类编写要点
    • 参数类
    • phase 机制


概念理解

AHB-RAM

AHB-RAM 就是一个通过 AHB 总线接口来访问的内存模块。简单理解:这是一个带有 AHB“插头”的 RAM,能方便地挂在 SoC 的总线上,让 CPU 或 DMA 等主控通过 AHB 协议来读写这块内存。

  • AHB 是 ARM 的 AMBA 总线协议,主要用于不同模块之间的高速数据传输
  • RAM 是内存(随机存取存储器)

VIP

  • UVC 是基于 UVM 方法学封装的验证组件
  • VIP(验证 IP)可以理解为复用性强的,可商业化的 UVC
  • 验证 slave 模块的话需要编写 master 验证文件,验证 master 模块的话需要编写 slave 验证文件

项目基本框架

  • pkg.sv
    package 是核心组织单元,将验证组件文件 include 在一个包中
  • transaction.sv
    sequence item 类,定义与 DUT 的交互数据
  • configuration.sv
    uvm_object 类,集中化管理所有可配置参数
  • driver.sv
    uvm_driver 类,将 sequencer 传送的 sequence item 进行转换,以驱动 DUT 完成激励
  • monitor.sv
    uvm_monitor 类,监测 DUT 信号,并将其转换为 sequence item
  • sequencer.sv
    uvm_sequencer 类,将 sequence 生成的 sequence item 依据仲裁动态调度给 driver

class 创建三要素

  • 继承:extends 父类,父类可以为 uvm_component、uvm_object、uvm_sequence_item 等等
  • 注册:即利用工厂机制注册该类,仅有两种注册类型,uvm_object_utils(该类类名) 注册非层次化的对象,uvm_component_utils(该类类名) 注册层次化的组件
  • 创建:添加 new 函数
    • object 类的 new 函数固定为一个参数(string name)
    • component 类的 new 函数固定为两个输入参数(string name, uvm_component parent),其中 parent 指该类的父类,一般 =null 即可
class ahb_transaction extends uvm_sequence_item;'uvm_object_utils_begin(ahb_transaction)'uvm_object_utils_endfunction new(string name = "ahb_transaction");super.new(name);endfunction
endclass
class ahb_driver extends uvm_driver;'uvm_component_utils(ahb_driver)function new(string name = "ahb_driver", uvm_component parent = null);super.new(name, parent);endfunction
endclass

component 类编写要点

class ahb_driver #(type REQ = ahb_transaction, type RSP = REQ) extends uvm_driver #(REQ, RSP);'uvm_component_utils(ahb_driver)function new(string name = "ahb_driver", uvm_component parent = null);super.new(name, parent);endfunctionfunction void build_phase(uvm_phase phase);super.build_phase(phase);endfunctionfunction void connect_phase(uvm_phase phase);super.connect_phase(phase);endfunctiontask run_phase(uvm_phase phase);super.run_phase(phase);endtask
endclass

参数类

class uvm_driver #(type REQ = uvm_sequence_item,  // 默认请求事务类型type RSP = REQ                 // 默认响应事务类型(通常与REQ相同)
) extends uvm_component;

上述代码的意思是,uvm_driver 默认的事务类型是 uvm_sequence_item,比如调用 get_next_item() 函数时返回的即是 uvm_sequence_item

class ahb_driver extends uvm_driver #(ahb_transaction);

上述声明时使用参数类,代表自动适配 get_next_item() 等方法返回类型为ahb_transaction

如果有新的类继承该类(ahb_driver),无法再参数化 uvm_driver 类,即

class ahb_master_driver extends ahb_driver;

为了更好地让子类继承,使用如下进行代码

class ahb_driver #(type REQ = ahb_transaction, type RSP = REQ) extends uvm_driver #(REQ, RSP);
class ahb_master_driver extends uvm_driver #(ahb_master_transaction);

phase 机制

phase 机制是 component 的专属机制,是验证环境的核心调度系统,包含以下九个过程,常用的三个为 build_phase、connect_phase、run_phase
在这里插入图片描述

http://www.dtcms.com/a/336628.html

相关文章:

  • 【leetcode】58. 最后一个单词的长度
  • Python大模型应用开发-核心技术与项目开发
  • 【165页PPT】基于IPD的研发项目管理(附下载方式)
  • vue路由懒加载
  • 数据链路层(1)
  • Linux操作系统软件编程——多线程
  • 基于飞算JavaAI实现高端算法性能优化:从理论到落地的性能跃迁实践
  • C++---迭代器删除元素避免索引混乱
  • 【Golang】:函数和包
  • 因果语义知识图谱如何革新文本预处理
  • os详解,从上面是‘os‘模块?到核心组成和常用函数
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 什么是AI Agent(智能体)
  • nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法
  • [Oracle数据库] Oracle 多表查询
  • 网络常识-我的电脑啥时安装了证书
  • 生成模型实战 | InfoGAN详解与实现
  • java如何使用正则提取字符串中的内容
  • 谈谈对面向对象OOP的理解
  • 深入分析 Linux PCI Express 子系统
  • Highcharts 官方文档与 API 查询技巧解析
  • android aidl相关学习
  • 【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑14B大语言模型_20250817
  • 在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • redis和cdn的相似性和区别
  • 编程算法实例-最小公倍数
  • Python自学09-常用数据结构之元组
  • 黑马商城day08-Elasticsearch作业(个人记录、仅供参考、详细图解)
  • 嵌入式系统中的签名验证:设计与原理解析(C/C++代码实现)