UVM中Callback机制与pre_randomize()
来源:互联网 发布:淘宝 电费交不了了 编辑:程序博客网 时间:2024/05/16 03:20
Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口。可以在Test_case的高度改变其他component的一些行为。
Systemverilog中已经提供的Callback函数pre_randomize,post_randomize。对于UVM和VIP来说,其他的CallBack函数都是自己程序的开发者事先 留下的hook。
randomize是System Verilog提供的一个函数,同时System Verilog 还提供了一个post_randomize函数,当randomize()之后,系统会自动调用post_randomize()函数。
Callback的实现:
1)首先直接从component扩展出新的类来实现pre_do等function不可取。因为component的改变会让整个UVM的tree改变。
2)考虑利用OOP的composition来操作,先定义一个类A,并定义virtual pre_do等function于它的类中。后在UVM的component中加入该类,在do函数
之前调用pre_do。这样在未重定义时,由于pre_do中没有任何操作,所以不会对component产生任何影响。而重定义virtual pre_do之后,自然便
加入了相关的执行代码。
UVM和VIP中的实现:
首先字uvm_callback派生一个类A,并定义虚函数virtual pre_do;(或uvm_reg_cbs)
定义uvm_register_cb(driver, A);在driver类中。这样相当于将A加入driver class中。
定义A_pool,来存放A的实例化对象,在driver类中可以直接判断A_pool是否为空,来执行pre_do。
在driver类中,使用uvm_do_callbacks(driver, A, pre_do);来调用pre_do,在do函数之前。
这样便完成了预留的hook,
用户使用时:
接下来只需要在需要的时候extended A,定义好pre_do函数。并且在connect_phase之前调用add函数,来添加进来。
A_pool::add(env.i_agt.drv, cb); cb即为A的Extended的类的对象。
- UVM中Callback机制与pre_randomize()
- 关于uvm report机制
- ns3中callback的机制
- UVM的callback的使用(八)
- UVM factory机制实现原理
- uvm之virtual sequence机制
- java中callback回调机制解析
- CALLBACK机制:
- CallBack机制
- callback机制
- CallBack机制
- callback机制
- CallBack机制
- callback机制
- 在UVM中添加env
- UVM的factory机制(二)
- UVM的sequence机制(四)
- UVM的config机制(五)
- OJ中字符串输入及相关操作
- 【转】在首席架构师眼里,架构的本质是……
- Elasticsearch 权威指南(中文版)
- 关于手机连接电脑后录制手机屏幕
- B-、B+、B*树介绍
- UVM中Callback机制与pre_randomize()
- [转载]initrd.img 和vmlinux的作用分别是什么?
- 快速幂讲解
- 基于hadoop生态圈的数据仓库实践 —— 进阶技术(十七)
- rinetd 一个linux下的端口转发工具
- Android studio 集成umeng友盟分享组件5.2.1遇到的问题解决mark
- Selenium入门
- 高并发量网站解决方案
- jquery form表单.serialize()序列化后中文乱码问题原因及解决