文章目录
uvm sequence 机制
什么是uvm sequence机制
- 控制和产生一系列事务,并将事务发送给driver的一套机制。
- 功能
- 控制;
- 产生;
- 发送
- 消耗仿真时间,所以用在task phase ;
为什么使用uvm sequence
- 将事务的产生和驱动分离开;
- sequence产生激励;
- driver驱动激励;
uvm sequence 机制的原理
三个部分:driver 、sequence 、sequencer
如何实现uvm sequence
- driver中sequence机制的实现
- sequencer是比较复杂的,uvm已经实现了sequenceer的所有机制
- 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的方法:
- 将所写sequence配置为default sequence ,自动调用sequence start 方法;
- 在组件中手动启动
注释掉default sequence的配置语句;
实例化sequence;
raise_objection(this)
start函数启动sequence;
drop_objection(this);
sequence的嵌套
sequence的仲裁机制
- 只有在被同一个sequencer启动多个sequence才需要仲裁;
- 多个并行的sequence对应不同的sequencer则不需要仲裁;
sequence获取响应
- sequence在driver返回完成标志之后获取从driver处来的响应;
- driver需要在完成标志发送之前发送响应
- 响应内容与req内容完全一致