自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 UVM验证入门(19)-Register Abstract Layer寄存器模型

本文介绍了UVM Register Layer在SoC验证中的核心应用,重点分析了前门和后门两种寄存器访问机制及其适用场景。前门访问通过总线协议模拟真实硬件行为,后门访问则直接操作HDL信号实现快速验证。文章详细阐述了寄存器建模的三个基础类(uvm_reg_field、uvm_reg和uvm_reg_block)的构建方法,并介绍了RALF格式的寄存器描述文件及其自动代码生成工具。

2025-12-18 14:58:27 550

原创 UVM验证入门(18)-Callback机制

Callback机制通过在关键位置插入回调点实现功能扩展,是UVM验证中重要的灵活性设计模式。

2025-12-17 13:08:22 916

原创 UVM验证入门(17)-uvm_test测试顶层控制器

UVM Test 摘要 UVM Test是UVM验证框架中的顶层执行单元,负责定义测试场景并控制验证流程。它类似于电影导演,决定测试内容并配置验证环境。

2025-12-17 13:07:22 906

原创 UVM验证入门(16)-uvm_env验证环境容器

UVM Environment是UVM验证框架中的顶层容器组件,作为验证平台的生态系统其主要功能为组织Agent、Scoreboard、Reference Model等验证组件,形成完整验证环境 架构。

2025-12-16 14:09:25 673

原创 UVM验证入门(15)-uvm_agent代理

UVM Agent是UVM验证框架中负责接口级验证的核心功能单元,它将驱动(Driver)、监视(Monitor)和序列调度(Sequencer)三个关键组件封装为一个标准化模块,提供统一的接口验证方案。Agent通过封装实现模块化复用,避免了组件重复实例化的问题,并通过is_active配置参数支持主动(UVM_ACTIVE)和被动(UVM_PASSIVE)两种工作模式,可灵活适应不同验证场景。主动模式包含完整组件用于主动激励生成,被动模式仅保留Monitor用于监控已有信号。这种设计使验证平台结构清晰,

2025-12-16 14:07:05 1010

原创 UVM验证入门(14)-coverage覆盖率收集

UVM覆盖率是芯片验证中量化验证完备性的关键指标,主要包括代码覆盖率、功能覆盖率和断言覆盖率。代码覆盖率由仿真工具自动分析RTL代码执行情况,功能覆盖率由验证工程师根据规格主动设计,断言覆盖率则通过SVA监测特定条件。覆盖率的收集和分析能够识别验证盲点,优化回归测试,并指导约束随机测试生成。功能覆盖率建模使用covergroup、coverpoint和bins等SystemVerilog语法,支持交叉分析等高级功能,是发现角落案例的重要手段。

2025-12-09 15:28:39 785

原创 UVM验证入门(13)-uvm_reference model参考模型

UVM参考模型是验证环境中的核心预测组件,主要功能包括: 模拟DUT预期功能 实现算法/功能建模 跟踪内部状态变化 预测输出时序特性 进行数据格式转换,通过精确模拟DUT行为确保验证完整性。

2025-12-09 15:26:31 862

原创 UVM验证入门(12)-uvm_scordboard数据检查器

UVM Scoreboard是验证环境的核心组件,主要负责比对DUT的实际输出与预期输出。其核心功能包括数据收集、预期生成、比较检查和错误报告。实现步骤包括:创建Scoreboard类、接收数据、比较检查以及连接组件。在实际应用中,可根据设计特点选择顺序匹配、标签匹配或内容匹配策略。常见问题包括数据不匹配和死锁/超时,可通过检查参考模型、验证数据采集和确认时序对齐来解决。Scoreboard能有效验证功能正确性,是UVM验证的关键环节。

2025-12-08 14:39:14 617

原创 UVM验证入门(11)-uvm_monitor接口监视器

UVM Monitor是验证平台中的核心观察者,主要负责监控DUT接口信号并转换为事务级数据。其核心功能包括信号采集与协议解析、协议符合性检查以及功能覆盖率收集。Monitor通过分层架构实现关注点分离,具备可配置性和健壮性,能够实时发现接口违规问题。工作流程涵盖接口监控、事件检测、数据采集、事务构建、协议检查、广播分发和覆盖率采样等步骤,为验证平台提供可靠的数据支撑。Monitor还承担协议合规性检查、错误检测等关键职责,通过分析端口将事务广播给scoreboard等组件,形成验证环境的数据来源基础。

2025-12-08 14:37:58 769

原创 UVM验证入门(10)-uvm_sequencer序列调度器

UVM Sequencer作为验证环境中的核心调度组件,负责协调测试序列(Sequence)与驱动器(Driver)之间的数据流。它继承自uvm_sequencer基类,具备序列注册、请求处理、仲裁决策等功能,支持FIFO、加权等多种仲裁策略。

