我有一个参数化界面的接口定义,如下所示:
window.onunload
现在,我能宣布一些类似的东西吗?这合法吗?
interface A#(parameter adr=64,parameter data=128,parameter enable=1)(input clk, input rst);
endinterface
我在1800-2012 SV LRM中没有找到任何这样的例子,所以在我联系EDA供应商之前,我想知道这种语法的合法性。一个这样的主要工具供应商工作得很好,但另一个主要供应商抱怨这个 - 错误具体 靠近“,”:语法错误,意外','。
答案 0 :(得分:2)
我不知道它是否合法。两个模拟器拒绝它,一个没有(可能和你一样)。但你可以
i)重新排列参数的顺序:
interface A#(parameter enable=1, parameter adr=64,parameter data=128)(input clk, input rst);
endinterface
A #(0) a (.clk, .rst);
ii)使用命名映射:
A #(.enable(0)) a (.clk, .rst);
答案 1 :(得分:1)
您不能跳过有序列表中的参数覆盖。根据BNF,这是非法语法:
list_of_parameter_assignments ::=
ordered_parameter_assignment { , ordered_parameter_assignment }
| named_parameter_assignment { , named_parameter_assignment }
ordered_parameter_assignment ::= param_expression
将此与端口连接的有序列表进行对比:
list_of_port_connections29 ::=
ordered_port_connection { , ordered_port_connection }
| named_port_connection { , named_port_connection }
ordered_port_connection ::= { attribute_instance } [ expression ]
param_expression在参数列表中不是可选的,但在端口连接列表中表达式是可选的。