在顶级TB级别访问内部模块(tb.dut.a.b)apb接口

时间:2019-07-27 15:36:24

标签: verilog system system-verilog uvm system-verilog-dpi

有什么方法可以将apb主vip连接到内部有apb信号的dut内部模块。我想在这个深层的dut模块中编写一些寄存器。

我试图连接一个接口并将其绑定到模块内部的深处,这是可行的,但我必须将接口上的所有信号声明为I / O,而我的模拟器不喜欢它,并抛出很多关于多次驱动的警告。

是否还有其他干净的访问方式?

1 个答案:

答案 0 :(得分:0)

如果要绑定的内部模块的名称是固定的,则不需要绑定模块中的端口进行通信。相反,您可以对内部模块中的信号使用向上名称引用(请参见LRM中的23.8节)。

例如,假设内部模块名称为im,而您要绑定的接口为bi

module im(whatever port list);

  // internal signals
  logic [15:0] data;
  wire [15:0] add;
  logic [15:0] memory[16];
  ...
endmodule
interface bi();//no ports needed
  function void reset_memory;
      foreach (im.memory[e]) im.memory[e] = 0;
  endfunction
endinterface