2025-11-28 15:46:13 1270

原创 UVM验证入门(9)-uvm_sequence序列

UVM Sequence是验证方法学中激励生成的核心组件,负责组织和产生测试场景所需的Transaction流。它将零散的Transaction按照特定时序、依赖关系和约束条件组合成有意义的验证场景,是实现自动化验证的关键。Sequence支持定义事务的产生顺序、数量、时序关系及随机化约束,提供强大的场景构建能力,包括简单的线性事务流和复杂的并行、交错等高级激励模式。通过uvm_do等宏简化事务创建和发送流程,Sequence可灵活启动和控制,支持直接启动、手动控制及混合模式,并能精确管理事务生成的时序和条

2025-11-28 15:44:12 822

原创 UVM验证入门(8)-uvm_transaction事务

摘要:UVM验证方法学中的Transaction作为基本数据传输单元,承担着抽象验证数据、实现组件解耦等核心功能。文章详细介绍了Transaction的结构组成,包括数据字段、随机化属性、约束条件等核心元素,重点讲解了随机化验证机制和多种约束表达方式(简单约束、集合约束、条件约束、分布约束等)。Transaction通过工厂注册机制支持动态创建和类型覆盖,使验证工程师能够在高层次抽象上构建高效、可重用的验证环境,大幅提升验证效率。

2025-11-27 18:32:31 1115

原创 UVM验证入门(7)-uvm_driver信号驱动器

本文通过一个仅含Driver的UART验证环境实例,分析了直接驱动信号的简单实现方式及其局限性:全局路径硬编码导致重用性差、激励生成与驱动逻辑耦合、缺乏配置机制等问题。随后给出一个通用Driver实现示例,展示通过TLM端口与Sequencer通信的标准模式,体现了获取事务、驱动信号和确认完成的三大基本职责。这种结构化的Driver实现方式能够提高验证环境的可重用性和灵活性,为构建完整UVM验证平台奠定基础。

2025-11-27 16:02:08 764

原创 UVM验证入门(6)-config_db机制

UVM配置数据库(uvm_config_db)是UVM验证框架的核心机制,提供全局、类型安全的配置信息共享。它解决了验证组件间的耦合问题,支持运行时动态配置和层次化控制。config_db通过set/get方法实现配置传递,set在测试类build_phase设置配置,get在组件build_phase获取配置。关键特性包括:类型安全、解耦合、灵活配置和调试支持。典型应用包括虚拟接口传递、参数配置和复杂对象共享,通过exists和wait_modified方法可增强配置管理的健壮性和动态响应能力。

2025-11-25 10:48:40 682

原创 UVM验证入门(5)-Phase机制

UVM Phase是验证方法学的核心调度机制,将验证过程划分为多个有序阶段。主要分为函数Phase(同步执行,如build/connect_phase)和任务Phase(异步执行,如run/reset_phase),按功能可分为构建、运行和清理三个阶段。构建阶段完成环境组建和连接,运行阶段包括12个标准动态运行阶段(复位、配置、主测试和关闭序列),每个子阶段都有明确的预处理、主执行和后处理流程。该机制通过自动化调用和标准化管理,确保验证组件协调工作。

2025-11-24 12:42:03 686

原创 UVM验证入门(4)-TLM1.0

UVM TLM 1.0是验证组件间通信的核心机制,提供事务级建模的高效通信方式。其核心概念包括put/get/transport三种操作模式,通过端口(Port)、导出(Export)和实现(Imp)三类端口实现数据交互。TLM 1.0支持阻塞和非阻塞两种接口类型,具有抽象层次高、仿真速度快、可重用性好等优势。使用时需遵循端口声明、实例创建、方法实现等步骤,为验证环境提供标准化的组件通信框架。

2025-11-22 15:10:43 778

原创 UVM验证入门(3)-factory工厂机制

本文介绍了UVM中的单例类设计模式和工厂机制。单例类通过保护构造函数、静态实例变量和get方法确保全局唯一实例,应用于UVM管理器类。工厂机制基于类型重载,提供动态替换能力,通过类型注册表实现灵活的对象创建。文章详细讲解了组件/对象注册宏的使用、内部实现机制,以及工厂创建方法与传统方式的对比优势。这些机制增强了UVM验证环境的灵活性、可重用性和可维护性。

2025-11-22 14:45:51 1266

原创 UVM验证入门(2)-uvm常用类的继承关系

本文介绍了UVM验证方法学中的核心类继承体系。UVM采用基于类的面向对象编程,通过uvm_void和uvm_object等根基类构建层次化框架。uvm_object提供字段自动化、工厂模式等核心功能,支持copy()、clone()、compare()等方法实现对象操作。uvm_component作为验证组件的根基,具有phase机制和层次结构特性。

