Bootstrap

【数字IC验证】博客内容全览

【导读】:数字IC验证百宝箱涵盖博主在实际工作中常用的技能与工具,包括但不限于SV、UVM、Formal、脚本(perl/python/shell)及EDA工具快速上手使用等。无论你是刚踏入职场的验证小白,还是希望回顾基础寻找跳槽机会的从业者,本专栏都能为你提供实用的技术支持,在达成目标的路上,助你一臂之力。

“凡是能用钱买来的时间就是便宜的;凡是能用时间换来的注意力持续就是有价值的。”

(附上超链接的标题,即已完成更新)如有需要,尽快订阅,后期更新完毕后将进行价格调整!

01、SV

01.1、SV基础

旨在构建可以快速查阅的 SystemVerilog 基础知识库!


  • 【SystemVerilog基础】关于fork/join_none高频考点全面总结(一文全)
  • 【SystemVerilog基础】SV动态数组的方法有哪些?SV队列的方法有哪些?(笔试常考)
  • 【SystemVerilog基础】SystemVerilog Assertion 概述
  • 【SystemVerilog基础】多态和$cast动态类型转换继续深入(虚函数/虚任务理解)(virtual)
  • 【SystemVerilog基础】virtual interface 实用总结
  • 【SystemVerilog基础】automatic 引发的一些思考
  • 【SystemVerilog基础】fork…join_none 引发的一些思考(包含在for循环中使用fork…join_none的坑)
  • 【SystemVerilog基础】iff 限定符的使用指南
  • 【SystemVerilog基础】$size(xx, 2) 的探究
  • 【SystemVerilog基础】并发线程(fork…join/fork…join_any/fork…join_none)快速上手指南
  • 【SystemVerilog基础】SystemVerilog 与 Verilog 中赋值 1 的区别
  • 【SystemVerilog基础】约束中的等效表达式“==”
  • 【SystemVerilog基础】post_randomize 函数记录
  • 【SystemVerilog基础】OOP思想之三大基本特性概述(封装、继承、多态)
  • 【SystemVerilog基础】OOP思想之重载
  • 【SystemVerilog基础】数组中随机选取一个元素的方法
  • 【SystemVerilog基础】合并数组与非合并数组深入探究
  • 【SystemVerilog基础】类型转换探究
  • 【SystemVerilog基础】SV的位宽处理规则探究
  • 【SystemVerilog基础】数组方法中的圆括号省略问题
  • 【SystemVerilog基础】关联数组的一点探究
  • 【SystemVerilog基础】$display 函数深入探究
  • 【SystemVerilog基础】$timeformat 子程序使用说明
  • 【SystemVerilog基础】$isunknown 操作符使用说明
  • 【SystemVerilog基础】双状态数据类型与四状态数据类型总结
  • 【SystemVerilog基础】Verilog 和 SystemVerilog 中的基本数据类型深入探讨
  • 【SystemVerilog基础】SystemVerilog语法之逻辑等()、全等(=)和匹配等(==?)

01.2、从零开始学习 SystemVerilog

