agent类型不被识别
时间:10-02
整理:3721RD
点击:
我是UVM小白目前在搭环境,自己跑一些程序。
vlog时遇到一个问题, 说是 agent类型没有被申明。 大家看看如何解决。
大体代码如下
class env extends uvm_env;
`uvm_compnent_utils(...)
agent ag1;
agent ag2;
function void build();
ag1 = agent::type_id::create(...);
ag2 = agent::type_id::create(...);
endfunction
endclass
vlog时遇到一个问题, 说是 agent类型没有被申明。 大家看看如何解决。
大体代码如下
class env extends uvm_env;
`uvm_compnent_utils(...)
agent ag1;
agent ag2;
function void build();
ag1 = agent::type_id::create(...);
ag2 = agent::type_id::create(...);
endfunction
endclass
最好是把仿真工具报的错误也一起贴出来。不过你这里的build function是你自己在这个uvm_env的派生类中添加的?uvm中一般是build_phase function。
我的环境在家里,错误信息没法贴出来。这些code来自一份教程,估计没贴全,所以很多类型得自己定义。
至于你说的phase函数, 我觉得build和build_phase是一样的,只是后者带phase而已。 如不对,请指教。
代码中是否已经定义过agent这个类,如果没有肯定会报错,可以使用typedef先声明这个agent类,这样就不会报错了。自己写的build和build_phase是有很大区别的,UVM整个平台在运行时phase是自动执行的,而自己写的则不是,另外在build_phase中一般会调用父类的build_phase,其中也是做了很多事情的。以上个人愚见,若有错误也请指正。
谢谢你的解释。
问题已经比较清楚了, 怎么关贴啊?
好像没有关贴这个说法,放着就可以了。
有1个地方需要注意
1) build_phase是一个virtual类型,是否子类中也需要继承下;
既然关不了贴,就继续讨论
你说 "UVM整个平台在运行时phase是自动执行的,而自己写的则不是"。 这句话本身没错。 但build也是phase函数啊,经我实验也是自动执行的。
build(),connect()等是OVM的用法,uvm延续了这一用法,无特殊使用时可以认为等价于相应的phase
多谢。