一、相关名词:
- sequence item:driver和DUT互动的最小粒度。
- sequence:产生目标数量的
sequence item对象,也可产生多个sequence(层次化),并进行相应的随机化。 - sequencer:
sequence item会经过sequencer再流向driver。 - driver:必要时,
driver在消耗掉一个item后会将状态信息通过item对象返回sequencer,最终到达sequence一侧。 - 其它:
1)driver和sequencer都是uvm组件,其之间的通信通过TLM完成。
2)uvm_sequence_item和uvm_sequence则都是基于uvm_object,可以在任何阶段创建,且不作为层次关系(即无法在顶层进行配置)。object之间或者object和component之间通过uvm_event进行通信。
3)sequence一旦活动起来,它必须挂载到一个sequencer上,所以可以通过sequencer间接地获取顶层配置和更多信息。
4)数据传送机制采用的是get模式。
二、Sequence和Item
1.uvm_sequence_item
item通常具备控制类、负载类、配置类和调试类这些类型的数据成员。- 可根据需要将数据定义为
rand类型,通过`uvm_field_xxx的宏进行声明,便于uvm_object的基本数据方法自动实现。
2.uvm_sequence
- 扁平类(flat sequence):往往由细小的item实例构成,其中每个item可以容纳较多的时序内容,而不只是作为一次数据传输。
- 层次类(hierarchical sequence):可以包含其它
hierarchical sequence、flat sequence和sequence item
三、Sequencer和Driver
-
driver和sequencer之间的TLM通信采取了
get模式,由driver发起请求,从sequencer一端获得item,再由sequencer将其传递至driver。 -
相应的端口如下:一般只使用其中一种即可
uvm_seq_item_pull_port/imp。uvm_analysis_port可在monitor中使用,一对多的广播;而uvm_analysis_export由于连接至sequencer中的rsp_fifo(imp)所以端口类型为export。

-
端口支持的相关方法:
get_next_item、[function] item_done、try_next_item、wait_for_sequences、[function] put_response、[function] has_do_avaliable等 -
REQ与RSP类型的一致性

-
⭐sequence的body()主要完成如下任务:
1)通过方法create_item()创建request item对象
2)调用start_item()准备发送iterm
3)在完成发送item之前对item进行随机处理
4)调用finish_item()完成item发送
5)必要时从driver获取response item

-
⭐driver的run_phase()主要完成以下任务:

示例如下:

高层环境示例:


-
总结:

本文详细介绍了UVM(Universal Verification Methodology)中的序列机制,包括sequenceitem与sequence的概念及其使用方式,探讨了sequencer和driver的职责及它们之间的交互过程。此外还分析了不同类型的sequence及其应用场景。
1153

被折叠的 条评论
为什么被折叠?



