微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 请教一个uvm_do_with的问题

请教一个uvm_do_with的问题

时间:10-02 整理:3721RD 点击:
在一个sequence中,用config_db的方式得到了一个参数,暂且叫cmd_type,现在想把这个参数用于uvm_do_with,于是这样写
`uvm_do_with(trans, {trans.cmd_type == cmd_type;}),结果发现发出的trans中cmd_type的值并不是传递进来的值嘛。
请教各位大神,这是什么原因呢?如果这样写不行的话,应该怎么做呢
不甚感谢!

sv上下文问题。

习惯不好,cmd_type换个名字,trans.a == b;不要trans.a == a;这样的形式

路过 不能够同名

学习了!谢谢

这个问题的根本原因是,在uvm_do_with(trans,{trans.cmd_type == cmd_type})中,uvm优先搜索的域是在trans中搜索cmd_type, 所以换句话说,这个约束是一个无效约束,这句话等同于uvm_do_with(trans,{trans.cmd_type == trans.cmd_type}),这是一个恒成立的问题,所以压根就没有对cmd_type做出约束。因此,如果要有效约束,应该将cmd_type的名字换成另外一个,譬如这样写uvm_do_with(trans,{trans.cmd_type == cmd_type_val}),然后在tran的域中搜不到cmd_type_val这个变量值,然后在从外边得到这个变量值,从而实现有效约束

之前也犯过类似的错误。

写成这样就好了:`uvm_do_with(trans, {trans.cmd_type == local::cmd_type;})

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top