5.2vseq&vsqr-vseq&vsqr的作用

 注:api_seq,work seq的详细解释可以查看uvm cookbook;

1. 什么情况下使用virtual sequencer?

(1) 只有一个驱动agent,不存在激励协调的需求,不需要virtual sequencer;

(2) 存在多个驱动agent,但多个激励之间没有协调关系, 不需要virtual sequencer;

(3) 存在多个驱动agent,而且多个激励之间存在协调关系,需要virtual sequencer.

 

2. virtual sequencer与virtual sequence的作用

2.1 virtual sequencer的三个属性:

(1) virtual sequencer控制其他的sequencer;

(2) virtual sequencer不与任何driver相连,driver相连的是virtual sequencer的成员变量-真实的sequencer;

(3) virtual sequencer本身不处理item,在定义时无需指明要发送的transaction数据类型.

2.2 virtual sequence的作用

(1) 协调subsequence的执行.它本身不发送transaction,只是控制其他sequence,起统一调度的作用(所以 virtual sequence在定义时也不需要指明要发送的数据类型).

(2) 为了使用virtual sequence,一般需要一个virtual sequencer; virtual sequencer里面包含指向其它真实sequencer的指针;

:sequence之间的简单同步可以通过全局事件实现(不推荐);实现sequence之间同步的最好的方式是virtual sequence.

 

推荐这些文章:

5.4vseq&vsqr-vsqr的实现与特点

1.vsqr的实现与示例
(1) virtual sequencer派生于uvm_sequencer. 通常情况下, virtual sequencer包含子sequencer的指针;
(2) virtual sequencer不和任何driver联系,并且本身不处理data item;

2.vsqr的特点
(1) virtual sequencer与其他普通sequencer的区别在于virtual sequencer没有指定具体的transaction类型. 因为virtual sequencer会执行多种类型的transaction,这里派生时...

seq&&seqr&&driver源码分析

在UVM的框架中,我们经常看到sequence的body()函数中,经常有`uvm_do这个宏,其实这个宏里面就包含了跟driver的交互所有细节,本章节就从uvm_do说起。

`uvm_do相关的宏

本质上就是uvm_do_on_pri_with()

uvm_do(args): args可以为sequence也可以为uvm_sequence_item,当args时sequence的时候,也就是https://www.cnblogs.com/xuqing125/p/15909359.html所讲的第三种方式。本章重点来看args是uvm_sequence_item的时候。

cre...

5.3vseq&vsqr-vseq的构建与启动

1.vseq的构建

1.1 vseq_base
(1) 由于所有的virtual sequence都需要访问定义于virtual sequencer中的sub-sequencer句柄. 所以virtual sequence需要使用`uvm_declare_p_sequencer宏.
(2) 由于每一个virtual sequence都需要执行这些步骤,所以推荐将这部分代码放到virtual sequence base class内.
(3) vseq_base示例

1.2 基于vseq_base创建vseq

 

1.3 vseq示例...

6.6seqr&driver-p_sequencer

1.为什么需要p_sequencer?
(1) 假设启动sequence(类型为my_sequence)所对应sequencer的类型为my_sequencer. 如果在sequence内想要得到my_sequencer中某些变量的值,不能直接使用m_sequencer.
因为m_sequencer是uvm_sequencer_base类型的(uvm_sequencer_base派生于uvm_component),而不是启动sequence所用的sequencer的类型;
(2) my_sequencer(派生于uvm_sequencer)的继承关系图
  &n...

6.7seqr&driver-sqr.stop_sequences() & seq.kill();

补充:下图源于uvm cookbook;

1.sqr.stop_sequences的影响
注:调用sequencer.stop_sequences后,由该sqr启动的sequence的body task虽然没有执行完,但依然会退出该sequence的body task???
确实会这样!!!
2.sqr.stop_sequences源码

 
 
 
 

原文链接:https://www.cnblogs.com/csjt/p/15417106.html...

[CU]6.5seqr&driver-m_sequencer

1.m_sequencer
(1) 所有的sequence都有一个m_sequencer句柄.

1 virtual class uvm_sequence #(type REQ=uvm_sequence_item, type RSP=REQ) extends uvm_sequence_base;
2
3 class uvm_sequence_base extends uvm_sequence_item;
4
5 class uvm_sequence_item extends uvm_transaction;
6 ...
7 protected uvm_s...

4.1使用rsp-seq & response & response相关部分uvm源码

1.seq对response的使用
(1)sequence机制中不仅提供了sequence->sequencer->driver的数据传输,还可以根据driver对transaction的反应来决定接下来要发送的transaction.
(2) response机制的原理是driver将rsp推送到sequencer,而sequencer内部维持一个队列,当有新的response进入时,就推入此队列. 队列的大小有效,如果driver中处理完每个transaction后,都发送一个response,而sequence中又没能及时get_response, sequenc...

js数据类型详解&&手动实现数据类型检测

js数据类型:
基础数据类型:string,number,boolean,null,undefined,null,symbol(es6新增的数据类型)
引用数据类型:Object(Function,Math,RegExp,Array,Date)
基础数据类型保存在栈内存中,在引用或拷贝时,会创建一个完全相等的变量
引用数据类型保存在堆内存中,存储的时一个地址,当被引用或拷贝时,会创建一个引用,多个引用指向相同的内存地址,当改变一个内存地址时,所有的引用都会发生变化
对于数据类型的检测:
1.typeof: typeof可以检测基础数据,对于基础数据类型可以进行判断,其中对于null会判断为o...

6.1sqr&driver-sqr简介及其基类

1.sqr简介

 
 

2.sqr基类
2.1 uvm_sequencer_base

(1) start_phase_sequence

 
 
 
 
 
(2) wait_for_item_done

(3) stop_sequences

2.2 uvm_sequencer_param_base #(REQ,RSP)

2.3 uvm_sequencer #(REQ,RSP)
 
 

原文链接:https://www.cnblogs.com/csjt...

三次握手&四次挥手

三次握手

A:能听到我说话吗?
B:我能听到你,你可以听到我吗?
A:可以听到,有事请讲。

换个易于理解的视角来看为什么要3次握手。
客户端和服务端通信前要进行连接,“3次握手”的作用就是双方都能明确自己和对方的收、发能力是正常的。

第一次握手:客户端发送网络包,服务端收到了。

这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。

第二次握手:服务端发包,客户端收到了。

这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。 从客户端的视角来看,我接到了服务端发送过来的响应数据包,说明服务端接收到了我在第一次握手时发送的网络包...

文章标题:5.2vseq&vsqr-vseq&vsqr的作用
文章链接:https://www.dianjilingqu.com/51375.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>