小白视角,逐个击破SystemVerilog的各个知识点。

  • 【从零开始学习 SystemVerilog】12.3、SystemVerilog 实战项目3(Adder)
  • 【从零开始学习 SystemVerilog】12.2、SystemVerilog 实战项目2
  • 【从零开始学习 SystemVerilog】12.1、SystemVerilog 实战项目1
  • 【从零开始学习 SystemVerilog】11.5、SystemVerilog 断言—— Assertion Time delay ##
  • 【从零开始学习 SystemVerilog】11.4、SystemVerilog 断言—— $rose, $fell, $stable
  • 【从零开始学习 SystemVerilog】11.3、SystemVerilog 断言—— Concurrent Assertions(并发断言)
  • 【从零开始学习 SystemVerilog】11.2、SystemVerilog 断言—— Immediate Assertions(立即断言)
  • 【从零开始学习 SystemVerilog】11.1、SystemVerilog 断言—— Assertions Introduction(断言概述)
  • 【从零开始学习 SystemVerilog】10.3、SystemVerilog 杂项—— Coverpoint Bins
  • 【从零开始学习 SystemVerilog】10.2、SystemVerilog 杂项—— Covergroup 和 Coverpoint
  • 【从零开始学习 SystemVerilog】10.1、SystemVerilog 杂项—— Functional Coverage(功能覆盖率)
  • 【从零开始学习 SystemVerilog】9.6、SystemVerilog 杂项—— Scope Resolution Operator(范围解析算子 ::)
  • 【从零开始学习 SystemVerilog】9.5、SystemVerilog 杂项—— file operations(文件操作)
  • 【从零开始学习 SystemVerilog】9.4、SystemVerilog 杂项—— Command Line Arguments(命令行参数)
  • 【从零开始学习 SystemVerilog】9.3、SystemVerilog 杂项—— Package
  • 【从零开始学习 SystemVerilog】9.2、SystemVerilog 杂项—— Dynamic Cast(动态转换)
  • 【从零开始学习 SystemVerilog】9.1、SystemVerilog 杂项—— Program Blocks(程序块)
  • 【从零开始学习 SystemVerilog】8.18、SystemVerilog 约束—— Random Weighted Case(随机加权情况)
  • 【从零开始学习 SystemVerilog】8.17、SystemVerilog 约束—— Disable Randomization(关闭随机)
  • 【从零开始学习 SystemVerilog】8.16、SystemVerilog 约束—— Disable Constraints(关闭约束)
  • 【从零开始学习 SystemVerilog】8.15、SystemVerilog 约束—— Soft Constraints(软约束)
  • 【从零开始学习 SystemVerilog】8.14、SystemVerilog 约束—— Inline Constraints(内联约束)
  • 【从零开始学习 SystemVerilog】8.13、SystemVerilog 约束—— pre_randomize & post_randomize
  • 【从零开始学习 SystemVerilog】8.12、SystemVerilog 约束—— Bus Protocol Constraints(总线协议约束)
  • 【从零开始学习 SystemVerilog】8.11、SystemVerilog 约束—— Practical Constraint Examples(实际约束示例)
  • 【从零开始学习 SystemVerilog】8.10、SystemVerilog 约束—— Static Constraints(静态约束)
  • 【从零开始学习 SystemVerilog】8.9、SystemVerilog 约束—— solve before
  • 【从零开始学习 SystemVerilog】8.8、SystemVerilog 约束—— foreach Constraint
  • 【从零开始学习 SystemVerilog】8.7、SystemVerilog 约束—— Implication Constraint(-> 和 if-else)
  • 【从零开始学习 SystemVerilog】8.6、SystemVerilog 约束—— inside constraint
  • 【从零开始学习 SystemVerilog】8.4、SystemVerilog 约束—— Array Randomization(数组随机化)
  • 【从零开始学习 SystemVerilog】8.3、SystemVerilog 约束—— Constraint Blocks(约束块)
  • 【从零开始学习 SystemVerilog】8.2、SystemVerilog 约束—— rand Variables(rand和randc)
  • 【从零开始学习 SystemVerilog】8.1、SystemVerilog 约束—— Constraints Introduction(约束概述)
  • 【从零开始学习 SystemVerilog】7.16、SystemVerilog 类—— Randomization(随机化)
  • 【从零开始学习 SystemVerilog】7.15、SystemVerilog 类—— Abstract Class(抽象类/纯方法)
  • 【从零开始学习 SystemVerilog】7.14、SystemVerilog 类—— local 访问限定符
  • 【从零开始学习 SystemVerilog】7.13、SystemVerilog 类—— extern 关键字
  • 【从零开始学习 SystemVerilog】7.12、SystemVerilog 类—— Parameterized Classes(参数化类)
  • 【从零开始学习 SystemVerilog】7.11、SystemVerilog 类—— Shallow/Deep Copy(浅拷贝、深拷贝)
  • 【从零开始学习 SystemVerilog】7.10、SystemVerilog 类—— Static Variables & Functions(静态变量和函数)
  • 【从零开始学习 SystemVerilog】7.9、SystemVerilog 类—— Virtual Methods
  • 【从零开始学习 SystemVerilog】7.8、SystemVerilog 类—— Polymorphism(多态)
  • 【从零开始学习 SystemVerilog】7.7、SystemVerilog 类—— Inheritance(继承)
  • 【从零开始学习 SystemVerilog】7.6、SystemVerilog 类—— Typedef Class
  • 【从零开始学习 SystemVerilog】7.5、SystemVerilog 类—— super 关键字
  • 【从零开始学习 SystemVerilog】7.4、SystemVerilog 类—— this 关键字
  • 【从零开始学习 SystemVerilog】7.3、SystemVerilog 类—— Class Constructor(类构造函数)
  • 【从零开始学习 SystemVerilog】7.2、SystemVerilog 类—— Class Handles 和 Objects(句柄和对象)
  • 【从零开始学习 SystemVerilog】7.1、SystemVerilog 类—— Class 概述
  • 【从零开始学习 SystemVerilog】6.6、SystemVerilog 接口—— Clocking Blocks(下)
  • 【从零开始学习 SystemVerilog】6.5、SystemVerilog 接口—— Clocking Blocks(上)
  • 【从零开始学习 SystemVerilog】6.4、SystemVerilog 接口—— Interface Modport
  • 【从零开始学习 SystemVerilog】6.3、SystemVerilog 接口—— Interface Bundles
  • 【从零开始学习 SystemVerilog】6.2、SystemVerilog 接口—— Interface 介绍
  • 【从零开始学习 SystemVerilog】6.1、SystemVerilog 接口—— Interface 概述
  • 【从零开始学习 SystemVerilog】5.3、SystemVerilog 通信—— Mailbox(邮箱)
  • 【从零开始学习 SystemVerilog】5.2、SystemVerilog 通信—— Semaphore(信号量)
  • 【从零开始学习 SystemVerilog】5.1、SystemVerilog 通信—— 进程间通信
  • 【从零开始学习 SystemVerilog】4.3、SystemVerilog 进程—— wait fork
  • 【从零开始学习 SystemVerilog】4.2、SystemVerilog 进程—— disable fork join
  • 【从零开始学习 SystemVerilog】4.1.3、SystemVerilog 进程—— fork join_none
  • 【从零开始学习 SystemVerilog】4.1.2、SystemVerilog 进程—— fork join_any
  • 【从零开始学习 SystemVerilog】4.1.1、SystemVerilog 进程—— fork join
  • 【从零开始学习 SystemVerilog】4.1、SystemVerilog 进程—— Threads(线程)
  • 【从零开始学习 SystemVerilog】3.8、SystemVerilog 控制流—— Tasks(任务)
  • 【从零开始学习 SystemVerilog】3.7、SystemVerilog 控制流—— Functions(函数)
  • 【从零开始学习 SystemVerilog】3.6、SystemVerilog 控制流—— Event(事件)
  • 【从零开始学习 SystemVerilog】3.5、SystemVerilog 控制流——阻塞(Blocking)与非阻塞(Non-Blocking)
  • 【从零开始学习 SystemVerilog】3.4、SystemVerilog 控制流—— case( ‘unique‘ 和 ‘priority‘)
  • 【从零开始学习 SystemVerilog】3.3、SystemVerilog 控制流—— if-else( ‘unique‘ 和 ‘priority‘)
  • 【从零开始学习 SystemVerilog】3.2、SystemVerilog 控制流—— break 和 continue
  • 【从零开始学习 SystemVerilog】3.1.5、SystemVerilog 控制流—— repeat 循环
  • 【从零开始学习 SystemVerilog】3.1.4、SystemVerilog 控制流—— forever 循环
  • 【从零开始学习 SystemVerilog】3.1.3、SystemVerilog 控制流—— for 循环
  • 【从零开始学习 SystemVerilog】3.1.2、SystemVerilog 控制流—— foreach 循环
  • 【从零开始学习 SystemVerilog】3.1.1、SystemVerilog 控制流—— while 和 do-while 循环
  • 【从零开始学习 SystemVerilog】3.1、SystemVerilog 控制流—— Loops(循环)
  • 【从零开始学习 SystemVerilog】2.14、SystemVerilog 数据类型—— typedef(用户自定义数据类型)
  • 【从零开始学习 SystemVerilog】2.13、SystemVerilog 数据类型—— Structure(结构体)
  • 【从零开始学习 SystemVerilog】2.12、SystemVerilog 数据类型—— Queue(队列)
  • 【从零开始学习 SystemVerilog】2.11、SystemVerilog 数据类型—— Array Manipulation(数组操作)
  • 【从零开始学习 SystemVerilog】2.10、SystemVerilog 数据类型—— Associative Array(关联数组)
  • 【从零开始学习 SystemVerilog】2.9、SystemVerilog 数据类型—— Dynamic Arrays(动态数组)
  • 【从零开始学习 SystemVerilog】2.8、SystemVerilog 数据类型—— Unpacked Arrays(非压缩数组)
  • 【从零开始学习 SystemVerilog】2.7、SystemVerilog 数据类型—— Packed Arrays(压缩数组)
  • 【从零开始学习 SystemVerilog】2.6、SystemVerilog 数据类型—— Arrays(数组)
  • 【从零开始学习 SystemVerilog】2.5、SystemVerilog 数据类型—— Enumeration(枚举)
  • 【从零开始学习 SystemVerilog】2.4、SystemVerilog 数据类型—— strings(字符串)
  • 【从零开始学习 SystemVerilog】2.3、SystemVerilog 数据类型—— integer 和 byte(有符号类型)
  • 【从零开始学习 SystemVerilog】2.2、SystemVerilog 数据类型—— logic 和 bit(新的数据类型)
  • 【从零开始学习 SystemVerilog】2.1、SystemVerilog 数据类型——概述
  • 【从零开始学习 SystemVerilog】1.2、SystemVerilog TestBench (SVTB)概述
  • 【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

