目录
使用UVM sequence library(testcase中)
一、UVM sequence
控制和产生一系列的事务,并将事务发送给driver的一套机制,将事务的产生和驱动分离
1. 原理
![](https://img-blog.csdnimg.cn/6511dd29dc9e481bb96ae965565520ae.png)
2. 常用的`uvm_do_*宏系列
① `uvm_do(SEQ_OR_ITEM)
② `uvm_do_with(SEQ_OR_ITEM,CONSTRAINTS)
③ `uvm_do_on(SEQ_OR_ITEM,SEQR)
④ `uvm_do_on_with(SEQ_OR_ITEM,SEQR,CONSTRAINTS)
SEQ_OR_ITEM::所要产生的item或sequence的句柄
CONSTRAINTS:为item或sequence指定约束项
SEQR:为该item或sequence指定关联的sequencer
uvm_do_*宏分解
![](https://img-blog.csdnimg.cn/591eac5641374594932e145969776b28.png)
3. sequence仲裁机制
① `uvm_do_pri(SEQ_OR_ITEM, PRIORITY)
② `uvm_do_pri_with(SEQ_OR_ITEM, PRIORITY, PRIORITY, CONSTRAINTS)
③ `uvm_do_on_pri(SEQ_OR_ITEM, SEQR, PRIORITY)
设置仲裁算法:
例:m_sequencer.set_arbitration(算法参数)
fork
`uvm_do_pri(t_seq, 1000)
`uvm_do_pri(w_seq, 50)
`uvm_do(r_seq)//权重值为100
join
算法参数:
a) SEQ_ARB_FIFO
b) SEQ_ARB_WEIGHTED
c) SEQ_ARB_RANDOM
d) SEQ_ARB_STRICT_FIFO
e) SEQ_ARB_STRICT_RANDOM
f) SEQ_ARB_USER
二、UVM TLM
1. TLM--Transaction Level Modeling(事务级建模),TLM为组件之间通信建立专门的通信信道,避免通信出现混乱
2. 原理
① 端对端