8 UVM序列2---sequencer&sequence、sequencer的层次化

本文详细介绍了UVM中的Sequencer和Sequence的交互,包括sequence的item发送、相关宏的使用、sequencer的仲裁机制以及锁定机制。此外,还探讨了Sequence的层次化设计,包括Hierarchical Sequence、Virtual Sequence和Layering Sequence的概念与特点。
摘要由CSDN通过智能技术生成

目录​​​​​​​

1 sequencer和sequence

sequence和item的发送

发送序列的相关宏 

sequencer仲裁机制

Sequencer的锁定机制

2 sequence的层次化

Hierarchical Sequcence

Virtual Sequence

Layering Sequence


1 sequencer和sequence

sequence和item的发送

sequence挂载到sequencer上可以使用方法也可使用`uvm_do宏来实现,但根本的基础还是相应方法。先看用方法实现的实例,主要使用了两种方法:uvm_sequence::start和start_item()

class bus_trans etends uvm_sequence_item;
  rand int data;
  `uvm_object_utils_begin(bus_trans)
    `uvm_field_int(data,UVM_ALL_ON)
  `uvm_object_utils_end
    ...
endclass

class child-seq extends uvm_sequence;
  `uvm_object_utils(child_seq)
  ...
  task body();
    uvm_sequence_item tmp;
    bus_trans req;

    tmp = create_item(bus_trans::get_type(),m_sequencer,"req");
    `void($cast(req,tmp));
    strart_item(req);
    req.randomize with {data ==10};
    finish_item(req);
  ebdtask
endclass

class top_seq extends uvm_sequence;
  `uvm_object_utils(top_seq)
  ...
  task body();
    uvm_sequence_item tmp;
    child_seq cseq;
    bus_trans req;
    cseq = child_seq::typy_id::create("cseq");
    tem = create_item(bus_trans::get_type(),m_sequencer,"req");
    cseq.start(m_sequencer,this); //将sequence挂载到sequencer上
    `void($cast(req,tmp));
    start_item(req);
    req.randomize with {data==20};
    finish_item(req);
  endtask
endtask

方法一针对sequence挂载到相应sequencer中uvm_sequence::start(sequecer 句柄”,“上层sequence”,”优先级“,“指定pre_body()和post_body()执行次序”);。

使用技巧:m_sequencer是sequence中的成员变量,指向执行当前sequence的sequencer句柄;没有上层sequence则省略第2项参数。

例中在top_sequence中例化的cseq.start

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值