7-uvm sequence 机制

本文深入解析UVM(Universal Verification Methodology)中的sequence机制,探讨其用于事务驱动和控制的原理,包括uvm_do_宏的使用、sequence嵌套与仲裁,以及如何获取driver响应。通过实例了解如何分离事务生产和驱动,提高测试效率。

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

uvm sequence 机制

什么是uvm sequence机制

  • 控制和产生一系列事务,并将事务发送给driver的一套机制。
  • 功能
  1. 控制;
  2. 产生;
  3. 发送
  • 消耗仿真时间,所以用在task phase ;

为什么使用uvm sequence

  • 将事务的产生和驱动分离开;
  • sequence产生激励;
  • driver驱动激励;

uvm sequence 机制的原理

三个部分:driver 、sequence 、sequencer
在这里插入图片描述

如何实现uvm sequence

  1. driver中sequence机制的实现
    在这里插入图片描述
  2. sequencer是比较复杂的,uvm已经实现了sequenceer的所有机制
  3. sequence中的实现
    在这里插入图片描述

常用的uvm_do_*宏

  • `uvm_do(seq or item)
    括号中是sequence的句柄或者所要产生的事务;
  • `uvm_do_with(seq or item, constraint)
    添加约束
  • `uvm_do_on(seq or item,seqr)
    为前面的sequence或item指定相关联的sequencer
  • `uvm_do_on_with(seq or item,seqr, constraint)

uvm_do_*宏系列的分解

在这里插入图片描述

在这里插入图片描述

  • 启动sequence的方法:
  1. 将所写sequence配置为default sequence ,自动调用sequence start 方法;
  2. 在组件中手动启动
    注释掉default sequence的配置语句;
    实例化sequence;
    raise_objection(this)
    start函数启动sequence;
    drop_objection(this);

sequence的嵌套

在这里插入图片描述

sequence的仲裁机制

在这里插入图片描述
在这里插入图片描述

  • 只有在被同一个sequencer启动多个sequence才需要仲裁;
  • 多个并行的sequence对应不同的sequencer则不需要仲裁;

sequence获取响应

  • sequence在driver返回完成标志之后获取从driver处来的响应;
  • driver需要在完成标志发送之前发送响应
  • 响应内容与req内容完全一致
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值