UVM:10.2.2 layer sequence 的示例

1.产生ip_transaction 的sequence 如下:

2.相应的sequencer 如下:

3.这个sequencer 要在my_agent 例化,此时,my_agent 中有两个sequencer:

4.要使用layer sequence,最关键是如何将ip_transaction 交给产生my_transaction 的sequence。在my_sequencer 中加入一个端口,并例化:

5.在my_agent 中连接:

6.在产生my_transaction 的sequence 中:

1)因为要使用sequencer 中的变量ip_tr_port,所以要使用declare_p_sequencer 宏声明sequencer。

2)无线循环,因为要时刻从ip_tr_port 得到新的ip_transaction。类似driver 的无限循环。所以不能在其中objection。

3)objection 要在ip_sequence 中控制。

7.启动这两个sequence:

8.可以使用default_sequence,前提是vsqr 中已经有成员变量指向相应的sequencer:

1)建立crc 错误时,只需要建立crc_sequence,并在my_sequencer 上启动。

2)构建checksum时,只需建立cks_err_seq,并在ip_sequencer 上启动。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 20:23:51

UVM:10.2.2 layer sequence 的示例的相关文章

UVM:10.2.3 layer sequence 与try_next_item

1.try_next_item 更加接近实际情况,用的更多: 两个有效的req 之间,总会打印item is null,说明driver 没有得到transaction: 2.ip_sequence 和my_sequence 没有任何延时,my_driver 理应一直得到有效的req,而不该出现得不到的情况,why? 时间槽的概念. 问题出在driver 中的try_next_item 调用过早. 调用uvm_wait_for_nba_region: 版权声明:本文为博主原创文章,未经博主允许不

UVM:10.2.1 复杂sequence 的简单化

1.之前的my_transaction 是mac 包,其中的pload 是ip 包,如下: 2.现在要求mac 中指定ip 地址等数据,需要约束mac 包跑咯爱的值: 要对ip_transaction 约束,需自己计算,容易错. 3.可简化: 可重用性不高. 4.加入crc错误,如下: . 只变了一行. 5.给DUT IP checksum 错误的包: 6.上面代码为不同的测试用例,但几乎相同. 1)要提高重用性,将ip 相关写成一个函数.mac 相关写成一个函数,放在base_sequence

10种软件滤波方法的示例程序

1.限幅滤波法(又称程序判断滤波法) #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } A.方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差&

2016 Multi-University Training Contest 10 || hdu 5860 Death Sequence(递推+单线约瑟夫问题)

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5860 题目大意:给你n个人排成一列编号,每次杀第一个人第i×k+1个人一直杀到没的杀.然后剩下的人重新编号从1-剩余的人数.按照上面的方式杀.问第几次杀的是谁. 分析 一轮过后和原来问题比只是人的编号发生变化,故可以转化为子问题求解,不妨设这n个人的编号是0~n-1,对于第i个人,如果i%k=0,那么这个人一定是第一轮出列的第i/k+1个人:如果i%k!=0,那么这个人下一轮的编号就是i

UVM:10.2.4 错峰技术的使用

1.假如又多一层layer sequence: 1)需要2个时间槽. 2)需要在增加一个umv_wait_for_nba_region,不好. 2.问题的关键是item_done 和try_next_item 在同一时刻被调用,导致了时间槽的竞争.如果能错开,这个问题就不是问题: 版权声明:本文为博主原创文章,未经博主允许不得转载.

iOS开发UI篇—CAlayer(自定义layer)

iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图. 绘制图形的步骤: (1)获取上下文 (2)绘制图形 (3)渲染图形 如果在layer上画东西,与上面的过程类似. 代码示例: 新建一个类,让该类继承自CALayer YYMylayer.m文件 1 // 2 // YYMylayer.m 3 // 05-自定义l

Oracle SEQUENCE 详细说明

ORACLE  SEQUENCE ORACLE没有自增数据类型,如需生成业务无关的主键列或惟一约束列,可以用sequence序列实现. CREATE SEQUENCE语句及参数介绍: 创建序列:需要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE [ schema. ]sequence [ { INCREMENT BY | START WITH } integer | { MAXVALUE integer | NOMAXVALUE

iOS开发——UIImageView的contentMode、裁剪和layer属性详解

在我们iOS开发过程中,UIImageView是一个非常常见的控件,但是我们未必会用的很溜,因为里面的有些属性不曾注意,或者很难理解.所以会对我们使用该控件带来麻烦,在布局UI过程中可能会造成意想不到的结果.这篇博客主要来讲解UIImageView中的contentMode属性以及和图片裁剪的关系,并且不得不提到就是所有UIView的重要属性:layer(CALayer).文中提到的所有·示例代码上传至 https://github.com/chenyufeng1991/ImageWithMod

CAlayer(自定义layer)

CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图. 绘制图形的步骤: (1)获取上下文 (2)绘制图形 (3)渲染图形 如果在layer上画东西,与上面的过程类似. 代码示例: 新建一个类,让该类继承自CALayer YYMylayer.m文件 8 9 #import "YYMylayer.h" 10 11 @imple