尝试从 env(SystemVerilog、OVM)访问接口内部接口
Trying to access an interface inside interface from the env (SystemVerilog, OVM)
在我的环境 class 的构建函数中尝试连接接口:
virtual my_if my_vif;
for (int i = 0; i<32; i++) begin
_agent[i]._vif = my_vif._if[i];
end
里面 my_if:
interface my_if();
if _if[32]();
endinterface :my_if
当运行模拟时我得到这个错误:
Error-[MFNF] Member not found
my_env.sv, 229 "this.my_vif."
Could not find member '_if' in interface 'my_if', at "my_if.sv", 1.
_if 也是与下一个信号的接口:
interface if();
logic clk;
logic rstn;
logic [101:0] requests;
logic [63:0] dataOut;
endinterface :if
问题是,当接口 _if 未包装在 my_if 接口下时,一切正常。
看起来您正在尝试使用数组实例在界面中实例化某些类型为 _if
的设计元素 32 次。
array instances
与 generate
个区块相关。因此,索引它们的唯一方法是从另一个 generate
块开始。您不能使用带索引的简单 for 循环来执行此操作。
生成块是 rtl 设计的一部分,通常对测试平台的适用性非常有限,特别是作为 agent
的动态结构。
您需要重新考虑您想要实施它的方式。
在我的环境 class 的构建函数中尝试连接接口:
virtual my_if my_vif;
for (int i = 0; i<32; i++) begin
_agent[i]._vif = my_vif._if[i];
end
里面 my_if:
interface my_if();
if _if[32]();
endinterface :my_if
当运行模拟时我得到这个错误:
Error-[MFNF] Member not found
my_env.sv, 229 "this.my_vif."
Could not find member '_if' in interface 'my_if', at "my_if.sv", 1.
_if 也是与下一个信号的接口:
interface if();
logic clk;
logic rstn;
logic [101:0] requests;
logic [63:0] dataOut;
endinterface :if
问题是,当接口 _if 未包装在 my_if 接口下时,一切正常。
看起来您正在尝试使用数组实例在界面中实例化某些类型为 _if
的设计元素 32 次。
array instances
与 generate
个区块相关。因此,索引它们的唯一方法是从另一个 generate
块开始。您不能使用带索引的简单 for 循环来执行此操作。
生成块是 rtl 设计的一部分,通常对测试平台的适用性非常有限,特别是作为 agent
的动态结构。
您需要重新考虑您想要实施它的方式。