我在系统verilog中为接口编写了一个代码。但是它给了我clk的错误。错误是未定义的变量clk .... 代码是 总是出错(posedge clk)
interface simple_bus(input logic clk);
// Define the interface
logic req, gnt;
logic [7:0] addr, data;
logic [1:0] mode;
logic start, rdy;
endinterface: simple_bus
module memMod(simple_bus a);
// simple_bus interface port logic avail;
//logic clk;
always @(posedge clk)
a.gnt <= a.req & avail;
endmodule
在始终阻止使用时,它会给出错误“未定义的变量:clk”
答案 0 :(得分:1)
clk
是给定接口simple_bus
的输入,您需要按层次结构访问它。例如a.clk
。
所以你的模块代码是:
module memMod(simple_bus a);
always @(posedge a.clk)
a.gnt <= a.req & avail;
endmodule
修改强>
我已经尝试了你的代码并且它正在运行。 PFB exa代码。
interface simple_bus(input logic clk);
// Define the interface
logic req, gnt;
logic [7:0] addr, data;
logic [1:0] mode;
logic start, rdy;
endinterface: simple_bus
module memMod(simple_bus a);
// simple_bus interface port logic avail;
//logic clk;
always @(posedge a.clk) a.gnt <= a.req;
endmodule
module main();
logic clk;
simple_bus sb(clk);
memMod m(sb);
initial repeat(10) clk = #5 ~clk;
endmodule