01
约束求解器概述
什么是约束求解器?为什么需要随机激励?约束求解在验证中的角色。
基础概念
02
SystemVerilog随机化基础
rand与randc关键字、随机化函数randomize()、约束块的概念。
SV语法随机化
03
简单约束与表达式
关系运算符约束、取值范围约束、权重分布约束(dist)。
约束dist
04
约束块的控制
constraint_mode()、rand_mode()、内嵌约束与外部约束。
控制模式
05
solve…before约束
解决约束求解顺序问题,避免求解冲突。
顺序冲突
06
条件约束
if-else约束、-> 蕴含操作符约束。
条件蕴含
07
foreach约束与动态数组
对动态数组、队列、关联数组进行随机化约束。
数组foreach
08
随机化类与对象
类的随机化、嵌套对象的随机化、随机化句柄。
OOP句柄
09
随机化序列与事务
基于事务的随机激励生成、sequence与item。
UVM序列
10
随机化覆盖率
功能覆盖率与随机化的关系、covergroup与cross。
覆盖率covergroup
11
约束求解器内部机制
回溯算法、BDD、SAT求解器简介。
算法原理
12
约束求解的性能问题
约束复杂度分析、求解时间优化技巧。
性能优化
13
随机化中的常见陷阱
约束冲突、不可解约束、求解器死循环。
陷阱调试
14
随机化调试技巧
打印随机值、使用$urandom、seed管理。
调试seed
15
SystemVerilog随机化函数
$urandom、$urandom_range、$random的区别。
函数系统函数
16
随机化与断言结合
使用assert控制随机化流程、随机化失败处理。
断言assert
17
随机化中的权重控制
dist操作符详解、:=与:/的区别。
权重dist
18
随机化中的唯一性约束
unique约束、防止重复值。
唯一unique
19
随机化中的软约束与硬约束
soft关键字、约束优先级。
软约束优先级
20
随机化中的静态约束
static constraint、类级别共享约束。
静态共享
21
随机化中的随机化回调
pre_randomize()与post_randomize()。
回调pre/post
22
随机化中的随机化禁用
rand_mode(0)与constraint_mode(0)实战。
禁用模式
23
随机化中的随机化数组
定长数组、动态数组、队列的随机化。
数组队列
24
随机化中的随机化字符串
随机生成字符串、字符约束。
字符串字符
25
随机化中的随机化枚举
枚举类型的随机化、枚举约束。
枚举enum
26
随机化中的随机化结构体
struct的随机化、packed与unpacked。
结构体packed
27
随机化中的随机化接口
interface中的随机化、modport约束。
接口modport
28
随机化中的随机化配置
使用随机化生成配置寄存器、field模式。
配置寄存器
29
随机化中的随机化异常
随机化错误处理、异常注入。
异常错误
30
综合实战:完整随机激励测试平台
构建一个完整的随机激励测试平台(UVM风格)。
UVM实战项目