RE: [sv-bc] parameter_port_list - are paranthesis obligatory

From: Brad Pierce <Brad.Pierce_at_.....>
Date: Mon Feb 09 2009 - 10:58:35 PST
A parameter_port_list is used in declarations, not in instantiations.

Instantiations use a parameter_value_assignment, as defined in A.4.1.1.  According to the BNF, the parentheses in a parameter_value_assignment are obligatory.

A parameter_value_assignment cannot be used with a primitive, because a primitive cannot have parameters.  The #1 in your example is a delay2, not a parameter_value_assignment.

-- Brad



From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On Behalf Of Daniel Mlynek
Sent: Monday, February 09, 2009 7:34 AM
To: sv-bc@eda-stds.org
Subject: [sv-bc] parameter_port_list - are paranthesis obligatory


In parameter_port_list definition paranthesis are obligatory :

parameter_port_list ::=
# ( list_of_param_assignments { , parameter_port_declaration } )
| # ( parameter_port_declaration { , parameter_port_declaration } )
| #( )

However this is imposible to check this restriction on compilation - becasue primitive instantation syntax allow to use #NUMBER specification. So below code can be compiled even if sub is module definition:

module top;
 sub #1 uut(); //legal vs illegal when sub is module
 udp1 #1 uut1(); //illegal when udp1 is udp
endmodule

Maybe LRM should allow make skipping paranthesis legal as this is impossible on compilation to check it.

This problem is also inherited by parametrized classes.

C #1 c=new; //legal vs illegal?



DANiel

--
This message has been scanned for viruses and
dangerous content by MailScanner<http://www.mailscanner.info/>, and is
believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Feb 9 11:00:06 2009

This archive was generated by hypermail 2.1.8 : Mon Feb 09 2009 - 11:01:01 PST