uvm seed 用法
时间: 2023-12-06 22:04:36 浏览: 299
在 UVM 中,seed 是用于随机化测试的一种方法。在 UVM 中,我们可以使用 `uvm_random_stimulus` 类来生成随机化测试的刺激。使用 seed 可以确保每次运行测试时生成相同的随机化测试序列,以便于调试和重现问题。
seed 的使用方法如下:
1. 在 testbench 中实例化一个随机数发生器,例如 `uvm_random_stimulus`。
2. 在 `run_test()` 方法中设置 `uvm_config_db`,将 seed 值传递给 `uvm_random_stimulus`。
```verilog
virtual function void run_test();
uvm_config_db#(int)::set(null, "uvm_test_top.env.agent.random_stimulus", "seed", 1234);
// ...
endfunction
```
3. 在 `uvm_random_stimulus` 中设置 seed 值。
```verilog
class uvm_random_stimulus extends uvm_reg_sequence;
// ...
`uvm_object_utils(uvm_random_stimulus)
function new(string name="uvm_random_stimulus");
super.new(name);
if(!uvm_config_db#(int)::get(null, "", "seed", seed))
seed = $urandom();
endfunction
// ...
endclass
```
在上面的示例中,如果 `uvm_config_db` 中未设置 seed,则使用 `$urandom()` 生成一个随机种子。
有了 seed,每次运行测试时都会生成相同的随机化测试序列。这对于调试和重现问题非常有用。
阅读全文