当前位置: 首页 > 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.xdnf.cn/news/1316773.html

相关文章:

  • AOP配置类自动注入
  • Git安装使用
  • Java增强for循环(小白友好版)
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • 【R语言】R语言矩阵运算:矩阵乘除法与逐元素乘除法计算对比
  • 7 索引的监控
  • 一文读懂[特殊字符] LlamaFactory 中 Loss 曲线图
  • JavaScript字符串详解
  • 图解希尔排序C语言实现
  • 力扣 hot100 Day76
  • Java 基础 -- Java 基础知识
  • C语言---第一个C语言程序
  • FreeRTOS源码分析八:timer管理(一)
  • 基于遗传编程的自动程序生成
  • Java语法进阶之常用类
  • SQL Server 2019安装教程(超详细图文)
  • PERCEIVER IO:一种用于结构化输入与输出的通用架构
  • iSCSI服务配置全指南(含服务器与客户端)
  • 快速掌握Hardhat与Solidity智能合约开发
  • SCAI采用公平发射机制成功登陆LetsBonk,60%代币供应量已锁仓
  • Houdini 粒子学习笔记
  • C# Newtonsoft.Json 反序列化子类数据丢失问题
  • 音频分类标注工具
  • 矿物分类案列 (一)六种方法对数据的填充
  • Java零基础笔记20(Java高级技术:单元测试、反射、注解、动态代理)
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • 勾股数-洛谷B3845 [GESP样题 二级]
  • 平行双目视觉-动手学计算机视觉18
  • Linux应用软件编程---多任务(线程)(线程创建、消亡、回收、属性、与进程的区别、线程间通信、函数指针)
  • (一)React企业级后台(Axios/localstorage封装/动态侧边栏)