[sv-ec] BNF: constant_primary missing class scoped parameters

From: Francoise Martinolle <fm_at_.....>
Date: Fri Nov 10 2006 - 10:58:23 PST
I think that there is an oversight in the BNF for constant expressions.
It does not allow a class scoped parameter expression as a constant
expression.
 
For example we should be able to write:
 
class c #(p = 0);
endclass
 
class b #(q = c#()::q ); // in a parameter declaration
 
   bit [ c#()::q :7] m1; // in a constant range
 
endclass
 
Right now the BNF is:
 
parameter_declaration ::=

parameter data_type_or_implicit list_of_param_assignments

| parameter type list_of_type_assignments

 

list_of_param_assignments ::= param_assignment { , param_assignment }

param_assignment ::= parameter_identifier { unpacked_dimension } =
constant_param_expression

 

constant_param_expression ::=

constant_mintypmax_expression | data_type | $

 

constant_mintypmax_expression ::=

constant_expression

| constant_expression : constant_expression : constant_expression

constant_expression ::=

constant_primary

| unary_operator { attribute_instance } constant_primary

| constant_expression binary_operator { attribute_instance }
constant_expression

| constant_expression ? { attribute_instance } constant_expression :
constant_expression

 

constant_primary ::=

primary_literal

| ps_parameter_identifier constant_select

| specparam_identifier [ constant_range_expression ]

| genvar_identifier32

| [ package_scope | class_scope ] enum_identifier

| constant_concatenation

| constant_multiple_concatenation

| constant_function_call

| ( constant_mintypmax_expression )

| constant_cast

| constant_assignment_pattern_expression

| type_reference29

ps_parameter_identifier ::=

[ package_scope ] parameter_identifier

| { generate_block_identifier [ [ constant_expression ] ] . }
parameter_identifier

 

package_scope ::=

package_identifier ::

| $unit ::

 

The solution seems to be to add :

[package_scope] {[class_scope]} parameter_identifier constant_select in
the constant_primary derivation rule.

 

Francoise

    
Received on Fri Nov 10 10:58:28 2006

This archive was generated by hypermail 2.1.8 : Fri Nov 10 2006 - 10:59:01 PST