嗨,我正在努力让我的头环绕接口......起初它们看起来很简单,但是一旦我开始使用参数化接口,我就无法将这些部分放在适当的位置。
说我有接口
interface my_if #(
parameter H_WIDTH = 64,
parameter L_WIDTH = 8
);
logic [H_WIDTH -1:0] a;
logic [L_WIDTH -1:0] b;
logic ready;
modport in ( input a, input b, output valid);
modport out( output a, output b, input ready);
endinterface;
Run Code Online (Sandbox Code Playgroud)
我想将其用作模块中的端口
module my_module (
logic input clk,
logic input rst,
my_if.in my_if
);
Run Code Online (Sandbox Code Playgroud)
首先我不知道如何设置我的接口的参数我尝试了以下而不是上面的:
my_if(#.H_WIDTH((64), .L_WIDTH(64)) my_if()
Run Code Online (Sandbox Code Playgroud)
和
my_if(#.H_WIDTH((64), .L_WIDTH(64)).in my_if()
Run Code Online (Sandbox Code Playgroud)
哪个不编译...
但是我该如何设置我的界面参数呢?PLZ 帮助我在谷歌上搜索了大量示例,但它们都非常基础。
顺便说一句,解决方案必须综合,因为这不是为了验证
您设置interface
实例参数的方式与设置实例参数的方式完全相同module
;当它被实例化时。没有语法允许您设置接口端口的参数。参数值基于实例化模块时连接到端口的接口实例。
当您正在综合的顶层模块具有接口端口时,这会出现问题。这类似于顶层模块有需要覆盖的参数。您需要检查您正在使用的工具的综合手册,以了解如何手动覆盖参数。
你快到了!在你的顶层模块(你实例化接口的地方),你只需要改变:
my_if(#.H_WIDTH((64), .L_WIDTH(64)) my_if()
Run Code Online (Sandbox Code Playgroud)
到
my_if # (.H_WIDTH(64), .L_WIDTH(64)) my_if()
Run Code Online (Sandbox Code Playgroud)
你应该很高兴去。在IEEE 1800至2012年LRM对这个话题,你应该去通过部分(25.8参数接口)。