Правовой синтаксис для параметризованного интерфейса - PullRequest
0 голосов
/ 07 июня 2018

У меня есть определение интерфейса для параметризованного интерфейса следующим образом:

interface A#(parameter adr=64,parameter data=128,parameter enable=1)(input clk, input rst);
endinterface

Теперь я могу объявить что-то подобное?Это законно?

A#(,,0) A0(clk,rst);

Я не нашел таких примеров в SV LRM 1800-2012, поэтому мне было интересно узнать о законности этого синтаксиса, прежде чем я свяжусь с поставщиком EDA.Один такой крупный поставщик инструментов работает отлично, но другой крупный поставщик жалуется на это - ошибка, в частности, рядом с ",": синтаксическая ошибка, неожиданная ','.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Вы не можете пропустить переопределения параметров в упорядоченном списке.Это недопустимый синтаксис в соответствии с 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 не является обязательным в списке параметров, но выражение являетсянеобязательно в списке подключений портов.

0 голосов
/ 07 июня 2018

Я не знаю, законно ли это.Два симулятора отклонили его, а один - нет (вероятно, тот же, что и вы).Но вы можете

i) изменить порядок параметров:

interface A#(parameter enable=1, parameter adr=64,parameter data=128)(input clk, input rst);
endinterface

A #(0) a (.clk, .rst);

ii) использовать named mapping :

A #(.enable(0)) a (.clk, .rst);
...