在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1485|回复: 5

[求助] transaction中如何获取dut配置

[复制链接]
发表于 2021-9-10 01:58:15 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如何将dut_cfg传递给transaction类,使得transaction可以根据配置生成相应的激励?dut_cfg是例化在env中的,扩展自uvm_object。
目前我只能想到通过config_db方式将配置传递给driver,在driver中修改transaction数据。
发表于 2021-9-10 09:11:17 | 显示全部楼层
在driver中修改transaction确实是一种手段,但个人认为这种方式不太“正规”,作为CTL来说,driver越纯粹,越简单越好,因为只有越纯粹,越简单,才越具有重用性。
另外的两个方式,供参考:
1.在transaction中定义cfg类,静态类型,在dut_cfg或者env_cfg中将相关的配置项传递给该静态cfg类。在transaction的约束中,或者post_randomize里面修改transaction的值。但这种方式同样有问题,一是当cfg比较复杂的时候,会显得有些“头重脚轻”,二是同样会影响transaction重用性的问题;
2.在该接口的default_sequence中,定义该cfg类,定义为静态或者用uvm_config_db去get都可以,然后扩展sequence的mid_do函数,在mid_do中修改transaction的值。这是我个人比较喜欢和推荐的一种方式。这种方式结构、行为比较清晰,transaction还是那个transaction,只是复用在不同的接口上,各自的sequence不同,我们只负责实现不同的sequence。
 楼主| 发表于 2021-9-10 10:57:59 | 显示全部楼层


飞翔的马甲 发表于 2021-9-10 09:11
在driver中修改transaction确实是一种手段,但个人认为这种方式不太“正规”,作为CTL来说,driver越纯粹, ...


请问对于方法1”在dut_cfg或者env_cfg中将相关的配置项传递给该静态cfg类“,这个传递是用什么方式?
方法2用config_db实现相对比较熟悉和常用
发表于 2021-9-10 11:37:51 | 显示全部楼层


乒乓 发表于 2021-9-10 10:57
请问对于方法1”在dut_cfg或者env_cfg中将相关的配置项传递给该静态cfg类“,这个传递是用什么方式?
方 ...


直接赋值就可以了,如果你在transaction中定义的cfg,和dut_cfg是同一个class,就直接把dut_cfg的对象句柄赋值给cfg就可以了,比如:
transaction::cfg_obj = dut_cfg_obj;

如果dut_cfg里面包含的配置变量很多,但是transaction里面用不了那么多的配置变量,那你可以自己另外定义一个精简的cfg,这个时候cfg和dut_cfg不属于同一个类。那么需要在transaction的new函数里面里面给cfg的对象new一下:
if(this.cfg_obj == null) this.cfg_obj = new();//或者用create方法
然后再在env_cfg或者其他顶层cfg里面对其赋值:
transaction::cfg_obj.aaa = dut_cfg_obj.aaa;
transaction::cfg_obj.bbb = dut_cfg_obj.bbb;
....
 楼主| 发表于 2021-9-10 11:51:19 | 显示全部楼层


飞翔的马甲 发表于 2021-9-10 11:37
直接赋值就可以了,如果你在transaction中定义的cfg,和dut_cfg是同一个class,就直接把dut_cfg的对象句 ...


谢谢指点!
发表于 2021-10-16 22:43:38 | 显示全部楼层
p_sequencer 了解一哈,《UVM实战》有具体介绍的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 16:29 , Processed in 0.033853 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表