UVM知识之UVM序列

本文详细介绍了UVM框架中的序列(sequence)操作,包括uvm_sequence_item和uvm_sequence的使用,如创建、随机化和发送item,以及sequence与sequencer之间的交互。讨论了不同类型的sequence,如flat sequence和hierarchical sequence,并解析了sequencer的仲裁机制和通信流程。此外,还提到了virtual sequence和virtual sequencer的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在UVM中,激励的基本类型是uvm_sequence_item,激励由sequence产生,通过挂载的方式,将sequence产生的item发送到管道sequencer中,sequencer通过TLM端口的方式,将item发送给driver。
  1. uvm_sequence_item(uvm_object类)
  2. uvm_sequence(参数化的uvm_object类)
     发送item/seq的方法:
     (1) task body()
         create_item(bus_trans::get_type, m_sequencer, "req");
         实际上可以将他的行为拆分成创建和挂载两步:
         创建:采用factory机制来创建item,返回的是uvm_sequence_item类型句柄指向的子类的对象,要做一个句柄的转化
         挂载:将item挂载在m_sequencer上
         start_item(req);
         req.randomize();
         finish_item(req);
         get_response(rsp);(若item_done()有返回rsp)
     (2) 通过宏的定义发送item或者挂载seq,也是在task body中运行
         `uvm_do(item/seq)
         `uvm_do_with(item/seq)
         `uvm_do_on(seq)
         `uvm_do_on_with(seq)
         `uvm_do_on_with(seq)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值