2025-11-21 18:26:38 995

原创 UVM验证入门(1)-uvm是什么

本文概括的介绍了UVM验证环境的基本组成

2025-11-21 18:25:01 1135

原创 使用verilog代码实现RAM—真双口RAM

本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要通过对Vivado Block Memory Generator IP的仿真对比,用verilog 实现真双端口RAM,包含时钟异步时的处理。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。

2025-05-08 15:58:52 1542

原创 使用verilog代码实现RAM—简单双端口RAM

本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要通过对Vivado Block Memory Generator IP的仿真对比,用verilog 实现伪双端口RAM,包含时钟异步时的处理。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。

2025-05-08 11:18:32 1887

原创 使用verilog代码实现RAM—单端口RAM

本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要从Vivado Block Memory Generator的高效IP核设计流程与Verilog手动实现RAM的代码架构两个方面,通过理论解析、工具操作与仿真验证相结合,为读者提供从概念到落地的完整RAM开发指南。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。

2025-04-29 19:04:38 1641

原创 FPGA常用接口协议--SPI

SPI是一种高速的、全双工、同步的通信总线, 常用于MCU和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。现如今,SPI总线已经成为被广泛应用的一种数据传输方式,由于其简单的接口、灵活性和易用性,SPI 已成为一种标准,SPI被半导体制造商广泛应用于IC芯片。

2024-01-01 20:25:34 2747

转载 CAN总线协议

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。回读机制。

2023-09-21 22:20:26 1200

原创 FPGA自动保存编译版本

在FPGA开发过程中,会随着设计的调试与更新,软件版本会不断地迭代,当迭代次数较多时,很容易忘记版本,影响版本记录,手动在程序中添加编译时间版本比较麻烦,也有可能在更改过程中会忘记,如果使用自动的获取当前时间的方式,每次在编译时即将当前时间写入设计中,即方便又不会出现忘记的情况。这里使用两种方式来实现自动获取编译时间戳的方式,一种是网上所说的通过TCL脚本的方式自动获取时间写入设计的方式,另一种是使用XILINX原语的方式。

2023-09-10 21:06:33 4039 6

原创 Vivado工具TCL脚本使用--一键生成MCS

通过Vivado固化MCS到Flash的过程中,需要将Bit文件转换为MCS文件,每次通过Vivado界面点击步骤相对繁琐,为了简化转换MCS文件的过程,通过执行一条脚本的方式来一键生成MCS文件。

2023-08-16 23:50:31 1875 4

原创 基于ZYNQ的microblaze使用提示未找到ARM processor

通常使用microblaze软核的场景一般不是socfpga芯片,本次使用ZYNQ芯片是想验证一下microblaze地址空间的读写操作,手头上只有一块zynq的板子,于是想在PL端添加microblaze软核测试;

2022-07-30 13:25:06 2694 12

原创 FPGA常用接口协议--IIC

  IIC接口协议是一种比较简单、常用的一种接口协议,使用它的场景很广泛(最常见的如EEPROM读写、一些寄存器的配置等),是我们学习FPGA过程中常用的接口协议,本篇使用EEPROM(AT24C512B)器件作为目标器件进行IIC接口实现,其他器件读写方式略有差别,IIC协议不变。  IIC (Inter-Integrated Circuit(集成电路总线)),百度百科解释如下:IIC-百度百科。  这里简单概括一下协议内容:IIC(IIC,inter-Integrated circuit),两线式串行总

2022-05-03 21:26:10 6029 7

原创 FPGA常用接口协议--UART

UART接口协议是一种比较简单、非常常用的一种接口协议,使用它的场景很常见,是我们学习FPGA一定要会的接口协议

2021-11-15 10:56:49 2187 4

原创 VIVADO 调用 VCS仿真

(本次使用软件版本为Vivado 2019.2和VCS 2018)一、编译仿真库1、如下图选择Tools->Compile Simulation Libraries2、如下图①选择仿真工具;②③选择器件库(为了节省编译库时间,这里只选用VU器件,具体按实际情况选择);④选择编译库保存路径;⑤选择仿真工具路径;⑥开始编译库;3、如下图在编译库过程中,编译库过程中不要取消,要重新编译,等待本次编译完成后再重新编译;二、设置仿真工具、仿真环境1、完成编译库之后,选择 Tools->Set

2021-04-12 19:02:24 2405 2

原创 vivado导出设计文件路径

