如何解决start_item() 调用前后请求随机化的效果
我正在尝试在驱动程序的 run_phase 中使用信号量、fork-join 和 get()-put() 方法为简单的流水线模型实现 UVM 驱动程序。
如果我以特定方式对序列进行编码,驱动程序部分就可以正常工作。据我所知,正文任务的编码如下
Code1:
pkt = packet::type_id::create("pkt"); // Factory create the sequence item
for(int i=0;i<num_trans;i++) // Repeat as required
begin
assert(pkt.randomize()); // Randomize the sequence item
start_item(pkt); //Send the request to Driver.
finish_item(pkt); //Wait for the driver to finish the current item
以上样式,没有实现流水线,而且与第一个交易数据包对应的数据节拍丢失。在 start_item 之后调用随机化时,测试台按预期工作。
Code2:
pkt = packet::type_id::create("pkt");
for(int i=0;i<num_trans;i++)
begin
start_item(pkt);
assert(pkt.randomize());
finish_item(pkt);
我想知道编码风格 1 和 2 之间有什么区别
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。