02、UVM

02.1、UVM基础

旨在构建可以快速查阅的 UVM 基础知识库!

  • 【UVM基础】m_sequencer 和 p_sequencer 概念与区别(面试常问)
  • 【UVM基础】uvm_do 做了哪些事情?(面试常问)
  • 【UVM基础】CallBack机制快速上手指南
  • 【UVM基础】数据建模总结(内置函数权限管理、消息管理、参数化param)
  • 【UVM基础】sequence机制快速上手指南(数据激励的产生、配置方式)
  • 【UVM基础】config_db机制快速上手指南(接口传递、对象传递、调试)
  • 【UVM基础】phase机制快速上手指南(包括:只能在build_phase配置?为什么建议先配置再实例化?什么时候用super.xxx_phase?)
  • 【UVM基础】工厂(factory)机制快速上手指南
  • 【UVM基础】基础类结构图(uvm树、常用继承关系结构、部分继承组件源码)
  • 【UVM基础】set_id_info 使用介绍
  • 【UVM基础】Sequence Library 快速上手指南
  • 【UVM基础】虚序列器与虚序列(virtual sequencer与virtual sequence)快速上手指南
  • 【UVM基础】前门访问(FRONTDOOR)与后门访问(BACKDOOR)的基本概念
  • 【UVM基础】寄存器抽象层(RAL,Register Abstraction Layer)快速上手指南
  • 【UVM基础】UVM同步通信元件(uvm_event/uvm_barrier)快速上手指南
  • 【UVM基础】TLM1.0 通信机制(port/export/imp/analysis_xxx)快速上手指南
  • 【UVM基础】uvm_resource_db 使用介绍
  • 【UVM基础】+uvm_set_verbosity 使用介绍
  • 【UVM基础】phase中的一些重要特性
  • 【UVM基础】uvm_config_db的set与get函数快速上手指南
  • 【UVM基础】常用的三个phase作用:build_phase/connect_phase/run_phase
  • 【UVM基础】Makefile 中的 SEED 值设置
  • 【UVM基础】`uvm_info (“TRACE“, $sformatf(“%m“), UVM_HIGH);
  • 【UVM基础】两种启动 sequence 的方式
  • 【UVM基础】sequence 与 sequencer 理解
  • 【UVM基础】uvm_driver 成员变量 req 释义
  • 【UVM基础】TLM常用数据接发送与数据接收实例
  • 【UVM基础】UVM 的 connect_phase 执行顺序
  • 【UVM基础】是否只能在build_phase中执行实例化动作的探究(以及为什么建议在UVM中,先配置再实例化)
  • 【UVM基础】uvm_agent 中的 is_active 变量释义
  • 【UVM基础】Master Agent中(DUT输入端)设置一个monitor必要性解释
  • 【UVM基础】UVM 的 build_phase 执行顺序
  • 【UVM基础】UVM 树形组织结构
  • 【UVM基础】什么是transaction
  • 【UVM基础】uvm_info 宏介绍
  • 【UVM基础】UVM各个组件功能
  • 【UVM基础】仿真时间与运行时间

02.2、张强《UVM实战》环境搭建及笔记

张强《UVM实战》个人笔记,谨慎订阅。以实战为导向,逐步深入UVM验证平台的各个组件,掌握UVM验证平台搭建。

  • 【UVM实战】《UVM实战》重要知识点总结
  • 【UVM实战】第七章:UVM中的寄存器模型(3)后门访问与前门访问
  • 【UVM实战】第七章:UVM中的寄存器模型(2)简单的寄存器模型
  • 【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介
  • 【UVM实战】第五章:UVM验证平台的运行(2)objection机制
  • 【UVM实战】第五章:UVM验证平台的运行(1)phase机制(下)
  • 【UVM实战】第五章:UVM验证平台的运行(1)phase机制(上)
  • 【UVM实战】第三章:UVM基础(3)field automation机制
  • 【UVM实战】第三章:UVM基础(2)UVM的树形结构
  • 【UVM实战】第二章:一个简单的UVM验证平台(5)建造测试用例
  • 【UVM实战】第二章:一个简单的UVM验证平台(4)UVM 的终极大作:sequence
  • 【UVM实战】第二章:一个简单的UVM验证平台(3)为验证平台加入各个组件【时序解读;使用流操作符解包driver数据的代码;修正原书monitor数据的拼包错误】
  • 【UVM实战】第二章:一个简单的UVM验证平台(2)只有driver的验证平台【时序解读】
  • 【UVM实战】第二章:一个简单的UVM验证平台(1)验证平台组成
  • 【UVM实战】第一章:配置UVM环境(以VCS为例),跑通书上的例子(包括清理中间文件方法、使用DVE查看波形方法、命令执行原理探究)

02.3、从零开始学习 UVM

小白视角,逐个击破UVM的各个知识点。

  • 【从零开始学习 UVM】12.8、UVM RAL(续更) —— UVM RAL Model 实战项目(基于AXI总线的寄存器读写实例)
  • 【从零开始学习 UVM】12.7、UVM RAL(续更) —— UVM RAL模型全局声明和内置定义
  • 【从零开始学习 UVM】12.6、UVM RAL(续更) —— RAL Predictor
  • 【从零开始学习 UVM】12.5、UVM RAL(续更) —— RAL Adapter
  • 【从零开始学习 UVM】12.4、UVM RAL(续更) —— 更新镜像值、期望值的方法介绍【如:read/write/mirror/update/set/get/predict/reset】
  • 【从零开始学习 UVM】12.3、UVM RAL(续更) —— RAL Classes & Methods
  • 【从零开始学习 UVM】12.2、UVM RAL(续更) —— RAL Model 结构
  • 【从零开始学习 UVM】12.1、UVM RAL(续更) —— Register Abstraction Layer (RAL) Model概述
  • 【从零开始学习 UVM】11.5、UVM Register Layer —— 后门访问 实战项目(RAL实战,交通灯为例)
  • 【从零开始学习 UVM】11.4、UVM Register Layer —— UVM Register Model 实战项目(RAL实战,交通灯为例)
  • 【从零开始学习 UVM】11.3、UVM Register Layer —— UVM Register Environment
  • 【从零开始学习 UVM】11.2、UVM Register Layer —— UVM Register Model(RAL,Register Abstraction Layer,寄存器抽象层)概述
  • 【从零开始学习 UVM】11.1、UVM Register Layer —— Register Layer 概述
  • 【从零开始学习 UVM】10.11、UVM TLM —— 在 TLM 中使用 _decl 宏
  • 【从零开始学习 UVM】10.10、UVM TLM —— TLM Sockets
  • 【从零开始学习 UVM】10.9、UVM TLM —— TLM Analysis Port
  • 【从零开始学习 UVM】10.8、UVM TLM —— UVM TLM Example
  • 【从零开始学习 UVM】10.7、UVM TLM —— TLM Fifo [uvm_tlm_fifo]
  • 【从零开始学习 UVM】10.6、UVM TLM —— TLM Non-blocking Get Port
  • 【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port
  • 【从零开始学习 UVM】10.4、UVM TLM —— UVM TLM port -> Export -> Imp
  • 【从零开始学习 UVM】10.3、UVM TLM —— UVM TLM Nonblocking Put Port
  • 【从零开始学习 UVM】10.2、UVM TLM —— UVM TLM Blocking Put Port
  • 【从零开始学习 UVM】10.1、UVM TLM —— UVM TLM 概述
  • 【从零开始学习 UVM】9.3、UVM Config DB —— uvm_config_db 示例【文章最后的表格对于理解路径索引很重要】
  • 【从零开始学习 UVM】9.2、UVM Config DB —— UVM config database 详解【重要】
  • 【从零开始学习 UVM】9.1、UVM Config DB —— UVM Resource database 资源库详解
  • 【从零开始学习 UVM】8.2、Reporting Infrastructure —— uvm_printer 详解
  • 【从零开始学习 UVM】8.1、Reporting Infrastructure —— UVM Reporting 函数
  • 【从零开始学习 UVM】7.3、Driver Sequencer Handshake —— get() 和 put() 方法详解【了解即可】
  • 【从零开始学习 UVM】7.2、Driver Sequencer Handshake —— get_next_item() 方法详解【重要】
  • 【从零开始学习 UVM】7.1、Driver Sequencer Handshake —— Driver 与 Sequencer 的握手机制
  • 【从零开始学习 UVM】6.8、UVM 激励产生 —— UVM Sequence 仲裁详解
  • 【从零开始学习 UVM】6.7、UVM 激励产生 —— sequence library介绍【了解】
  • 【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要,搭配3.11】
  • 【从零开始学习 UVM】6.5、UVM 激励产生 —— uvm_send 宏详解【了解即可】
  • 【从零开始学习 UVM】6.4、UVM 激励产生 —— uvm_do 宏详解
  • 【从零开始学习 UVM】6.3、UVM 激励产生 —— start() 方法执行sequence详解
  • 【从零开始学习 UVM】6.2、UVM 激励产生 —— `uvm_do 序列宏解析
  • 【从零开始学习 UVM】6.1、UVM 激励产生 —— 创建和使用sequence
  • 【从零开始学习 UVM】5.1、UVM Factory —— UVM Factory Override(工厂覆盖)
  • 【从零开始学习 UVM】4.1、UVM Phases —— UVM Phases 介绍
  • 【从零开始学习 UVM】3.11、UVM TestBench架构 —— UVM Virtual Sequencer【重要,搭配6.6】
  • 【从零开始学习 UVM】3.10、UVM TestBench架构 —— UVM Subscriber [uvm_subscriber]
  • 【从零开始学习 UVM】3.9、UVM TestBench架构 —— UVM Scoreboard [uvm_scoreboard](write是接收到数据包时要采取的操作)
  • 【从零开始学习 UVM】3.8、UVM TestBench架构 —— UVM Agent [uvm_agent]
  • 【从零开始学习 UVM】3.7、UVM TestBench架构 —— UVM Monitor [uvm_monitor]
  • 【从零开始学习 UVM】3.6、UVM TestBench架构 —— UVM Sequence [uvm_sequence]
  • 【从零开始学习 UVM】3.5、UVM TestBench架构 —— UVM Sequencer [uvm_sequencer]
  • 【从零开始学习 UVM】3.4、UVM TestBench架构 —— UVM Driver [uvm_driver]
  • 【从零开始学习 UVM】3.3、UVM TestBench架构 —— UVM Environment [uvm_env]
  • 【从零开始学习 UVM】3.2、UVM TestBench架构 —— UVM Test [uvm_test]
  • 【从零开始学习 UVM】3.1、UVM TestBench架构 —— UVM Testbench Top
  • 【从零开始学习 UVM】2.6、UVM 基础功能 —— UVM Object Pack/Unpack
  • 【从零开始学习 UVM】2.5、UVM 基础功能 —— UVM Object Copy/Clone
  • 【从零开始学习 UVM】2.4、UVM 基础功能 —— UVM Object Copy/Clone
  • 【从零开始学习 UVM】2.3、UVM 基础功能 —— UVM Object Print
  • 【从零开始学习 UVM】2.2、UVM 基础功能 —— UVM utility & field macros(UVM实用宏和字段宏)
  • 【从零开始学习 UVM】2.1、UVM 基础功能 —— Base Class
  • 【从零开始学习 UVM】1.3、UVM 概述 —— UVM Introduction & Class Declarations
  • 【从零开始学习 UVM】1.2、UVM 概述 —— UVM Installation(UVM 安装)
  • 【从零开始学习 UVM】1.1、UVM 概述 —— Preface

