uvm之virtual sequence机制
来源:互联网 发布:淘宝店铺运营案例 编辑:程序博客网 时间:2024/06/05 09:02
- 背景
- 实现步骤
- 细节分析
背景
《uvm实战》书上介绍的uvm验证平台,往往只有一个in_agent
(即包括driver、in_monitor
和sequencer)。
然而,一个agent代表一种协议。
由sequence机制的简单理解,可以知道,1个sequencer负责多个sequence的顺序调度。如果出现多个driver或者多个sequencer,必然出现顺序执行的调度问题。
举个例子,一个IP,包括APB寄存器配置接口、AXIslaver数据接口、AXImaster数据接口。像这样的IP,搭建其验证平台,往往需要3个in_agent
;于是出现了3个driver、3个sequencer,另外还有N个sequence。(类似IP env环境,重用到Chip env环境里。)
virtual sequence机制,就是为了解决N个sequence、多个sequencer同时调度的冲突问题。
实现步骤
- 定义virtual sequencer,里面包含各个env里的sequencer类型的指针。
base_test
作为uvm_test_top
,即uvm树形结构的最顶层。负责chip_env和virtual sequencer的规划。- 实例化virtual sequencer;
- virtual sequencer与各env的sequencer连接在一起,具体实现是通过function connect_phase对virtual sequencer的指针,赋值为各个env的sequencer实例层次。
- 定义virtual sequence。
- 多个sequence的实例化
- 利用`uvm_do_on类型宏,实现指定某个sequencer(这个由vritual sequencer的`uvm_declare_p_sequencer宏和
p_sequencer
公共变量来指定)负责各个sequence的顺序调度。
注意:`uvm_do这样的宏,针对的处理对象,不仅仅是transaction,还可以处理sequence。
- 在my_case0类似的case定义中,使用uvm_config_db方式实现virtual sequencer和virtual sequence的default_sequence设置。
细节分析
- 在
base_test
类里,实例化virtual sequencer。并在其function connect_phase里实现virtual sequencer的指针(其中,virtual sequencer类里定义sequencer的指针)与各env(envA、envB、envC)的sequencer层次连接在一起。 - sequence里组织事务的产生。其中virtual sequence里组织的是sequence的顺序调度。所以,在uvm验证平台里,有一个现象,sequence类的参数类型是my_transaction;而virtual sequence类的定义是没有参数的。
- virtual sequence里负责start_phase的raise_objection和drop_objection,避免不必要的重复定义。这是uvm实战里约定的。其中drop_objection代码注释后,可以使验证平台不自动$finish。 4.
0 0
- uvm之virtual sequence机制
- UVM的sequence机制(四)
- UVM::sequence调用sequence_item
- 关于uvm report机制
- uvm之寄存器模型
- UVM factory机制实现原理
- UVM中Callback机制与pre_randomize()
- UVM的factory机制(二)
- UVM的config机制(五)
- virtual机制
- Virtual sequence 和test 启动的关系
- oracle sequence cache 机制
- Greenplum Sequence机制
- UVM---开篇
- UVM::hello_world
- UVM::config
- UVM::TLM
- UVM overwrite
- js常用函数
- Git使用之使用Xcode上传代码至GitHub
- FZU 2218 Simple String Problem (状压DP)
- IOS Label 字符串 宽高
- Myeclipse2016如何设置字体大小
- uvm之virtual sequence机制
- cloud培训笔记
- BZOJ3226 [Sdoi2008]校门外的区间
- 史上最全最强SpringMVC详细示例实战教程
- 【Java开发手册之MySql规约(二)】索引规约
- url地址访问不到,报404
- 如何屏蔽StatusBar和NavigationBar
- lua 数组
- Linx学习篇之~unit13练习