SystemVerilog Interface Bundles

intruction涵盖了接口的需求,如何实例化接口并将其与设计连接。可以通过两种方式编写设计:
【1】通过使用现有的接口名来专门使用该接口;
【2】通过使用任何接口都可以传递到的通用接口句柄。

在这种情况下,设计将参考实际的接口名称来访问其信号。 下面的示例显示,设计模块myDesign和yourDesign都在端口列表中声明了一个名为if0的端口,其类型为myInterface,以访问信号。

module myDesign  (  myInterface  if0, 
                      input logic  clk);
    always @ (posedge clk)
      if (if0.ack)
        if0.gnt <= 1;
 
    ...
  endmodule
 
  module yourDesign (  myInterface   if0,
             input logic   clk);
    ...
 
  endmodule
 
  module tb;
    logic clk = 0;
 
    myInterface   _if;
 
    myDesign   md0   (_if, clk);
    yourDesign  yd0   (_if, clk);
 
  endmodule

使用通用句柄的示例

在这种情况下,设计将interface关键字用作实际接口类型的占位符。 下面的示例显示,设计模块myDesign和yourDesign都使用占位符句柄来引用信号。 然后在设计模块实例化过程中传递实际接口。 此通用接口引用只能使用ANSI样式的端口声明语法声明,否则是非法的。

 module myDesign  ( interface  a, 
                     input logic  clk);
 
    always @ (posedge clk)
      if (if0.ack)
        if0.gnt <= 1;
 
    ...
  endmodule
 
  module yourDesign (  interface     b,
             input logic   clk);
    ...
 
  endmodule
 
  module tb;
    logic clk = 0;
 
    myInterface  _if;
 
    myDesign   md0 ( .*, .a(_if));   // 使用部分隐式端口连接
    yourDesign  yd0 ( .*, .b(_if));
 
  endmodule

参考文献:
【1】https://www.chipverify.com/systemverilog/systemverilog-interface-bundles

发布了124 篇原创文章 · 获赞 8 · 访问量 6709

猜你喜欢

转载自blog.csdn.net/qq_43042339/article/details/104476948
今日推荐