03、设计基础

03.1、Verilog基础(含数电基础)

旨在构建可以快速查阅的 Verilog 基础知识库!


  • 【Verilog基础】一文快速上手 Verilog 基础知识(总结版)
  • 【Verilog基础】【计算机体系架构】CPU发生中断要做哪些事?什么是中断向量表?(面试常问)
  • 【Verilog基础】【计算机体系架构】堆和栈的区别(面试常问)
  • 【Verilog基础】【总线协议】AHB BURST传输可以提前终止吗?
  • 【Verilog基础】【计算机体系架构】ITCM和ICACHE对比(面试常问)
  • 【Verilog基础】【计算机体系结构】微码cache是什么?微码cache对CPU的前端的处理性能有提高么?
  • 【Verilog基础】【计算机体系结构】cache学习文章链接备忘
  • 【Verilog基础】【计算机体系结构】DMA数据搬移产生的cache一致性
  • 【Verilog基础】【计算机体系结构】cache读写操作
  • 【Verilog基础】【计算机体系结构】深入理解Cache一致性(针对多核SoC系统)
  • 【Verilog基础】【计算机体系结构】多核cache一致性
  • 【Verilog基础】【计算机体系结构】简单理解Cache一致性(面试常问)
  • 【Verilog基础】【计算机体系结构】cache的分配策略和更新策略
  • 【Verilog基础】【总线协议】AHB和AHB-Lite的区别?AMBA2.0和AMBA3.0的区别?目前常见的几种AMBA协议内容?
  • 【Verilog基础】“与/或/非”门级电路实现“2选1MUX”、“4选1MUX”、“8选1MUX”、“异或门”、“半加器”
  • 【Verilog基础】一些时序约束相关的面试真题
  • 【Verilog基础】【计算机体系架构】SoC启动流程(ARM启动流程)(面试常问)
  • 【Verilog基础】异步FIFO不用格雷码会影响FIFO功能吗?异步FIFO读写指针同步带来的延迟会导致设计出错吗?(面试常问)
  • 【Verilog基础】一文搞懂线性反馈移位寄存器(LFSR)
  • 【Verilog基础】关于芯片中信号串扰的理解
  • 【Verilog基础】PPA优化问题总结(含面积优化、速度优化)
  • 【Verilog基础】DFT(Design for Test)可测性设计的一些基础概念
  • 【Verilog基础】【总线协议】AXI、AHB、APB总线对比
  • 【Verilog基础】卡诺图化简要点总结
  • 【Verilog基础】【计算机体系架构】一文搞懂 Cache 缓存(cache line、标记Tag、组号/行号index,块内地址offset)(Write-through、Write-back)
  • 【Verilog基础】【计算机体系架构】处理器的流水线级数是否越深越好?
  • 【Verilog基础】关于Clock信号的一些概念总结(clock setup/hold、clock tree、clock skew、clock latency、clock transition…)
  • 【Verilog基础】十进制负数的八进制、十六进制表示
  • 【Verilog基础】用与非门、或非门构成或门、与门、非门
  • 【Verilog基础】时序分析之关键路径(Critical Path)优化(组合逻辑优化)(速度优化)
  • 【Verilog基础】一文搞懂 时钟门控(Clock-Gating) 电路
  • 【Verilog基础】一文搞懂 时钟无毛刺切换电路(Glitch free)【含代码实操、真题实战】
  • 【Verilog基础】野火FPGA新两段式有限状态机(FSM)理解 及 复杂可乐机实战(2)
  • 【Verilog基础】野火FPGA新两段式有限状态机(FSM)理解 及 简单可乐机实战(1)
  • 【Verilog基础】邸志雄老师有限状态机(FSM)课件重点理解
  • 【Verilog基础】常见的加法器电路总结(面试常考)(半加器、全加器、行波进位加法器RCA、超前进位加法器CLA)
  • 【Verilog基础】Verilog运算符优先级
  • 【Verilog基础】CMOS逻辑门实现基础功能(反相器/与非门/或非门/与门/或门)
  • 【Verilog基础】数字电路-逻辑式化简公式(附吸收律推导过程)
  • 【Verilog基础】2选1MUX实现基础逻辑功能(包括:反相器/与门/或门/与非门/或非门/异或门/同或门)(常考面试题:最少MUX实现异或门/同或门)
  • 【Verilog基础】AXI中常考面试点理解总结(包含Outstanding理解)
  • 【Verilog基础】一文搞懂 跨时钟域方法(CDC,Clock Domain Crossing)【含代码实操】
  • 【Verilog基础】CMOS电路基础知识以及几种常见的低功耗方法
  • 【Verilog基础】逻辑综合(6)Synopsys TCL语言
  • 【Verilog基础】逻辑综合(5)优化电路的常用方法
  • 【Verilog基础】逻辑综合(4)逻辑综合如何添加环境约束
  • 【Verilog基础】逻辑综合(3)逻辑综合中如何施加时序约束
  • 【Verilog基础】逻辑综合(2)标准工艺库描述信息
  • 【Verilog基础】逻辑综合(1)概述与基本知识入门
  • 【Verilog基础】RAM IP 核基础知识
  • 【Verilog基础】ROM IP 核基础知识
  • 【Verilog基础】RTL设计指导原则(面积与速度互换(模块复用)、乒乓操作、流水线操作)
  • 【Verilog基础】可综合风格——在 RTL 书写中如何考虑延迟、面积
  • 【Verilog基础】Verilog 电路设计需要注意的基本事项(区分训练有素工程师和初学者)
  • 【Verilog基础】边沿检测电路设计
  • 【Verilog基础】编写 RTL 代码时推荐的一些规范
  • 【Verilog基础】为什么状态机中多使用独热码,而不是二进制码或者格雷码?
  • 【Verilog基础】同步复位,异步释放 电路设计
  • 【Verilog基础】在不同时钟域之间如何安全地传递信号方法总结(4)FIFO 知识点总结(含最小FIFO深度计算)
  • 【Verilog基础】在不同时钟域之间如何安全地传递信号方法总结(3)多bit 控制/数据 信号跨时钟域传输(异步FIFO))
  • 【Verilog基础】在不同时钟域之间如何安全地传递信号方法总结(2)单比特跨时钟域之结绳法(快到慢)
  • 【Verilog基础】在不同时钟域之间如何安全地传递信号方法总结(1)三种同步器法总结(电平同步、边沿同步、脉冲同步)
  • 【Verilog基础】同一个时钟域与不同时钟域的概念区分
  • 【Verilog基础】同步电路和异步电路的对比学习
  • 【Verilog基础】CDC跨时钟域方法,典型异步电路设计之脉冲同步器(下)
  • 【Verilog基础】CDC跨时钟域方法,典型异步电路设计之脉冲同步器(上)
  • 【Verilog基础】如何进行时序分析(STA),个人理解的方法总结(含如何阅读时序报告)
  • 【Verilog基础】时序逻辑亚稳态 + 组合逻辑竞争冒险 总结
  • 【Verilog基础】分频器实现总结(注意体会为什么要使用 降频 实现分频)
  • 【Verilog基础】计数器实现总结(注意领悟 脉冲标志信号 flag 思想)
  • 【Verilog基础】锁存器(Latch)知识点总结
  • 【SystemVerilog基础】Verilog 和 SystemVerilog 中的基本数据类型深入探讨
  • 【Verilog基础】Verilog实现加扰器(Scrambler )与解扰器(Descrambler)
  • 【Verilog基础】RTL设计阶段的低功耗方案
  • 【Verilog基础】面试中常考的FIFO最小深度计算
  • 【Verilog基础】定点小数的乘法运算
  • 【Verilog基础】Verilog语法之标识符(命名规范)
  • 【Verilog基础】二进制码与格雷码之间的相互转换
  • 【Verilog基础】Verilog语法之case/casez/casex(附:case 何时被综合成串行结构)
  • 【Verilog基础】Verilog中的逻辑值
  • 【Verilog基础】一文搞懂有限状态机(FSM)
  • 【Verilog基础】阻塞赋值与非阻塞赋值原理及分析
  • 【Verilog基础】常用套路模板总结(持续更新)
  • 【Verilog基础】Verilog易错知识点总结(不断更新)
  • 【Verilog基础】Verilog语法之generate
  • 【Verilog基础】Verilog语法之force和release
  • 【Verilog基础】Verilog语法之标量(Scalar)与向量(Vector)
  • 【Verilog基础】Verilog语法之位选择运算符 “+:“ 和 “-:“
  • 【Verilog基础】Verilog中不可综合语句及可综合模型原则

