1000 个定向 case,还是让 sequence 自己随机跑?
在验证回归中,我们经常需要覆盖大量场景。如果为每一个场景手写一个单独的 sequence 并创建对应的 test case,工作量巨大且维护困难。比如需要验证总线在各种读写混合、错误注入、随机延迟等组合下的行为,可能组合出成百上千个用例。
UVM 提供了一种更高效的方案:uvm_sequence_library。它像一个“序列容器”,将多个 sequence 注册进去,然后在运行时根据选择模式自动随机挑选要执行的 sequence。这样,我们只需启动一个 sequence library,就能在回归中自动运行多种激励组合,大大减少了手写 test case 的数量。
重点:sequence library 让回归测试从“手动列举”走向“自动随机”,是构建高效随机验证环境的重要工具。
sequence library 的组成与工作方式
什么是 uvm_sequence_library?
uvm_sequence_library #(REQ, RSP) 是一个特殊的 sequence,它本身不产生 transaction,而是作为其他 sequence 的容器和管理器。你可以通过 add_sequence() 方法将多个 uvm_sequence 注册到库中。当 library 被执行(即调用它的 start())时,它会根据设定的 selection_mode 自动选择一个注册的 sequence 来执行。
选择模式(selection_mode)
UVM 定义了以下几种选择模式:
UVM_SEQ_LIB_RAND:完全随机选择,每次执行 library 时从所有注册 sequence 中等概率挑选一个,允许连续选择同一个。UVM_SEQ_LIB_RANDC:随机循环选择,在一个循环内每个 sequence 恰好被选择一次(类似 random cyclic),避免重复直到所有都被选过。UVM_SEQ_LIB_ITEM:不选择 sequence 执行,而是将 library 本身产生的 item 直接发送出去(不


701

被折叠的 条评论
为什么被折叠?



