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