03.2、校招Verilog篇刷题(含面试手撕代码)

  • (待更新)【校招Verilog手撕代码】(真题)VL16、单bit信号毛刺滤除电路设计
  • 【校招Verilog手撕代码】VL15、使用最少资源实现一个固定输入的乘法器
  • 【校招Verilog手撕代码】(真题)VL14、窄到宽位宽转换实例(串转并)(12bit转16bit,小端模式)(8bit转12bit)(8bit转16bit)(24bit转128bit)
  • 【校招Verilog手撕代码】(真题)VL13、画出代码对应的门级电路(要求使用与、或、非、D触发器实现)(含:异或门、半加器、4选1MUX)
  • (待更新)【校招Verilog手撕代码】VL12、巴克码检测器
  • (待更新)【校招Verilog手撕代码】VL11、统计1的个数
  • (待更新)【校招Verilog手撕代码】VL10、找出高位/低位最先出现1的位置
  • 【校招Verilog手撕代码】VL9、位宽转换器理论(窄到宽、宽到窄)
  • 【校招Verilog手撕代码】VL8、握手过程(ready-valid)
  • 【校招Verilog手撕代码】VL7、异步复位同步释放
  • 【校招Verilog手撕代码】VL6、CRC-8校验码
  • 【校招Verilog手撕代码】VL5、串并转换电路
  • 【校招Verilog手撕代码】VL4、4输入排序比较器
  • 【校招Verilog手撕代码】VL3、循环仲裁器设计(Round Robin Arbiter)
  • 【校招Verilog手撕代码】VL2、固定优先级仲裁器设计(Fixed Priority Arbiter)
  • 【校招Verilog手撕代码】VL1、众数统计电路
  • 【校招Verilog进阶挑战】 计数器篇:VL26 简易秒表
  • 【校招Verilog进阶挑战】 跨时钟域传输篇:VL24 多bit MUX同步器
  • 【校招Verilog进阶挑战】 跨时钟域传输篇:VL25 脉冲同步电路(快时钟域到慢时钟域)
  • 【校招Verilog进阶挑战】 跨时钟域传输篇:VL22 同步FIFO
  • 【校招Verilog进阶挑战】 跨时钟域传输篇:VL23 格雷码计数器
  • 【校招Verilog进阶挑战】 跨时钟域传输篇:VL21 异步FIFO
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL17 任意小数分频
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL18 无占空比要求的奇数分频
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL16 占空比50%的奇数分频
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL15 自动贩售机2
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL14 自动贩售机1(注意Moore机在输入完成后的时钟周期输出需要使用next_state判断)
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL13 时钟分频(偶数)
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL12 状态机-重叠序列检测
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL11 状态机-非重叠的序列检测
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL8 非整数倍数据位宽转换24to128
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL7 数据累加输出
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL6 数据串转并电路(体会:拼接晚数据一拍)
  • 【校招Verilog进阶挑战】 时序逻辑篇:VL5 信号发生器
  • 【校招Verilog进阶挑战】序列检测篇:VL4、输入序列不连续的序列检测(体会:拼接晚数据一拍)
  • 【校招Verilog进阶挑战】序列检测篇:VL3、不重叠序列检测(体会:拼接晚数据一拍)
  • 【校招Verilog进阶挑战】序列检测篇:VL2、含有无关项的序列检测
  • 【校招Verilog进阶挑战】序列检测篇:VL1、输入序列连续的序列检测
  • 【校招Verilog快速入门】时序逻辑篇:VL24、边沿检测
  • 【校招Verilog快速入门】时序逻辑篇:VL23、ROM的简单实现
  • 【校招Verilog快速入门】时序逻辑篇:VL22、根据状态转移图实现时序电路(FSM)
  • 【校招Verilog快速入门】时序逻辑篇:VL21、 根据状态转移表实现时序电路(FSM看这个就够了)
  • 【校招Verilog快速入门】组合逻辑篇:VL14、用优先编码器①实现键盘编码电路
  • 【校招Verilog快速入门】组合逻辑篇:VL13、优先编码器电路①
  • 【校招Verilog快速入门】组合逻辑篇:VL12、4bit超前进位加法器电路
  • 【校招Verilog快速入门】组合逻辑篇:VL11、4位数值比较器电路
  • 【校招Verilog快速入门】基础语法篇:VL10、使用函数实现数据大小端转换
  • 【校招Verilog快速入门】基础语法篇:VL9、使用子模块实现三输入数的大小比较
  • 【校招Verilog快速入门】基础语法篇:VL8、使用generate…for语句简化代码
  • 【校招Verilog快速入门】基础语法篇:VL7、求两个数的差值
  • 【校招Verilog快速入门】基础语法篇:VL6、多功能数据处理器
  • 【校招Verilog快速入门】基础语法篇:VL5、位拆分与运算
  • 【校招Verilog快速入门】基础语法篇:VL4、移位运算与乘法
  • 【校招Verilog快速入门】基础语法篇:VL3、奇偶校验
  • 【校招Verilog快速入门】基础语法篇:VL2、异步复位的串联T触发器
  • 【校招Verilog快速入门】基础语法篇:VL1、四选一多路器

