uvm_do_with注意事項
来源:互联网 发布:高斯滤波器的算法 编辑:程序博客网 时间:2024/06/09 18:47
Case:
在上层top_seq调用下层sub-seq或seq_item时,可能会使用`uvm_do_with对下层的random变量进行约束。 通常为了coding的方便,上层和下层seq变量的名字可能是一样的。这样就有一个问题,我们会发现如果使用`uvm_do_with(sub_seq, {var_a == var_a;})
这个约束是无法启作用的,下层的var_a该怎么random还是怎么random,即使上层top_seq将var_a设定为某个固定值也没用。
Reason:
这是由于作用域的问题,在编译器来看,它不知道两个var_a有什么不同,把他当成sub_seq作用域中的两个相同变量,自然而然这条约束就没用效用
Solution:
可能有人会想到有this,这正是一个陷阱。在top_seq中使用`uvm_do_with(sub_seq, {sub_seq.var_a == this.var_a}),仿真会发现,同样没有效果,为什么?
因为被`uvm_do_with中,this指定的作用域首先找到的是sub_seq,而并不是想要的top_seq的this。
有两种解决方法:
1. top_seq使用不同的变量名,`uvm_do_with(sub_seq,{sub_seq.var_a == tmp_var_a}), 这样做就不太方便,如果seq嵌套太多,变量名就一大堆
2. 使用this,但换个名字,如下
class top_seq extends...
...
top_seq my_seq;
function new()
my_seq = this ==> 指向自己,其实就是把this换了个名字,
endfunction
...
`uvm_do_with(sub_seq, {var_a == my_seq.var_a}) ==>原理很简单,就是避免关键字因素的影响
endclass
- uvm_do_with注意事項
- 傳遞參數注意事項
- Hibernate 開發時注意事項:
- [開發紀錄]語音辨識注意事項
- C.開發數據層注意事項和技巧
- ASP.NET注意事項 补充中。。。
- ASP操作數據時的注意事項
- NOT IN的注意事項
- ORACLE使用注意事項总结
- PHP session 暫存檔過多的注意事項
- Linux ln命令的注意事項
- Android – 匯入專案以及注意事項
- CoffeeScript的幾個注意事項
- Oracle Form 使用注意事項
- easyui的onChange事件注意事項
- 瘦子增肥锻炼注意事項
- 编程注意的事
- 自己注意的事
- 高并发网站更新数据库数据比较高效的方式
- leetcode_c++:哈希:Top K Frequent Elements(347)
- 孕前的第一次身体检查
- SQL版本说明
- orblsam2-理论基础(三)
- uvm_do_with注意事項
- 安装VS2015出现的bug
- java加载properties文件的六种基本方式
- 【Unity Shaders】法线纹理(Normal Mapping)的实现细节
- 十六进制转十进制
- 写在正式开始步入程序员行列的第一篇
- Android 引导界面制作
- 各种函数
- Django高级视图和URL配置