在systemverilog中使用接口?

时间:2016-06-08 08:37:52

标签: system-verilog

我在系统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”

1 个答案:

答案 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