请在edaplayground上找到我的代码:https://www.edaplayground.com/x/EDVr
在顶部模块中,我实例化了dut,然后尝试将一个接口绑定到它上面的信号。
module tb_top;
dut dut1();
bind dut basic basic_intf(.clk(clk), .reset(reset), .addr(addr), .addr_out(addr_out));
initial begin
run_test("base_test");
end
endmodule
interface basic(
input clk,
input reset,
inout [7:0] addr,
inout [7:0] addr_out);
modport dut(
input clk,
input reset,
input addr,
output addr_out
);
endinterface//在此处编写您的设计
module dut(input logic clk, input logic reset, input logic[7:0] addr, output logic[7:0] addr_out);
always_ff @(posedge clk) begin
if(reset)
addr_out <= 'h00;
else
addr_out <= addr;
end
endmodule我得到的错误是:引用:
Error-[VIHIOP] Variable in high conn of inout port
testbench.sv, 144
dut, "clk"
This variable is not a net, it cannot be connected to an inout port.
Source info: : basic basic_intf( .clk (clk), .reset (reset), .addr (addr),
.addr_out (addr_out));如果我声明这些信号为导线,我将不能在驱动函数中使用<=运算符。我想将该接口添加到config_db中,并在测试中检索它。Test是一个uvm_test类型的类。
我该如何解决这个问题?
发布于 2021-03-16 16:21:10
您正在尝试实例化(通过绑定)具有连接到变量的inout端口的接口,这些变量上有多个驱动程序。(如果将变量连接到inout或输出端口,则该端口必须是唯一驱动该变量的端口。) addr由输入端口和接口实例共同驱动;addr_out由always块和接口实例共同驱动。
https://stackoverflow.com/questions/66649007
复制相似问题