Introduction
涵盖了对接口的需求,如何实例化接口并将其与设计连接起来。设计有两种编写方式:
- 通过使用现有接口名称专门使用该接口
- 通过使用可以将任何接口传递到的泛型接口句柄
显然,当接口定义更新到具有不同名称的较新版本时,泛型方法效果最佳,并且需要支持使用它的旧设计。
Example using a named bundle
在本例中,设计引用实际接口名称来访问其信号。下面的示例显示,设计模块myDesign
和youryDesign
都在端口列表中声明了一个名为if0
的端口,类型为myInterface
以访问信号。
module myDesign ( myInterface if0,
input logic clk);
always @(posedge clk) begin
if (if0.clk)
if0.gnt <= 1;
end
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
Example using a generic bundle
在本例中,设计使用关键字作为实际接口类型的占位符。下面的示例显示,设计模块myDesign
和youryDesign`都使用占位符句柄来引用信号。然后,在设计模块实例化期间传递实际接口。此泛型接口引用只能使用 ANSI 样式的端口声明语法进行声明,否则是非法的。
module myDesign (interface a,
input logic clk);
always @(posedge clk) begin
if (if0.ack)
if0.gnt <= 1;
end
endmodule
module yourDesign (interface b,
input logic clk);
...
endmodule
module tb;
logic clk = 0;
myInterface _if;
myDesign md0 (.*, .a(_if)); // use partial implicit connections
yourDesign yd0 (.*, .b(_if));
endmodule
标签:if0,clk,--,myDesign,Bundles,接口,使用,Interface,设计
From: https://www.cnblogs.com/sys-123456/p/18144442