UE蓝图 里的函数,编辑模式在Sequence里执行

在蓝图里创建CustomFunction ,把蓝图拖入Sequence ,添加事件 即可调用

如果需要在Sequence里K 蓝图里的变量,需要勾上向过场动画公开

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在UVM中,一个Driver可以执行一个或多个Sequence。Driver执行Sequence的方式是通过调用`seq_item_port`接口的`start_item()`方法来启动Sequence,然后通过调用`get_next_item()`方法来获取下一个Sequence item。一旦Driver获取了Sequence item,它就可以将该item转换为信号,然后将信号传递给DUT。 对于一个Driver来说,它可以执行多个Sequence。在UVM中,一个Sequence可以被多次执行,每次执行的结果可能不同,因此Driver可以多次调用Sequence。 以下是一个示例代码,演示了如何在UVM中实现Driver多次调用Sequence的方法: ```systemverilog class my_driver extends uvm_driver #(my_sequence_item); // Define sequence object my_sequence my_seq; // Define sequence library bit [31:0] seq_lib[$]; // Build the sequence library function void build_phase(uvm_phase phase); super.build_phase(phase); seq_lib.push_back(new("my_seq")); seq_lib.push_back(new("my_seq")); seq_lib.push_back(new("my_seq")); ... endfunction // Main execution function task run_phase(uvm_phase phase); my_sequence_item item; forever begin // Start a new sequence seq_item_port.start_item(item); // Select a sequence from the library int idx = $random(seq_lib.size()); my_seq = seq_lib[idx]; // Execute the selected sequence my_seq.randomize(item); repeat(my_seq.length()) begin seq_item_port.get_next_item(item); drive_item(item); end // End the sequence seq_item_port.finish_item(item); end endtask // Drive the sequence item to the DUT function void drive_item(my_sequence_item item); // Convert the sequence item to signals ... // Send the signals to the DUT ... endfunction endclass ``` 在这个示例代码中,`my_driver`继承自`uvm_driver`,定义了一个`my_sequence`对象和一个`seq_lib`数组,用于存储多个Sequence。 在`build_phase()`函数中,`seq_lib`数组被初始化为多个`my_sequence`对象。在`run_phase()`函数中,Driver会多次调用Sequence,并将Sequence转换为信号,然后将信号传递给DUT。 具体的实现方式是,Driver首先调用`seq_item_port.start_item()`方法来启动一个新的Sequence,然后从`seq_lib`数组中随机选择一个Sequence,并将该Sequence执行的结果保存到`my_seq`对象中。接着,Driver调用`my_seq.randomize()`方法来随机生成Sequence item,然后通过调用`seq_item_port.get_next_item()`方法来获取下一个Sequence item。一旦Driver获取了Sequence item,它就可以将该item转换为信号,然后将信号传递给DUT。 需要注意的是,这个示例代码中的`my_sequence`类需要继承自`uvm_sequence`,并且需要实现`body()`方法来定义Sequence的具体行为。此外,`my_sequence`类还需要定义一个`length()`方法来指定Sequence的长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值