04、数字IC验证快速入门

本专栏涵盖数字IC验证工程师必须掌握的核心理论和技能,旨在帮助读者快速入门。

  • 【数字IC验证快速入门】45、UVM项目实践之APB_SPI(13)UVM 验证方法学总结
  • 【数字IC验证快速入门】44、UVM项目实践之APB_SPI(12)寄存器抽象层(RAL,Register Abstraction Layer)
  • 【数字IC验证快速入门】43、UVM项目实践之APB_SPI(11)Virtual sequence & sequencer(虚序列和虚序列器)
  • 【数字IC验证快速入门】42、UVM项目实践之APB_SPI(10)Component Phase(组件执行顺序)
  • 【数字IC验证快速入门】41、UVM项目实践之APB_SPI(9)回调机制(CallBack)
  • 【数字IC验证快速入门】40、UVM项目实践之APB_SPI(8)计分板(Scoreboard)和覆盖率(Coverage)
  • 【数字IC验证快速入门】39、UVM项目实践之APB_SPI(7)TLM(Transaction Level Modeling)通信机制
  • 【数字IC验证快速入门】38、UVM项目实践之APB_SPI(6)工厂机制(factory)机制深入
  • 【数字IC验证快速入门】37、UVM项目实践之APB_SPI(5)配置机制(uvm_config_db)机制深入
  • 【数字IC验证快速入门】36、UVM项目实践之APB_SPI(4)APB_SPI 激励(Sequencer)产生【Sequence 机制】
  • 【数字IC验证快速入门】35、UVM项目实践之APB_SPI(3)APB_SPI 数据建模(Transaction Modeling)
  • 【数字IC验证快速入门】34、UVM项目实践之APB_SPI(2)APB协议重点回顾,要点提炼
  • 【数字IC验证快速入门】33、UVM项目实践之APB_SPI(1)SPI协议重点回顾,要点提炼
  • 【数字IC验证快速入门】32、UVM验证方法学(2)(UVM基础之工厂机制(Factory Mechanism))
  • 【数字IC验证快速入门】31、UVM验证方法学(1)(UVM基础之面向对象)
  • 【数字IC验证快速入门】30、SystemVerilog项目实践之AHB-SRAMC(10)(AHB-SRAMC 项目总结回顾)
  • 【数字IC验证快速入门】29、SystemVerilog项目实践之AHB-SRAMC(9)(AHB-SRAMC Debug 技巧)
  • 【数字IC验证快速入门】28、SystemVerilog项目实践之AHB-SRAMC(8)(AHB-SRAMC SVTB Code 下篇)
  • 【数字IC验证快速入门】27、SystemVerilog项目实践之AHB-SRAMC(7)(AHB-SRAMC SVTB Code 上篇)
  • 【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(AHB-SRAMC SVTB Overview)
  • 【数字IC验证快速入门】25、SystemVerilog项目实践之AHB-SRAMC(5)(APB协议基本要点)
  • 【数字IC验证快速入门】24、SystemVerilog项目实践之AHB-SRAMC(4)(AHB 重点回顾,要点提炼)
  • 【数字IC验证快速入门】23、SystemVerilog项目实践之AHB-SRAMC(3)(AHB继续深入)
  • 【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AHB协议基本要点)
  • 【数字IC验证快速入门】21、SystemVerilog项目实践之AHB-SRAMC(1)(AMBA总线介绍)
  • 【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动…内含实践练习)
  • 【数字IC验证快速入门】19、SystemVerilog学习之基本语法6(线程内部通信…内含实践练习)
  • 【数字IC验证快速入门】18、SystemVerilog学习之基本语法5(并发线程…内含实践练习)
  • 【数字IC验证快速入门】17、SystemVerilog学习之基本语法4(随机化Randomization)
  • 【数字IC验证快速入门】16、SystemVerilog学习之基本语法3(面向对象编程…内含实践练习)
  • 【数字IC验证快速入门】15、SystemVerilog学习之基本语法2(操作符、类型转换、循环、Task/Function…内含实践练习)
  • 【数字IC验证快速入门】14、SystemVerilog学习之基本语法1(数组、队列、结构体、枚举、字符串…内含实践练习)
  • 【数字IC验证快速入门】13、SystemVerilog interface 和 program 学习
  • 【数字IC验证快速入门】12、SystemVerilog TestBench(SVTB)入门
  • 【数字IC验证快速入门】11、Verilog TestBench(VTB)入门
  • 【数字IC验证快速入门】10、Verilog RTL设计必会的FIFO
  • 【数字IC验证快速入门】9、Verilog RTL设计必会的有限状态机(FSM)
  • 【数字IC验证快速入门】8、数字IC中的典型电路及其对应的Verilog描述方法
  • 【数字IC验证快速入门】7、验证岗位中必备的数字电路基础知识(含常见面试题)
  • 【数字IC验证快速入门】6、Questasim 快速上手使用(以全加器设计与验证为例)
  • 【数字IC验证快速入门】5、快速上手Linux下的文本编辑神器gvim
  • 【数字IC验证快速入门】4、熟悉数字IC验证中常用的Linux基本操作
  • 【数字IC验证快速入门】3、数字IC设计全流程介绍
  • 【数字IC验证快速入门】2、通过一个SoC项目实例,了解SoC的架构,初探数字系统设计流程
  • 【数字IC验证快速入门】1、浅谈数字IC验证,了解专栏内容,明确学习目标

