Hierarchical sequence区别于flat sequence的地方在于,它可以使用其他的sequence,当然还有item,这么做是为了创建更丰富的激励场景。通过层次嵌套的关系,可以使得hierarchical sequence可以同时使用其它hierarchical sequence、flat sequence和sequence item,这也就意味着,如果底层的sequence item和flat sequence的粒度得当,那么就可以...
UVM框架,将验证平台和激励分开,env以下属于平台部分,test和sequence属于激励,这样各司其职。我们可以将sequence_item 比喻成子弹,sequencer 类比成弹夹,UVM平台就是个枪。如图所示uvm_sequence 的类继承关系。 The sequence item is written by extending theuvm_sequence_item, uvm_sequence_item inherits from the uv...
从简而言,一个sequence包含了一些有序组织起来的item实例,考虑到item在创建后需要被随机化,sequence在声明时也需要预留一些可供外部随机化的变量,这些随机变量一部分是用来通过层级传递来控制item对象中的变量的,一部分也是用来对item对象之间加以组织和时序控制的。为了加以区分几种常见的sequence定义方式,我们在介绍后续...
2.1.uvm_sequence_item中get_name系列函数 (1)get_name()会打印出”jerry_is_good”; uvm_sequence_item中的get_name函数与uvm_component一样,打印”new()”时候传入的字符串; (2)get_full_name()会打印出”jerry_is_good”;对于uvm_sequence_item, get_full_name()与get_name()一样!因为它是不作为UV...
uvm_object是一分子,用这个分子可以搭建成许许多多的东西,如既可以搭建成动物,还可以搭建成植物,更加可以搭建成没有生命意识的岩石,空气等。uvm_component就是由uvm_object搭建成的一种高级有生命体或者无生命体,而sequence_item则是由其搭建成的血液或者其他,它流通在各个(uvm_component)之间,sequence则是众多sequenc...
这里的sequence值的是类uvm_sequence,而item指的是uvm_sequence_item,为了文章的简洁,我们称之为sequence和item。对于激励的生成和场景控制,是由sequence来编织的,而对于激励所需要的具体数据和控制要求,则是从item中的成员数据得来的。 Sequence Item 在上一节《新手上路》中,我们已经提出item是基于uvm_object,这...
uvm_sequence, uvm_driver 的源码里声明了req,rsp变量,所以扩展的seq和drv里, `uvm_do系列宏里和drv的seq_item_port的get_next_item 的参数可以用req。 drv_src.png seq_src.png 例子中给出了两种启动seq的方式,见两段/* */注释之间的代码 第一种通过uvm_config_db ...
/sequence_item/sequence/sequencer 这几个东西对刚接触的人来说比较绕,刚开始看这个部分的时候我头都是大的,满屏幕的sequence sequencer 还有base,傻傻分不清楚,后来想了想,只要把sequence_base跟sequence理解成一个整体,把sequencer_base和sequencer理解成一个整体就好了。
uvm_sequence_item是一个uvm_object,它包含实现协议和与DUT通信所需的数据字段。uvm_driver负责将sequence_item转换为信号级接口上的“pin wiggle”,以向DUT发送或从DUT接收数据。sequence_item由一个或多个uvm_sequence对象提供,这些对象在transaction级定义激励,并在agent的uvm_sequencer组件上执行。sequencer负责执行、...
在传输过程中我们可以用`uvm_do_prio_with来赋予优先级;uvm_sequencer除了优先级的判定,还有锁定功能,两个方法:lock(),grab();lock()是当某一个sequence中的item拿到sequencer的权限之后,必须等该sequence使用unlock()才将权限还回去,一般sequence用来限制住权限,等自己的所有item传输完毕再unlock();而grab()则是只...