UVM中全局变量
时间:10-02
整理:3721RD
点击:
UVM中怎么定义全局变量?如case中要用monitor中的变量数据,monitor中有要用case中的变量数据,怎么办?
来人啊
全局变量声明放在组件定义外部即可;张强书中192页有介绍,可以看看
例如
event send_over;
class seq0 extends uvm_sequence #(my_transaction);
virtual task body();
begin
..............
end
-> send_over;
endtask
endclass
class seq1 extends uvm_sequence #(my_transaction);
virtual task body();
@send_over;
begin
...............
end
endtask
endclass
执行过程中需要等待seq0例化的模块执行完毕后才可以执行seq1;
有几种选择:1. 使用uvm_config_db,在变量的定义处set,在使用处get;
2. 定义一个单例类;
2. 使用全局变量,如将该变量定义在package内,任何class外。
遇到同样的 问题,e的好处 就体现出来了 ,可以 任意使用
test case可以通过绝对路径访问monitor。如果有变量被组件共享,应该这些变量封装到class里面,每个组件都例化该class,在test里面指向同一个object。直接使用全局变量是一个很不好的习惯,尤其是需要复用的时候。