UVM 虚拟序列 vsequence 与 vsequencer:SOC 验证的“调度艺术”
从单个 Agent 到多 Agent 协同,需要一位“总指挥” 在模块级验证中,一个 uvm_sequence 运行在对应 Agent 的 sequencer...
从单个 Agent 到多 Agent 协同,需要一位“总指挥” 在模块级验证中,一个 uvm_sequence 运行在对应 Agent 的 sequencer...
平台跑通后,老板的“小需求”来了 你刚刚搭建好一套稳定的验证平台,所有测试用例都跑得顺顺利利。这时老板走过来,轻描淡写地说:“帮我在每个写操作前打印一行 lo...
简单 FIFO 比对,复杂场景需要 Reorder 在任何验证环境中,激励产生后,我们都需要回答一个核心问题:DUT 的输出是否符合预期? Scoreboar...
激励之外,我们还需要“眼睛” 在 UVM 验证平台中,激励的产生、驱动和响应只是故事的一半。验证的本质是检查行为是否符合预期,这就要求平台能够观察 DUT 的...
reg_item 到总线 transaction,谁来做转换? 在 UVM RAL 中,对寄存器的读写操作被抽象为 uvm_reg_item,其内部包含一个或...
1. 引子:读个寄存器,为什么有两种方式? 假设你需要读取 DUT 内部一个状态寄存器的值,验证它是否在某个事件后被正确置位。方法一是发起一笔完整的总线读操作...
1. 当多个 Agent 需要“步调一致” 在模块级验证中,通常只有一个接口 Agent,比如一个 AHB Master Agent...
在 UVM 验证环境里,sequence 是“交易生成器”,但写好一个 sequence 之后,它究竟是怎么跑起来的?调用了 seq.start(sqr) 之后...
问题现象 在成功扫清所有编译障碍之后,一个关键的架构决策摆在了面前:uvm_callbacks::add(cb) 这一回调注册语句...
问题现象 在 UART 验证环境中,奇偶校验位(parity)通常不会被定义为 transaction 数据结构的字段...