- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 SystemVerilog语法(14)-功能覆盖率
SystemVerilog功能覆盖率是验证完备性的核心量化指标,通过covergroup定义覆盖模型,包含coverpoint和cross两种采样方式。关键知识点包括:自动/显式bins划分(单个值、范围、数组bins)、条件过滤(iff)、非法/忽略场景处理(illegal_bins/ignore_bins)、多变量交叉覆盖(cross)及其优化策略。覆盖组支持参数化设计和多种触发方式(显式采样/事件触发/类封装)。
2026-06-08 17:10:33
339
原创 SystemVerilog语法(13)-约束随机化下篇
主要内容包括:约束求解器工作机制、解空间均匀性保障、solve before指令控制概率分布、软约束冲突处理策略、复杂数据类型随机化方法等关键技术。重点探讨了工业级应用场景中的典型问题解决方案,如AXI数据包生成器实现、约束继承与重载设计模式、随机稳定性控制技巧等。通过约束调试与性能优化案例分析,帮助读者掌握复杂协议建模能力,解决实际项目中90%的随机化难题。
2026-06-03 18:34:19
340
原创 SystemVerilog语法(12)-约束随机化上篇
SystemVerilog约束随机化(CRT)实用指南 本文系统介绍了SystemVerilog中约束随机化验证(CRT)的核心技术要点: 随机化验证优势:相比定向测试,CRT通过定义合法范围约束自动生成随机激励,显著提高覆盖率并降低维护成本 随机变量类型: rand:独立随机,允许重复值 randc:循环不重复随机,适合穷举场景。 约束语法: 范围约束(inside)、权重分布(dist) 条件约束(if-else/->) 多变量关系约束。
2026-06-02 18:12:24
296
原创 SystemVerilog语法(11)-面向对象编程下篇
本文摘要: 《SystemVerilog OOP核心进阶》深入讲解面向对象编程的进阶特性,聚焦UVM底层原理,涵盖多态、虚方法、深拷贝等关键机制。文章重点解析虚方法的动态绑定原理及多态实现条件,强调参数一致性对方法重写的影响,揭露默认参数的编译时绑定陷阱。同时详细介绍类型转换($cast)、抽象类、final关键字、深拷贝实现、参数化类等实用技术,并指出常见误区。通过事务类继承体系示例,展示多态数组在验证中的典型应用,帮助读者掌握UVM工厂、phase机制等核心组件的OOP实现原理。
2026-06-02 18:10:51
498
原创 SystemVerilog语法(10)-面向对象编程上篇
本文是SystemVerilog面向对象编程(OOP)的上篇教程,重点讲解类、对象、继承等核心概念,为学习UVM验证方法学奠定基础。详细介绍了类的定义与实例化、属性与方法、构造函数new()等基础语法,特别强调了对象使用前必须调用new()分配内存。还深入讲解了对象句柄的本质、浅拷贝陷阱以及静态属性/方法的使用场景。
2026-05-22 18:28:44
637
原创 SystemVerilog语法(9)-验证基础与简单Testbench
本文介绍了SystemVerilog验证环境中的核心语法和测试方法,重点包括: Testbench结构:包含时钟/复位生成、激励产生、输出检查等功能模块,采用initial块实现并行初始化。
2026-05-20 17:53:23
450
原创 SystemVerilog语法(8)-有限状态机(FSM)
本文系统介绍了有限状态机(FSM)的设计要点与实现方法。主要内容包括:1)FSM基本概念,对比摩尔型(输出仅依赖状态)和米利型(输出依赖状态与输入)的特点;2)推荐的三段式编码风格,强调状态寄存器、次态逻辑和输出逻辑分离;3)状态编码方式选择(独热码/二进制/格雷码)及其适用场景;4)安全设计措施,包括异步复位同步释放、自启动机制和非法状态检测。
2026-05-20 14:08:02
625
2
原创 SystemVerilog语法(7)-接口(interface)
SystemVerilog接口(interface)是封装总线信号和协议逻辑的强大工具,可大幅简化模块间连接。支持modport为不同模块定义信号读写权限,如主机/从机视角。接口可参数化配置位宽,并封装任务/函数用于验证(不可综合)。
2026-05-19 16:56:51
541
原创 SystemVerilog语法(6)-模块与端口
SystemVerilog模块是硬件设计的基本单元,本文详细介绍了模块的定义、端口方向与类型选择、参数化设计等核心概念。主要内容包括: 模块基本结构:包含端口列表、内部信号、过程块等组件。
2026-05-19 11:37:49
582
原创 SystemVerilog语法(5)-过程块与语句
SystemVerilog过程块与条件语句摘要 SystemVerilog改进了Verilog的过程块,引入always_comb(组合逻辑)、always_ff(触发器)和always_latch(锁存器)三种专用块,使代码意图更明确且支持工具检查错误。组合逻辑必须完整赋值所有分支,时序逻辑使用非阻塞赋值。验证专用initial和final块分别用于初始化和结束处理。
2026-05-12 18:12:14
525
原创 ModelSim入门实战(四): 参数化测试、自动比对与报告生成
本文介绍了一种高效的Verilog测试方法,通过参数化测试和自动化比对解决传统测试繁琐问题。该方法以8位序列检测器为例,支持灵活的参数传入、实时结果比对和报告生成,显著提升验证效率,适用于个人调试和自动化测试场景。
2026-05-12 18:08:41
339
原创 ModelSim入门实战(三): 批处理一键仿真与波形调试
本文介绍了如何通过批处理文件(.bat)实现ModelSim的一键自动化仿真,并系统梳理了波形调试的常用操作。
2026-05-11 18:13:24
697
原创 ModelSim入门实战(二):用8位序列检测器教你使用do脚本自动化仿真
do 脚本是 ModelSim 支持的 Tcl 脚本,可以把整个仿真流程写成命令,一键执行。本篇以8位序列“10110001”检测器为例,带你从零写出一个完整的run.do脚本,真正实现仿真自动化。
2026-05-11 18:08:48
392
原创 ModelSim入门实战(一):用全加器带你玩转文件添加与仿真
这篇文章详细介绍了使用ModelSim进行1位全加器仿真的完整流程。文中配有操作截图和关键步骤说明,指导读者完成从代码编写到仿真验证的全过程,适合Verilog初学者学习基础数字电路仿真方法。
2026-04-28 14:55:44
399
原创 SystemVerilog语法(4)-操作符与表达式
本文全面介绍了SystemVerilog中的各类操作符,包括算术、逻辑、关系、按位、移位等操作符的使用方法和注意事项。
2026-04-25 10:42:00
401
原创 SystemVerilog语法(3)-聚合数据类型
SystemVerilog将数据类型分为单一类型(如packed结构体)和聚合类型(unpacked结构体/联合体/数组)。聚合类型强调数据组合而非硬件实现,适用于验证环境和高层建模。
2026-04-25 10:40:47
559
原创 SystemVerilog语法(2)-基本数据类型
本文说明了SystemVerilog中的线网(net)类型及其特性。首先介绍了4态逻辑值系统(0/1/x/z)和线网强度模型,对比了net与variable的关键区别。随后详细解析了各类内建线网类型的功能和使用场景:wire/tri用于通用连接,uwire防止多驱动,wand/triand实现线与逻辑,wor/trior实现线或逻辑,trireg模拟电容存储特性,tri0/tri1提供默认驱动值,supply0/supply1表示电源/地,interconnect支持类型推导连接。
2026-04-24 12:35:40
602
原创 SystemVerilog语法(1)-SystemVerilog 简介
SystemVerilog是IEEE 1800标准的硬件描述与验证语言,作为Verilog的超集,它扩展了面向对象编程、随机激励生成、功能覆盖率建模等特性,同时兼容原有Verilog代码。SystemVerilog解决了传统Verilog在验证效率、代码重用性等方面的不足,支持硬件设计(RTL)和验证(Testbench)两大领域应用。其演进历经多个版本更新,目前主流EDA工具已支持IEEE 1800-2017标准。
2026-04-24 12:33:34
469
原创 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
679
原创 UVM验证入门(17)-uvm_test测试顶层控制器
UVM Test 摘要 UVM Test是UVM验证框架中的顶层执行单元,负责定义测试场景并控制验证流程。它类似于电影导演,决定测试内容并配置验证环境。
2025-12-17 13:07:22
1024
原创 UVM验证入门(16)-uvm_env验证环境容器
UVM Environment是UVM验证框架中的顶层容器组件,作为验证平台的生态系统其主要功能为组织Agent、Scoreboard、Reference Model等验证组件,形成完整验证环境 架构。
2025-12-16 14:09:25
823
原创 UVM验证入门(15)-uvm_agent代理
UVM Agent是UVM验证框架中负责接口级验证的核心功能单元,它将驱动(Driver)、监视(Monitor)和序列调度(Sequencer)三个关键组件封装为一个标准化模块,提供统一的接口验证方案。Agent通过封装实现模块化复用,避免了组件重复实例化的问题,并通过is_active配置参数支持主动(UVM_ACTIVE)和被动(UVM_PASSIVE)两种工作模式,可灵活适应不同验证场景。主动模式包含完整组件用于主动激励生成,被动模式仅保留Monitor用于监控已有信号。这种设计使验证平台结构清晰,
2025-12-16 14:07:05
1226
原创 UVM验证入门(14)-coverage覆盖率收集
UVM覆盖率是芯片验证中量化验证完备性的关键指标,主要包括代码覆盖率、功能覆盖率和断言覆盖率。代码覆盖率由仿真工具自动分析RTL代码执行情况,功能覆盖率由验证工程师根据规格主动设计,断言覆盖率则通过SVA监测特定条件。覆盖率的收集和分析能够识别验证盲点,优化回归测试,并指导约束随机测试生成。功能覆盖率建模使用covergroup、coverpoint和bins等SystemVerilog语法,支持交叉分析等高级功能,是发现角落案例的重要手段。
2025-12-09 15:28:39
1714
原创 UVM验证入门(13)-uvm_reference model参考模型
UVM参考模型是验证环境中的核心预测组件,主要功能包括: 模拟DUT预期功能 实现算法/功能建模 跟踪内部状态变化 预测输出时序特性 进行数据格式转换,通过精确模拟DUT行为确保验证完整性。
2025-12-09 15:26:31
1180
原创 UVM验证入门(12)-uvm_scordboard数据检查器
UVM Scoreboard是验证环境的核心组件,主要负责比对DUT的实际输出与预期输出。其核心功能包括数据收集、预期生成、比较检查和错误报告。实现步骤包括:创建Scoreboard类、接收数据、比较检查以及连接组件。在实际应用中,可根据设计特点选择顺序匹配、标签匹配或内容匹配策略。常见问题包括数据不匹配和死锁/超时,可通过检查参考模型、验证数据采集和确认时序对齐来解决。Scoreboard能有效验证功能正确性,是UVM验证的关键环节。
2025-12-08 14:39:14
765
原创 UVM验证入门(11)-uvm_monitor接口监视器
UVM Monitor是验证平台中的核心观察者,主要负责监控DUT接口信号并转换为事务级数据。其核心功能包括信号采集与协议解析、协议符合性检查以及功能覆盖率收集。Monitor通过分层架构实现关注点分离,具备可配置性和健壮性,能够实时发现接口违规问题。工作流程涵盖接口监控、事件检测、数据采集、事务构建、协议检查、广播分发和覆盖率采样等步骤,为验证平台提供可靠的数据支撑。Monitor还承担协议合规性检查、错误检测等关键职责,通过分析端口将事务广播给scoreboard等组件,形成验证环境的数据来源基础。
2025-12-08 14:37:58
900
原创 UVM验证入门(10)-uvm_sequencer序列调度器
UVM Sequencer作为验证环境中的核心调度组件,负责协调测试序列(Sequence)与驱动器(Driver)之间的数据流。它继承自uvm_sequencer基类,具备序列注册、请求处理、仲裁决策等功能,支持FIFO、加权等多种仲裁策略。
2025-11-28 15:46:13
1417
原创 UVM验证入门(9)-uvm_sequence序列
UVM Sequence是验证方法学中激励生成的核心组件,负责组织和产生测试场景所需的Transaction流。它将零散的Transaction按照特定时序、依赖关系和约束条件组合成有意义的验证场景,是实现自动化验证的关键。Sequence支持定义事务的产生顺序、数量、时序关系及随机化约束,提供强大的场景构建能力,包括简单的线性事务流和复杂的并行、交错等高级激励模式。通过uvm_do等宏简化事务创建和发送流程,Sequence可灵活启动和控制,支持直接启动、手动控制及混合模式,并能精确管理事务生成的时序和条
2025-11-28 15:44:12
944
原创 UVM验证入门(8)-uvm_transaction事务
摘要:UVM验证方法学中的Transaction作为基本数据传输单元,承担着抽象验证数据、实现组件解耦等核心功能。文章详细介绍了Transaction的结构组成,包括数据字段、随机化属性、约束条件等核心元素,重点讲解了随机化验证机制和多种约束表达方式(简单约束、集合约束、条件约束、分布约束等)。Transaction通过工厂注册机制支持动态创建和类型覆盖,使验证工程师能够在高层次抽象上构建高效、可重用的验证环境,大幅提升验证效率。
2025-11-27 18:32:31
1259
原创 UVM验证入门(7)-uvm_driver信号驱动器
本文通过一个仅含Driver的UART验证环境实例,分析了直接驱动信号的简单实现方式及其局限性:全局路径硬编码导致重用性差、激励生成与驱动逻辑耦合、缺乏配置机制等问题。随后给出一个通用Driver实现示例,展示通过TLM端口与Sequencer通信的标准模式,体现了获取事务、驱动信号和确认完成的三大基本职责。这种结构化的Driver实现方式能够提高验证环境的可重用性和灵活性,为构建完整UVM验证平台奠定基础。
2025-11-27 16:02:08
900
原创 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
917
原创 UVM验证入门(5)-Phase机制
UVM Phase是验证方法学的核心调度机制,将验证过程划分为多个有序阶段。主要分为函数Phase(同步执行,如build/connect_phase)和任务Phase(异步执行,如run/reset_phase),按功能可分为构建、运行和清理三个阶段。构建阶段完成环境组建和连接,运行阶段包括12个标准动态运行阶段(复位、配置、主测试和关闭序列),每个子阶段都有明确的预处理、主执行和后处理流程。该机制通过自动化调用和标准化管理,确保验证组件协调工作。
2025-11-24 12:42:03
1154
原创 UVM验证入门(4)-TLM1.0
UVM TLM 1.0是验证组件间通信的核心机制,提供事务级建模的高效通信方式。其核心概念包括put/get/transport三种操作模式,通过端口(Port)、导出(Export)和实现(Imp)三类端口实现数据交互。TLM 1.0支持阻塞和非阻塞两种接口类型,具有抽象层次高、仿真速度快、可重用性好等优势。使用时需遵循端口声明、实例创建、方法实现等步骤,为验证环境提供标准化的组件通信框架。
2025-11-22 15:10:43
967
原创 UVM验证入门(3)-factory工厂机制
本文介绍了UVM中的单例类设计模式和工厂机制。单例类通过保护构造函数、静态实例变量和get方法确保全局唯一实例,应用于UVM管理器类。工厂机制基于类型重载,提供动态替换能力,通过类型注册表实现灵活的对象创建。文章详细讲解了组件/对象注册宏的使用、内部实现机制,以及工厂创建方法与传统方式的对比优势。这些机制增强了UVM验证环境的灵活性、可重用性和可维护性。
2025-11-22 14:45:51
1430
原创 UVM验证入门(2)-uvm常用类的继承关系
本文介绍了UVM验证方法学中的核心类继承体系。UVM采用基于类的面向对象编程,通过uvm_void和uvm_object等根基类构建层次化框架。uvm_object提供字段自动化、工厂模式等核心功能,支持copy()、clone()、compare()等方法实现对象操作。uvm_component作为验证组件的根基,具有phase机制和层次结构特性。
2025-11-21 18:26:38
1166
原创 使用verilog代码实现RAM—真双口RAM
本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要通过对Vivado Block Memory Generator IP的仿真对比,用verilog 实现真双端口RAM,包含时钟异步时的处理。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。
2025-05-08 15:58:52
1708
原创 使用verilog代码实现RAM—简单双端口RAM
本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要通过对Vivado Block Memory Generator IP的仿真对比,用verilog 实现伪双端口RAM,包含时钟异步时的处理。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。
2025-05-08 11:18:32
2227
原创 使用verilog代码实现RAM—单端口RAM
本文以随机存取存储器(RAM)为核心,系统讲解其在FPGA开发中的设计方法与实践技巧。文章主要从Vivado Block Memory Generator的高效IP核设计流程与Verilog手动实现RAM的代码架构两个方面,通过理论解析、工具操作与仿真验证相结合,为读者提供从概念到落地的完整RAM开发指南。以下有部分内容摘自Xilinx官方手册,如有理解差异,请参考原手册。
2025-04-29 19:04:38
1805
ModelSim SE User’s Manual
2026-04-27
IEEE Standard for SystemVerilog- Unified Hardware Design, Specification, and Verification Languag
2026-04-08
一个只有driver的UART简单验证环境
2025-11-25
【电子设计自动化】基于UVM的验证组件类参考手册:标准化验证环境构建与互操作性实现技术
2025-11-12
【硬件接口与通信】PCI代码和ID分配规范解析:版本1.12更新及关键技术详解了文档的核心内容
2025-05-28
FPGA Verilog 规范 硬件描述语言 嵌入式 IEEE STD-1364
2023-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