05、数字IC验证进阶(脚本、EDA工具)

不想当将军的士兵不是好士兵!本专栏旨在帮助已经入门数字IC验证的开发人员,更进一步学习迈向验证总负责人(SoC级芯片验证)所必备的技能,包括但不限于新的工具、新的范式、新的思想等内容。


  • 【数字IC验证进阶】以一个实例,快速上手python脚本处理log的若干关键操作(#python、#正则表达式)
  • 【数字IC验证进阶】SoC系统验证和IP模块验证的区别及侧重点分析
  • 【数字IC验证进阶】VCS编译SV/UVM常见错误总结
  • 【数字IC验证进阶】VCS 工具的命令查询方法及常用命令释义
  • 【数字IC验证进阶】csh和bsh的区别总结
  • 【数字IC验证进阶】EDA 工具的帮助文档使用技巧
  • 【数字IC验证进阶】正则表达式(Regular Expression)快速入门指南

06、数字IC校招知识总结(常见面试问题总结)

以真题及面试为基础,总结各大IC公司笔试以及面试中的常考、常问知识点!(数字IC前端设计、验证都可使用)

  • 笔试及面试中常考知识点、手撕代码总结
  • 常见面试问题总结(七、常见总线协议篇)
  • 常见面试问题总结(六、项目篇)
  • 常见面试问题总结(五、验证策略及宏观思想篇)
  • 常见面试问题总结(四、UVM篇)
  • 常见面试问题总结(三、SystemVerilog篇)
  • 常见面试问题总结(二、数字电路与Verilog篇)
  • 常见面试问题总结(一、EDA工具及IC整体设计流程篇)

06、FPGA基础

旨在构建可以快速查阅的 FPGA 基础知识库!

  • 【FPGA基础】一文搞懂LUT查找表(附笔试/面试真题)
  • 【FPGA基础】一文带你快速了解FPGA内部资源(面试常问,属于概念性问题)
  • 【FPGA基础】Altera IP核实用小技巧(基于Quartus)
  • 【FPGA基础】DDR的基本原理介绍,DDR快速上手使用
  • 【FPGA基础】DDR3的前世今生(含SRAM、DRAM、SDRAM、Flash、EPROM、EEPROM概念介绍)
  • 【FPGA基础】嵌入式块RAM之 双端口RAM(dpram)上手
  • 【FPGA基础】基于Quartus Prime 17.1 的FPGA开发流程
  • 【FPGA基础】基于 Vivado 2017.4 的FPGA开发流程
  • 【FPGA基础】基于 Pango Design Suite(PDS) 的FPGA开发流程
  • 【FPGA基础】ModelSim 常见使用技巧
  • 【FPGA基础】Altera系列下载器USB Blaster的使用指南
  • 【FPGA基础】FPGA的BANK概念
  • 【FPGA基础】关于FPGA的IP核概念
  • 【FPGA基础】Quartus 17.1版的重大更新内容

07、笔试真题

07.1、华为海思

战略指南:

刷题:

07.2、其他公司

;