- 博客(22)
- 收藏
- 关注
原创 【验证技能树】UVM 源码解读06 -- Objection 的完整源码解剖
Objection 本身是一个 object,而不是 component。它是“机制”,不是“参与者”它不跑 phase,只服务 phaseObjection 不是计数器,而是一个:以 component hierarchy 为传播路径、以 phase 生命周期为边界、以“协商结束”为目标的分布式同步协议。
2025-12-21 23:07:04
583
原创 【验证技能树】UVM 源码解读04 -- `uvm_component` 源码解读
如果说uvm_object定义了 UVM 的“数据模型”,那么定义的,就是。UVM 中所有真正“活着”的东西:最终都继承自。理解,不是理解某个类,而是理解。
2025-12-20 00:25:56
739
原创 【验证技能树】UVM 最核心的设计哲学是什么?
摘要: UVM的核心设计哲学是将验证代码转化为可长期维护的验证系统,其架构基于四个关键原则:控制反转(通过工厂模式实现组件替换)、抽象层次分离(严格划分职责边界)、验证代码资产化(支持跨项目复用)以及调试优先(牺牲性能换取可追踪性)。UVM的复杂性源于其面向大规模SoC验证的工程目标,本质是一个融合面向对象、事件驱动和分层抽象的“验证操作系统内核”,旨在解决验证复杂度爆炸问题,而非追求短期开发效率。
2025-12-16 22:41:49
455
原创 【验证技能树】UVM 源码解读03 -- uvm_object 源码解读
所有 object 派生自uvm_objectuvm_void是一个 UVM 内部占位基类(相当于“无意义基类”)保持类型可替换性(factory)让验证环境能在不同项目、不同层级中复用让 VIP 可以用 override 替换,不影响上层代码建立统一的数据操作接口copy/clone/compare/print 在 SoC 级调试中极其关键将这些逻辑抽象出来,避免用户重复发明轮子对象轻量化,不参与组件调度使 transaction 类更加稳定、可复用。
2025-12-16 22:38:44
823
原创 为什么 RISC-V 的特权架构,是理解 RISC-V 的入口?
摘要: RISC-V特权架构是处理器设计的核心,定义了安全隔离与系统抽象的关键机制。其简洁设计围绕三层特权模式(M/S/U)、CSR寄存器、异常/中断、虚拟内存和SBI接口五大支柱展开,直接影响CPU验证、OS开发及SoC设计。工程师需通过“三遍读法”掌握其结构、关键路径与代码映射,从而构建体系化认知,解决黑盒问题并提升架构思维能力。理解特权架构是深入RISC-V系统设计、验证和优化的必经之路。
2025-12-01 21:02:11
767
原创 【验证技能树】UVM 源码解读02 -- UVM 框架鸟瞰
摘要: UVM通过面向对象设计、事务层抽象(TLM)、工厂模式和覆盖率驱动构建验证框架。其类层次分为uvm_object(数据对象)和uvm_component(组件树与生命周期),分别支持事务建模和验证环境构建。源码按功能模块化,核心机制(工厂、Phase、TLM等)集中在base/目录,标准组件位于comps/。UVM实现了四大设计模式: OOP:通过uvm_object/uvm_component的继承与虚函数提供扩展点; 工厂模式:由uvm_factory和宏(如uvm_object_utils)实
2025-09-30 09:32:34
890
原创 【体系结构】ARM版 - RAS 概述
文章摘要 RAS(可靠性、可用性、可维护性)是计算机系统关键特性。Arm架构通过RAS扩展提供错误处理框架,包括异常报告机制、错误同步指令(ESB)和标准化错误记录。错误分为可纠正(CE)、不可恢复(UEU)等类型,通过检测、纠正和隔离机制减少系统失效。RAS支持从基本错误复位到复杂恢复方案,帮助构建高可靠系统。
2025-09-22 22:21:44
963
原创 【验证技能树】UVM 源码解读01 -- UVM本质上就是软件工程方法论在芯片验证领域的应用
文章摘要: UVM(通用验证方法学)是基于SystemVerilog的芯片验证框架,采用组件化、面向对象和事务级抽象设计。其核心在于职责分离与数据流,通过Driver、Monitor、Sequencer等模块协作实现高效验证。UVM强调复用性、可扩展性和可维护性,类似软件工程的模块化与低耦合原则。理解其体系结构比记忆API更重要,有助于灵活组合组件并提升验证效率。UVM不仅是工具,更融合了软件工程思维,推动验证工作向自动化、系统化发展。掌握UVM底层逻辑能优化验证环境设计,适用于从IP到SoC的多层级验证场
2025-09-21 16:26:15
886
原创 【验证技能树】验证工程师一定需要的:最小可执行 Testbench(Minimal Executable Testbench)
摘要: 最小可执行测试平台(MEB)是解决复杂SoC验证痛点的轻量化方案。它仅包含时钟、DUT、驱动和监控四个核心模块,通过极简代码实现快速验证。相比传统UVM验证环境,MEB在环境搭建、接口调试、问题复现和学习场景中具有显著优势。文章提供了加法器验证的MEB实例,包含单文件仿真、波形查看和Makefile模板,并强调"先跑通闭环"的验证哲学。这种最小化思维不仅适用于芯片验证,对职业发展中的核心能力验证也具有启发意义。
2025-09-19 22:38:38
383
原创 IC工程师 Linux 命令速查表 [持续更新中...]
本文总结了VLSI工程师常用的Linux终端命令,分为四大类:1)基本操作(ls、cd、cp等目录文件管理);2)文件与文本处理(find、grep、less等搜索查看工具);3)资源监控(du、top、ps等系统状态查看);4)协作交付(tar、scp、git等打包传输与版本控制)。这些命令覆盖了日常RTL开发、仿真调试、日志分析和团队协作的典型场景,如查看仿真log、定位信号定义、监控系统资源等,是VLSI工程师高效工作的必备技能。特别提醒rm -rf等危险命令需谨慎使用。
2025-09-10 22:30:37
221
原创 【嵌入式编程】static、volatile和extern 关键字的重要性
当你在与微控制器(MCU)一起工作时,浏览代码库时,很难忽略这些关键字。
2024-06-19 21:27:45
504
原创 【CPU 多核技术】一文带你看懂CPU多核技术- 发展历程及技术细节
多核心CPU和SoC是为了满足整机系统对处理能力和处理速度不断提升的需求,在单核心CPU沿着摩尔定律向前发展,受到了芯片功率极限阻碍时,人们不得不选择的一种突破路线。多核心CPU推动着操作系统的更新和升级,操作系统又决定了多核心CPU效能的发挥。多核心CPU技术的难点是多核心之间的信息传递、数据同步和任务调度等。系统性能优劣不能只考虑CPU核心数量,还要考虑操作系统、调度算法、应用和驱动程序等。多核心CPU技术和FinFET等3D芯片技术可以看作是延续摩尔定律生命的两大关键技术。
2024-06-10 21:07:56
7316
原创 【MIPS】Cache一致性协议之: MESI 协议
多核处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议。dirty和valid标志,它们很好的描述了 Cache 和 Memory (内存)之间的数据关系(数据是否有效,数据是否被修改),而在多核处理器中,多个核会共享一些数据,MESI协议就包含了描述共享的状态。转自:https://blog.youkuaiyun.com/muxiqingyang/article/details/6615199。
2024-03-10 01:22:15
2569
2
原创 [AIDV] 芯片验证:AI 机器学习在 DV 中的应用及进展
现代硬件设计的功能要求不断增加,这意味着传统的功能验证过程在满足设计上市时间目标方面变得效率低下。大量的事实证明,机器学习 (ML) 模型对于流程主要部分的自动化非常有价值,而这些部分通常占用了工程师的精力;使他们不再需要添加新的覆盖率指标来使设计更加稳健。
2024-03-01 23:24:02
3444
2
原创 【个人思考】IC验证工程师的起源与进化
20年前所需的功能验证技能几乎无法与今天的验证技能相提并论,随着设计和验证变得更加抽象,硬件与固件、软件的实现边界不断移动,以及新技术的采用,这种变化应该被期望。优秀的验证工程师是多年经验的积累。20到30年前,一个优秀的验证工程师了解设计,知道如何构建简单的功能测试计划清单,并在模拟器中大致上进行设计级别的连线,构建能够检测功能故障的模型还能获得额外的加分。衡量一名优秀的验证工程师的最佳指标不是他们给出的答案,而是他们所提出的问题以及提问的速度。今天,一个优秀的验证工程师几乎是一个全知的工程师。
2024-01-16 00:43:16
489
1
原创 【CPU cache】与程序员相关的CPU缓存知识漫谈
与程序员相关的CPU缓存知识 1.基础知识 2. 缓存的命中 3.缓存的一致性 4.程序性能
2024-01-09 21:32:11
1551
原创 【个人思考】数字芯片领域,未来值得投身方向?
这两种芯片已经是芯片界的元老,推荐这两个方向不仅仅是因为它们在消费电子、服务器、云计算等领域有着稳定的出货量,更是因为CPU/GPU作为超大规模的芯片,对个人的技能栈能做非常全面的学习补足。存算一体芯片未来的挑战也颇多,包括计算单元的设计,数据传输路径的优化,对应的软件编译器的部署等。这个方向需要具备数字信号处理、通信协议、射频等方面的知识,具有较高的技术门槛。当然没有十几二十年的学习和经验积累,是搞不定它们的,除此之外,想设计出有市场竞争力的高性能CPU/GPU,光有时间的积累还不够,智商也是要的。
2024-01-03 00:32:52
495
1
转载 【MIPS】MIPS指令集:内嵌汇编asm语法介绍
内嵌汇编指令"move %0,%1\n\t"中的move还不是真正的MIPS汇编指令,MIPS中的move指令的2个操作数是寄存器,而此处move的操作数是c语言中的变量。“memory”就是通知GCC编译器,此段内嵌汇编修改了memory中的内容,asm之前的c代码块和之后的c代码块看到的memory可能是不一样的,对memory的访问不能依赖之前的缓存,需要重新加载。操作符就使用MIPS汇编指令中的助记符,操作数可以是%0,%1,%2形式的占位符,来表示c语言中变量ret、a和b。整个程序功能很简单。
2023-08-14 21:04:37
826
原创 【SystemVerilog中的浅复制(shallow copy)和深复制 (deep copy)】
俗话说得好:遇事不决问标准,今天回顾问题时,发现对浅复制(shallow copy)和深复制 (deep copy) 的理解不够深入,整理一下标准中对深复制和浅复制的介绍和自己的理解;
2023-05-28 23:56:10
415
1
原创 【数字IC验证进阶】SystemVerilog的随机稳定性
作为基于约束的随机验证方法的一部分,在ASIC/FPGA开发过程中,每晚会运行一套测试,并且每晚的回归测试都会使用不同的种子运行。这样,每当测试使用不同的随机种子运行时,测试平台中的 $urandom, $urandom_range & (class) randomize()调用会生成不同的随机数,从而导致DUT的不同激励和配置。这些回归测试中的任何测试失败都必须是可复现的,特别是如果失败结果证明是RTL错误。
2023-05-25 23:54:26
1408
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