在对FPGA代码仿真的时候,有时候需要使用脚本进行仿真,当脚本仿真带有vivado IP核的时候,由于有些IP核仿真需要的文件比较多,并且不再同一个目录下,要一个一个的把所需的仿真文件找出来比较繁琐,此时我们可以用如下tcl将仿真所需文件导出report_compile_order -file file.src 导出综合&仿真所需文件所在目录保存在file.src文件中...

2021-03-03 16:37:30 4077 1

一个只有driver的UART简单验证环境

uvm_uart/ ├── rtl/ # UART RTL设计代码 │ ├── uart_top.v │ ├── uart_tx.v │ └── uart_rx.v ├── tb/ # uvm验证环境代码 │ ├── top.tb.v │ └── my_driver.v ├── filelist.f # 文件列表 ├── genfilelist.sh # 生成filelist的shell ├── makefile # makefile文件 └── readme.txt # 当前文件

2025-11-25

【电子设计自动化】基于UVM的验证组件类参考手册:标准化验证环境构建与互操作性实现技术

内容概要:本文档为《UVM_Class_Reference_Manual_1.0.pdf》,详细介绍了通用验证方法学(Universal Verification Methodology, UVM)1.0版本的类参考手册。该手册涵盖了UVM的核心架构与类体系,包括组件(uvm_component)、事务级建模(TLM)、寄存器模型(register model)、序列机制(sequence)、同步类(事件与屏障)、报告系统(report server)、回调机制、资源管理以及配置数据库等内容。重点描述了各核心类的功能、继承关系、关键方法及其使用场景,如uvm_event用于进程间同步,uvm_objection实现测试结束协调,uvm_report_catcher用于捕获和处理日志消息等。同时提供了完整的API接口定义和使用示例,旨在为芯片验证工程师提供标准化、可重用的验证环境构建指南。; 适合人群:具备SystemVerilog语言基础并从事数字集成电路验证工作的工程师,尤其是有一定UVM使用经验的初级到中级研发人员;也适用于需要深入理解UVM内部机制的设计验证团队成员。; 使用场景及目标:① 构建模块级或系统级可重用验证平台(testbench);② 实现复杂测试激励生成、响应检查与覆盖率收集;③ 掌握UVM中面向对象编程与组件化设计思想;④ 调试和优化现有UVM验证环境中的问题,如相位同步、资源竞争、报告控制等。; 阅读建议:此资源作为权威的UVM 1.0类参考手册,适合作为开发过程中的查阅资料,建议结合实际项目实践进行学习,重点关注核心类的调用时序、相位行为及继承扩展方式,并配合UVM用户指南和仿真工具文档共同使用以获得完整理解。

2025-11-12

【硬件接口与通信】PCI代码和ID分配规范解析:版本1.12更新及关键技术详解了文档的核心内容

内容概要:本文档《PCI_Code-ID_r_1_12__v9_Jan_2020.pdf》是关于PCI代码和ID分配规范的修订版本1.12,发布于2020年1月9日。文档详细列出了自2010年以来各版本的修订历史,涵盖类代码、功能ID以及扩展功能ID的定义与更新。主要内容包括:1)类代码的分类及其子类和编程接口的定义,涉及从00h到13h的不同设备类型,如存储控制器、网络控制器、显示控制器等;2)功能ID的定义,用于标识PCI兼容的功能结构;3)扩展功能ID的定义,用于标识PCI Express扩展功能结构。文档还提供了详细的术语解释和引用标准。 适用人群:硬件工程师、系统架构师、PCI设备开发者以及其他需要了解PCI设备分类和功能定义的技术人员。 使用场景及目标:①帮助技术人员理解不同类别的PCI设备及其功能;②为设备制造商提供统一的编码标准,确保设备间的互操作性;③指导开发者正确配置和识别PCI设备的功能和特性。 其他说明:文档由PCI-SIG(Peripheral Component Interconnect Special Interest Group)维护,提供“按原样”使用的许可,不承担任何责任或保证。最新版本和更多信息可通过PCI-SIG官方网站获取。联系邮箱为administration@pcisig.com和技术支持邮箱techsupp@pcisig.com。

2025-05-28

SK Hynix Confidential Datasheet.pdf

SK Hynix Confidential Datasheet

2021-06-10

FPGA Verilog 规范 硬件描述语言 嵌入式 IEEE STD-1364

资源包含IEEE Verilog-2001标准语法规范和IEEE Verilog-2005标准语法规范,标准定义了Verilog硬件描述语言(HDL)。 Verilog 硬件描述语言(HDL)是在这个标准中定义的。VerilogHDL 是一种正式的符号,用于电子系统创建的所有阶段。因为它是机器可读和人类可读的,它支持硬件设计的开发、验证、合成和测试; 硬件设计数据的通信; 以及硬件的维护、修改和采购。该标准的主要受众是支持该语言的工具的实现者和该语言的高级用户

2023-09-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除