override不可重载的部分
由于一些原因。变量引用本身依赖于一个路径,这个路径不可变更,因此,使用以下方法获取子类的变量:
https://bbs.eetop.cn/forum.php?mod=viewthread&tid=943020&pid=10887019&page=1&extra=#pid10887019
module aaa ();
import uvm_pkg::*;
class base_env extends uvm_env;
`uvm_component_utils(base_env)
int b=5;
function new(string name="base_env", uvm_component parent);
super.new(name, parent);
endfunction: new
function void build_phase(uvm_phase phase);
super.build_phase(phase);
$display("base_env");
endfunction: build_phase
function void connect_phase(uvm_phase phase); endfunction: connect_phase
endclass: base_env
class base1_env extends base_env;
`uvm_component_utils(base1_env)
int a=10;
function new(string name="base1_env", uvm_component parent);
super.new(name, parent);
endfunction: new
function void build_phase(uvm_phase phase);
super.build_phase(phase);
$display("base1_env");
$display("a is %0d",a);
endfunction: build_phase
function void connect_phase(uvm_phase phase);
endfunction: connect_phase
endclass: base1_env
class base_test extends uvm_test;
`uvm_component_utils(base_test)
base_env env;
function new(string name="base_test", uvm_component parent);
super.new(name, parent);
endfunction: new
function void build_phase(uvm_phase phase);
super.build_phase(phase);
env = base_env::type_id::create("env", this);
endfunction: build_phase
endclass: base_test
class base1_test extends base_test;
`uvm_component_utils(base1_test)
base1_env env1;
function new(string name="base1_test", uvm_component parent);
super.new(name, parent);
endfunction: new
function void build_phase(uvm_phase phase);
// set_inst_override_by_type("env", base_env::get_type(), base1_env::get_type());
set_type_override_by_type(base_env::get_type(), base1_env::get_type());
super.build_phase(phase);
env1 = base1_env::type_id::create("env1", this);
endfunction: build_phase
function void connect_phase(uvm_phase phase);
$display("value a is %0d", this.env1.a);
$display("value a is %0d", this.env.b);
$display("value a is %0d", this.env1.b);
endfunction: connect_phase
endclass: base1_test
initial begin
run_test("base1_test");
end
endmodule
Verdi的交互式模式
交互式模式打开后,点击运行,可以看到sequece的执行顺序和值
https://blog.csdn.net/Holden_Liu/article/details/106905170