uvm_do的用法
时间: 2023-08-25 20:04:32 浏览: 107
UVM学习记录.docx
`uvm_do` 是 UVM 提供的一个宏,用于在 UVM testbench 中执行 sequence 或 sequence item。它的语法如下:
```systemverilog
uvm_do(sequence_or_item_handle, sequence_or_item_name [, parent_sequence_handle])
```
其中:
- `sequence_or_item_handle`:要执行的 sequence 或 sequence item 的句柄。
- `sequence_or_item_name`:要执行的 sequence 或 sequence item 的名称。
- `parent_sequence_handle`(可选):如果要执行的是 sequence item,需要指定它所属的 sequence 的句柄。
`uvm_do` 的执行流程如下:
1. 如果 `sequence_or_item_handle` 不为空,则使用 `sequence_or_item_handle` 执行 sequence 或 sequence item。
2. 否则,如果 `parent_sequence_handle` 不为空,则在 `parent_sequence_handle` 的作用域中查找名称为 `sequence_or_item_name` 的 sequence item 并执行它。
3. 否则,如果 `parent_sequence_handle` 为空,则在当前作用域中查找名称为 `sequence_or_item_name` 的 sequence item 并执行它。
下面是一个使用 `uvm_do` 执行 sequence item 的例子:
```systemverilog
my_sequence my_seq;
my_sequence_item my_item;
uvm_do(my_item, "my_item_name", my_seq);
```
这里,我们要执行的是 `my_seq` 中名为 `my_item_name` 的 sequence item。因此,我们需要指定 `my_seq` 的句柄作为 `parent_sequence_handle` 参数。如果要执行的是 sequence,则不需要指定 `parent_sequence_handle`。
阅读全文