- 博客(166)
- 资源 (4)
- 收藏
- 关注
原创 如何阅读一本书
主动阅读时牢记 “书谈什么、怎么说、是否有理、与己何关” 四个核心问题 。阅读分为基础、检视、分析、主题四个层次:基础阅读认字知表层;检视阅读限时抓重点,6 步略读;分析阅读不限时、求理解,遵循 11 规则;主题阅读最高阶、最复杂,经准备(设计书目、确定相关书)与实施(找章节、创词汇、立主旨、界议题、客观分析)两阶段。
2025-04-13 09:52:44
552
原创 刻意练习:如何从新手到大师
刻意练习 = 正确的训练方式 + 长久的专注努力 + 持续反馈改进。在练习过程中,一定要对结果进行分析,哪些达到了,哪些没达到,没达到的要对方法进行改进并进一步尝试,也就是在尝试、犯错、吸取教训、达成目标这几个步骤中反复循环。最后,需要记住的是:由训练引起的认知和生理变化需要继续保持。如果停止训练,它们便开始消失。
2025-04-07 21:06:09
506
原创 SoC验证如何减少Bug
在SoC验证中,checklist是很重要的一步,要审视下有没有无意间漏掉的检查或者做出的假设。大部分情况下,checklist总能发现一些RTL bug,本文给出了一些检查的思考方向,希望对大家有用,也欢迎大家补充。
2025-02-21 11:10:02
546
原创 一种解决SoC总线功能验证完备性的技术
如何确保各个IP是否正确连接到总线上,而且各IP的地址空间分配是否正确,是一件很棘手的事情。本文提出了一种新方法,可以解决SoC总线验证的诸多困难,既简单又快速地完成SoC总线功能验证。
2025-02-07 20:52:14
864
1
原创 KVM/ARM——基于ARM虚拟化扩展的VMM
KVM/ARM引入了split-mode虚拟化,这种一种新的hypervisor设计方法,它将核心hypervisor分开,以便它可以跨不同的特权CPU模式运行,从而利用每种CPU模式提供的特定优势和功能。KVM/ARM使用split-mode虚拟化来利用EL2支持的ARM硬件虚拟化,同时利用在kernel模式下运行的现有Linux kernel服务。Split-mode虚拟化允许KVM/ARM与Linux kernel集成,而无需对现有代码库进行重大修改。
2025-01-25 11:09:17
1079
原创 做事者的自我修炼
对于从事芯片行业,一门高度复杂和技术性很强的高科技行业,工程师需要有较强的逻辑思维能力,并且拥有结构化思维和结构化表达能力,这样有助于在复杂的电路和系统中梳理出头绪,快速做出合理的抉择。
2025-01-24 11:59:03
555
原创 ARM架构虚拟化原理
ARM架构虚拟化扩展(Virtualization Extension)是在2010年作为ARMv7架构的一部分引入的,它为虚拟化提供了架构支持。在此之前,ARM系统上的虚拟化解决方案都是基于半虚拟化(paravirtualization)的,并没有被广泛使用。不过随着ARM CPU的性能不断提高,并从智能手机和平板电脑等移动设备向传统服务器进军,人们对ARM虚拟化的兴趣也在增长,因为对ARM来说,支持虚拟化对它的生态建设起到很重要的作用。
2024-12-28 19:33:18
1022
原创 一文读懂虚拟化原理
本文旨在用最简单的方式描述虚拟化的本质和基本实现框架,任何复杂的虚拟机都是基于此基本原理上增补功能来的。只要大家心里有个虚拟机原理框架,我相信学习任何虚拟机都能很快入手,摆脱只见树木,不见森林的状态。
2024-12-07 15:37:46
1142
原创 虚拟化的三种方式
Virtualization(虚拟化)是让公开的虚拟资源等同于被虚拟化的底层物理资源。虚拟化在各个领域应用很广泛,不局限于计算机科学领域。
2024-11-23 21:13:31
582
原创 闲聊内存模型(memory model)
现在大多数多核芯片在硬件中支持共享内存,设计和评估一个正确的共享内存系统需要准确理解内存模型。不同CPU可能采用不同的内存模型,比如ARM和RISC-V的Related模型,Intel和AMD的TSO模型以及IBM的Power模型等等。尽管这些模型千奇百怪,各有优缺点,但我们只要抓住它们的本质,就可以轻松拿捏它们。不要太在意边边角角的点,不然很容易陷进去。
2024-11-06 20:39:00
1183
原创 一致性协议挂死(hang)分析
一致性协议(coherency protocol)挂死(hang)通常有三种情况:死锁(deadlock)、活锁(livelock)和饿死(starvation)。
2024-11-03 21:19:58
871
原创 RISC-V笔记——内存模型总结
RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),RVWMO内存模型是根据全局内存顺序(global memory order)定义的,全局内存顺序是所有harts产生的内存操作的总顺序。通常,多线程程序有许多不同的可能执行,每个执行都有自己对应的全局内存顺序。
2024-10-19 18:18:58
1399
原创 RISC-V笔记——内存模型公理
在RISC-V中,只有当存在一个全局内存顺序(global memory order)符合preserved program order,并且满足load value axiom、atomicity axiom和progress axiom时,RISC-V程序的执行才遵循RVWMO内存一致性模型。今天主要讲下load value公理、atomicity公理和progress公理
2024-10-19 16:25:13
846
原创 RISC-V笔记——Pipeline依赖
RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Pipeline Dependencies(Pipeline依赖)。
2024-10-18 20:19:11
533
原创 RISC-V笔记——显式同步
RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Explicit Synchronization(显示同步)。
2024-10-17 21:29:08
1334
原创 RISC-V笔记——重叠地址排序
今天主要记录下preserved program order(保留程序顺序)中的Overlapping-Address Orderings(重叠地址排序)。
2024-10-16 21:38:03
561
原创 RISC-V笔记——RVWMO基本体
RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),它是Release Consistency的扩展,因此,RVWMO的基本体类似于RC模型。
2024-10-15 21:46:27
929
原创 RISC-V笔记——语法依赖
RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),该模型旨在为架构师提供更高的灵活性,以构建高性能可拓展的设计,同时支持可控制的编程模型。
2024-10-12 20:36:51
883
原创 RISC-V笔记——基础
RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。
2024-10-09 21:13:26
1044
原创 如何写出更系统的验证检查器
芯片验证是为了发现芯片中的错误而执行的过程,它是一个破坏性的过程。有效激励灌入待测模块后,需要判断出不符合功能描述的行为。检查器(Checker)就是用于查看待测模块是否按照功能描述文档做出期望的行为,识别出所有的设计缺陷。
2024-10-07 11:35:45
1079
原创 如何写出更牛更系统的验证激励
芯片验证是为了发现芯片中的错误而执行的过程,它是一个破坏性的过程。完备的验证激励可以更有效地发现芯片错误,进而缩短验证周期。合格的验证激励必须能产生所有可能的验证场景(完备性),包括合法和非法的场景,并保持最大的可扩展性和可控性。
2024-10-04 20:47:21
1249
原创 讲个SystemVerilog disable语句的坑
记录个使用SystemVerilog disable语句时遇到的坑,这个坑有点反直觉,以至于我当时有点不信,觉得可能是EDA仿真工具的问题。后来查看了SystemVerilog手册和使用不同EDA工具进行验证,才慢慢接受了。结论是:SystemVerilog disable block_name或task时,会把hierarchy一致的block_name或task的线程都停掉。
2024-09-01 10:38:35
1144
原创 设计模式在芯片验证中的应用——状态
状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。
2024-08-17 19:27:21
559
原创 讲个SystemVerilog随机约束小坑
记录个在写SystemVerilog随机约束时遇到的一个小坑,如果没有认真去查看随机结果是否符合预期,还真不容易发现。
2024-07-06 21:45:14
529
2
原创 SystemVerilog Assertion精华知识
断言是对设计属性的描述:如果在仿真中检查的属性没有按照我们期望的方式运行,则断言失败;如果在仿真中出现了在设计中禁止发生的行为属性,则断言失败;
2024-06-22 17:05:31
1360
原创 芯片验证分享8 —— 代码审查2
大家好,我是谷公子,上节课给大家讲了代码审查中的代码正向检查,今天我们来讲代码审查的其他方法。今天介绍的检查方法有:代码反向检查、桌面检查、同行评审、可用性验证。
2024-06-16 20:14:13
231
原创 芯片验证分享7 —— 代码审查1
大家好,我是谷公子,前几节课给大家分享了如何设计激励,今天我们来如何进行代码审查。代码审查在查找错误方面非常有效,任何编程项目都需要它。
2024-06-16 13:23:11
507
原创 芯片验证分享6 —— 激励开发4
大家好,我是谷公子,上节课跟大家分享了黑盒技术中的等价类分析和边界值分析方法。我们这次来分享下黑盒设计中的其它技术。
2024-06-11 21:40:48
363
原创 SystemVerilog Interface Class的妙用
Interface Class是在SystemVerilog 2012版本中引入的,但目前在验证中几乎很少采用,大多数验证工程师要么不知道它,要么没有看到使用它的任何好处,这使得Interface Class成为一个未被充分使用和不被重视的特性。本文将举两个Interface Class的使用例子,在这些例子中,Interface Class提高了验证环境的灵活性和质量,同时进一步提高了其可维护性和可调试性。
2024-06-09 10:24:30
1437
1
原创 芯片验证分享5 —— 激励开发3
大家好,我是谷公子,上节课跟大家分享了黑盒技术中的等价类分析和边界值分析方法。我们这次来讲下黑盒设计中的其它技术。
2024-06-04 10:26:57
234
原创 芯片验证分享4 —— 激励开发2
大家好,我是谷公子,上节课跟大家分享了如何在芯片验证中开发出更有效的激励。这次我们继续来讲激励开发。一般来说,在所有的激励开发中效率最低的是漫无目的的随机激励,就是在所有可能的输入值中随机选取某个值来对芯片进行验证的过程。目前有三种常用的激励设计方法,分别是:黑盒设计、白盒设计和灰盒设计。
2024-06-04 10:24:49
351
ARMv9-A学习记录.pdf
2022-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人