在UVM(Universal Verification Methodology)中,my_transaction生成随机激励,对激励的约束也在这里,my_transaction中声明的字段,就是发送出去的transaction中包含的信号;my_sequence创建my_transaction实例,启动my_transaction的随机化并将其发送给sequencer;sequencer对多个sequence(如果有的话)仲裁并发送给driver;driver将transaction中需要的信号拆成dut要求的格式并传给dut。以下是详细过程:
-
定义
my_transaction
:my_transaction
类通常继承自uvm_sequence_item
或更具体的某个UVM事务基类。- 在这个类中,使用
rand
关键字声明的字段表示需要随机化的信号。 - 这些随机化字段代表了将被传递给DUT(被测设备)的激励数据。
-
随机化过程:
- 在
my_sequence
的body
任务或其他相关方法中,通过调用create_item
、start_item
、finish_item
等UVM宏来创建和准备my_transaction
实例。 - 在这个过程中,
my_transaction
实例中的rand
字段会被UVM框架随机化。 - 随机化的过程可能受到在
my_transaction
类中定义的约束(constraints)的限制。
- 在
-
传递给
driver
:- 随机化后的
my_transaction
实例通过my_sequence
和my_sequencer
的协作被传递给driver
。 my_sequencer
作为桥梁,负责将事务从sequence
(即my_sequence
)传递给driver
。driver
通过其seq_item_port
接收来自sequencer
的事务,并对其进行处理(如驱动到DUT的接口上)。
- 随机化后的
-
driver
处理事务:driver
接收到事务后,会从中提取出需要传递给DUT的信号。- 这些信号通常对应于
my_transaction
中用rand
字段随机化的信号。 driver
根据这些信号生成相应的激励,并将其驱动到DUT的接口上。