sequence item是每一次driver与DUT互动的最小粒度内容,在sequence与driver之间起到桥梁作用的是sequencer,sequencer与driver均是component组件,它们之间的通信也是通过TLM端口实现的。UVM序列的连接传送如下图所示: sequence对象自身会产生目标数量的sequence item对象。借助于SV的随机化和sequence item对随机化的支持...
内容sequence概述 uvm_sequence_item - 数据建模 uvm_sequence - 产生数据 uvm_squencer - 将产生的数据给到driver uvm_driver - 数据驱动给dut sequencer是uvm组件,一个sequencer可以调用多个sequen
另外,UVM类库还提供了uvm_do、uvm_do_with、uvm_do_pri、uvm_do_pri_with等宏用来“自动”实例化、随机化和发送sequence item。不过我仍然觉得start_item()和finish_item()已经足够简单和直观了,那些宏在编译阶段实际上也是展开成对start_item()和fini...
uvm_component派生自uvm_object,但是uvm_component有两大特性是uvm_object所没有的,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点 除了driver、monitor、agent、model、scoreboard、env、test之外的几乎所有的类,本质上都是uvm_object,如sequence、sequence_item、transaction、confi...
01 Sequence重要成员和方法 uvm_sequence派生自uvm_sequence_item,它有一个重要的任务方法body()和两个重要的成员变量m_sequencer和p_sequencer后面会介绍。 body() 任务方法body()是sequence作为测试序列的主体部分,我们需要在body()方法中定义该sequence的功能和行为。
一旦定义了env,uvm_test将例化、配置并构建env,包括自定义整个testbench的关键方面,包括选择在env中使用的组件的变化。选择UVM sequences在后台运行或是作为test的主要部分。定义testbench上的env、sub_env(如果有)和agent的config object。 sequence包括验证环境执行的主体sequence以及一些用于响应DUT的挂在后台待调用的...
一个flat sequence往往由细小的sequence item群落构成,在此之上sequence中还有更多的信息来完备它自身需要实现的激励场景。一般对于一个flat sequence而言,它里面包含的信息有: sequence item以及相关的constraint用来关联生成的item之间的关系,从而完善出一个flat sequence的时序形态。
Sequence Item 在上一节《新手上路》中,我们已经提出item是基于uvm_object,这表明了它具备UVM核心基类所必要的数据操作方法,例如copy、clone、compare、record等,这里我们不再做赘述。读者需要了解到的是,通常对于一个item,应该有什么用途的数据成员被定义在item中呢?我们可以将它们划分下如下几类: ...
uvm_component_item和uvm_sequence都是基于uvm_object,它们不同于uvm_component只应当在build阶段作为UVM环境进行创建和配置,而是可以在任何阶段创建。 由于无法判定环境在run阶段什么时间点会创建sequence和将其产生的sequence item 挂载(attach)到sequencer上面,所以无法通过UVM环境结构或者phase机制来识别sequence的运行阶段...
一个flat sequence往往由细小的sequence item群落构成,在此之上sequence中还有更多的信息来完备它自身需要实现的激励场景。一般对于一个flat sequence而言,它里面包含的信息有: sequence item以及相关的constraint用来关联生成的item之间的关系,从而完善出一个flat sequence的时序形态。