/*
 Copyright 2019 Alain Dargelas

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/


parser grammar SV3_1aParser; 

options { tokenVocab = SV3_1aLexer; } 

top_level_rule : null_rule source_text EOF ; // SV files

top_level_library_rule : null_rule library_text EOF ; // .map files

library_text : ( library_descriptions )* ;     
     
library_descriptions : library_declaration 
                     | include_statement
		     | config_declaration
                     | SEMICOLUMN          
                     ; 
     
library_declaration : 
LIBRARY identifier file_path_spec  ( COMMA file_path_spec )*   
 ( INCDIR file_path_spec ( COMMA file_path_spec )* )? SEMICOLUMN ; 

file_path_spec : (Simple_identifier | DIV | DOT | STAR | DOTSTAR | QMARK)+; 

include_statement : INCLUDE file_path_spec SEMICOLUMN ; 

source_text : ( timeunits_declaration )? ( description )* ; 

null_rule : ; // Placeholder rule that create the "0" VObject, DO NOT REMOVE

description  
    : module_declaration     
    | udp_declaration        
    | interface_declaration  
    | program_declaration    
    | package_declaration    
    | surelog_macro_not_defined
    | ( attribute_instance )* ( package_item 
                              | bind_directive )  
    | config_declaration     
    | top_directives         
    ; 

module_nonansi_header : ( attribute_instance )* module_keyword ( lifetime )?  
                        identifier ( package_import_declaration )* ( parameter_port_list )?  
                        list_of_ports SEMICOLUMN ; 

module_ansi_header : ( attribute_instance )* module_keyword ( lifetime )?  
                     identifier ( package_import_declaration )* ( parameter_port_list )?  
                    (list_of_port_declarations )? SEMICOLUMN ; 

module_declaration  
    : module_nonansi_header ( timeunits_declaration )? ( module_item )* 
      endmodule ( COLUMN identifier )? 
    | module_ansi_header ( timeunits_declaration )? ( non_port_module_item )*  
      endmodule ( COLUMN identifier )? 
    | ( attribute_instance )* module_keyword ( lifetime )? identifier  
      OPEN_PARENS DOT STAR CLOSE_PARENS SEMICOLUMN 
      ( timeunits_declaration )? ( module_item )* endmodule  
      ( COLUMN identifier )?            
    | EXTERN module_nonansi_header             
    | EXTERN module_ansi_header                
    ; 

endmodule : ENDMODULE ; 
     
module_keyword  
    : MODULE      
    | MACROMODULE 
    ; 

interface_nonansi_header :  
  ( attribute_instance )* INTERFACE ( lifetime )? interface_identifier  
  ( parameter_port_list )? list_of_ports SEMICOLUMN ; 


interface_ansi_header :  
  ( attribute_instance )* INTERFACE ( lifetime )? interface_identifier  
  ( parameter_port_list )? ( list_of_port_declarations )? SEMICOLUMN ; 
   
interface_declaration  
: interface_nonansi_header ( timeunits_declaration )? ( interface_item )*  
  endinterface ( COLUMN interface_identifier )? 
| interface_ansi_header ( timeunits_declaration )? ( non_port_interface_item )*  
  endinterface ( COLUMN interface_identifier )? 
| ( attribute_instance )? INTERFACE interface_identifier  
  OPEN_PARENS DOT STAR CLOSE_PARENS SEMICOLUMN 
  ( timeunits_declaration )? ( interface_item )*  
  endinterface ( COLUMN interface_identifier )?  
| EXTERN interface_nonansi_header                
| EXTERN interface_ansi_header                   
; 

endinterface : ENDINTERFACE ; 

program_nonansi_header : 
( attribute_instance ) PROGRAM ( lifetime )? identifier  
( parameter_port_list )? list_of_ports SEMICOLUMN ;  

program_ansi_header : 
( attribute_instance )* PROGRAM ( lifetime )? identifier  
( parameter_port_list )? ( list_of_port_declarations )? SEMICOLUMN ; 

endchecker : ENDCHECKER ;

checker_declaration : 
      CHECKER identifier ( OPEN_PARENS checker_port_list? CLOSE_PARENS )? SEMICOLUMN 
      ( ( attribute_instance )* checker_or_generate_item )* endchecker ( COLUMN identifier )?  
      ; 

program_declaration  
: program_nonansi_header ( timeunits_declaration )? ( program_item )* 
  endprogram ( COLUMN identifier )? 
| program_ansi_header ( timeunits_declaration )? ( non_port_program_item )* 
  endprogram ( COLUMN identifier )? 
| ( attribute_instance )* PROGRAM identifier  
  OPEN_PARENS DOT STAR CLOSE_PARENS SEMICOLUMN 
  ( timeunits_declaration )? ( program_item )* 
  endprogram ( COLUMN identifier )? 
| EXTERN program_nonansi_header             
| EXTERN program_ansi_header                
; 

endprogram : ENDPROGRAM ; 


class_declaration  
    : ( VIRTUAL )? CLASS ( lifetime )? identifier ( parameter_port_list )? 
    ( EXTENDS class_type ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? )? 
    ( IMPLEMENTS interface_class_type ( COMMA interface_class_type )* )? 
        SEMICOLUMN 
    ( class_item )* 
    endclass ( COLUMN identifier )?  
    ; 

endclass : ENDCLASS; 

interface_class_type : 
      ps_identifier ( parameter_value_assignment )? ; 

interface_class_declaration : 
      INTERFACE CLASS identifier ( parameter_port_list )? 
      ( EXTENDS interface_class_type ( COMMA interface_class_type )* )? SEMICOLUMN  ( interface_class_item )* 
      endclass ( COLUMN identifier )? 
      ; 

interface_class_item : type_declaration 
    | ( attribute_instance )* interface_class_method SEMICOLUMN 
    | local_parameter_declaration SEMICOLUMN 
    | parameter_declaration SEMICOLUMN 
    | SEMICOLUMN 
    ; 

interface_class_method : 
      PURE VIRTUAL method_prototype ; 

endpackage : ENDPACKAGE;

package_declaration  
    : ( attribute_instance )* PACKAGE identifier SEMICOLUMN 
    ( timeunits_declaration )? ( ( attribute_instance )* package_item )* 
    endpackage ( COLUMN identifier )?  
    ; 

timeunits_declaration  
    : TIMEUNIT time_literal DIV time_literal SEMICOLUMN  # TimeUnitsDecl_TimeUnitDiv
    | TIMEUNIT time_literal SEMICOLUMN  # TimeUnitsDecl_TimeUnit 
    | TIMEPRECISION time_literal SEMICOLUMN          # TimeUnitsDecl_TimePrecision  
    | TIMEUNIT time_literal SEMICOLUMN TIMEPRECISION  
      time_literal SEMICOLUMN                        # TimeUnitsDecl_TimeUnitTimePrecision      
    | TIMEPRECISION time_literal SEMICOLUMN TIMEUNIT  
      time_literal SEMICOLUMN                        # TimeUnitsDecl_TimePrecisionTimeUnit 
    ; 

parameter_port_list  
    : POUND OPEN_PARENS list_of_param_assignments  
      ( COMMA parameter_port_declaration )* CLOSE_PARENS 
    | POUND OPEN_PARENS parameter_port_declaration  
      ( COMMA parameter_port_declaration )* CLOSE_PARENS 
    | POUND OPEN_PARENS CLOSE_PARENS                     
    ; 

parameter_port_declaration  
    : parameter_declaration               
    | local_parameter_declaration         
    | data_type list_of_param_assignments 
    | TYPE list_of_type_assignments       
    ; 

list_of_ports : OPEN_PARENS port ( COMMA port )* CLOSE_PARENS ; 

list_of_port_declarations : OPEN_PARENS ( ( attribute_instance )*  
                            ansi_port_declaration ( COMMA ( attribute_instance )*  
                            ansi_port_declaration )* )? CLOSE_PARENS ; 

port_declaration  
    : ( attribute_instance )* ( inout_declaration
                              | input_declaration          
                              | output_declaration         
                              | ref_declaration            
                              | interface_port_declaration ); 

port  
    : port_expression                                               
    | DOT identifier OPEN_PARENS port_expression  CLOSE_PARENS 
    ;   

port_expression  
    : port_reference                                
    | ( port_reference ( COMMA port_reference )* )* 
    ; 

port_reference : identifier constant_select ; 

port_direction  
    : INPUT  # PortDir_Inp 
    | OUTPUT # PortDir_Out 
    | INOUT  # PortDir_Inout 
    | REF    # PortDir_Ref 
    ;     
     
net_port_header : ( port_direction )? net_port_type ; 

variable_port_header : ( port_direction )? variable_port_type ; 

interface_port_header  
    : interface_identifier ( DOT identifier )? 
    | INTERFACE ( DOT identifier )?            
    ; 

ansi_port_declaration  
    : ( net_port_header | interface_port_header ) identifier  
      ( unpacked_dimension )*  ( ASSIGN_OP constant_expression )?                         
    | ( variable_port_header )? identifier variable_dimension*  
      ( ASSIGN_OP constant_expression )?                  
    | ( net_port_header | variable_port_header) DOT identifier OPEN_PARENS  
      ( expression )? CLOSE_PARENS                    
    ; 

elaboration_system_task  
    : DOLLAR Simple_identifier ( OPEN_PARENS number ( COMMA list_of_arguments )? CLOSE_PARENS )? SEMICOLUMN 
    | DOLLAR Simple_identifier ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? SEMICOLUMN  
    | DOLLAR Simple_identifier ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? SEMICOLUMN 
    | DOLLAR Simple_identifier ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? SEMICOLUMN 
    ;
    
module_common_item  
    : module_or_generate_item_declaration 
    | interface_instantiation             
    | program_instantiation               
    | assertion_item                      
    | bind_directive                      
    | continuous_assign                   
    | net_alias                           
    | initial_construct                   
    | final_construct                     
    | always_construct                    
    | loop_generate_construct             
    | conditional_generate_construct      
    | elaboration_system_task             
    | system_task                         
    ; 


module_item  
    : port_declaration SEMICOLUMN 
    | non_port_module_item        
    ; 


module_or_generate_item  
    : ( attribute_instance )* ( parameter_override    
                              | gate_instantiation    
                              | udp_instantiation     
                              | module_instantiation  
                              | module_common_item    
                              ) ; 

module_or_generate_item_declaration  
    : package_or_generate_item_declaration            
    | genvar_declaration                              
    | clocking_declaration                            
    | DEFAULT CLOCKING identifier SEMICOLUMN 
    | DEFAULT DISABLE IFF expression_or_dist SEMICOLUMN 
    ; 

non_port_module_item  
    : generated_module_instantiation                
    | module_or_generate_item                       
    | specify_block                                 
    | ( attribute_instance )* specparam_declaration 
    | program_declaration                           
    | module_declaration                            
    | timeunits_declaration                         
    | system_task                                   
    | surelog_macro_not_defined
    | pragma_directive
    ; 


parameter_override : DEFPARAM list_of_defparam_assignments SEMICOLUMN ; 


bind_directive : BIND  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)* constant_select  
                 bind_instantiation ; 


bind_instantiation  
    : program_instantiation    
    | module_instantiation     
    | interface_instantiation  
    | checker_instantiation    
    ; 



interface_or_generate_item  
    : ( attribute_instance )* ( module_common_item    
                              | MODPORT modport_item ( COMMA modport_item )* SEMICOLUMN   
                              | extern_tf_declaration ) 
    ; 


extern_tf_declaration  
    : EXTERN method_prototype SEMICOLUMN        
    | EXTERN FORKJOIN task_prototype SEMICOLUMN 
; 

interface_item  
    : port_declaration SEMICOLUMN 
    | non_port_interface_item     
    ; 

non_port_interface_item  
    : generated_interface_instantiation   
    | ( attribute_instance )*  specparam_declaration               
    | interface_or_generate_item          
    | program_declaration                 
    | interface_declaration               
    | timeunits_declaration               
    | surelog_macro_not_defined
    ; 

program_item  
    : port_declaration SEMICOLUMN 
    | non_port_program_item       
    ;    

non_port_program_item  
    : ( attribute_instance )* continuous_assign         
    | ( attribute_instance )* module_or_generate_item_declaration                                    
    | ( attribute_instance )* specparam_declaration     
    | ( attribute_instance )* initial_construct         
    | ( attribute_instance )* final_construct           
    | ( attribute_instance )* concurrent_assertion_item 
    | timeunits_declaration                             
    | program_generate_item                             
    | surelog_macro_not_defined
    ; 

program_generate_item : 
      loop_generate_construct         
    | conditional_generate_construct  
    | generate_region                 
    | elaboration_system_task         
    ; 

checker_port_list : 
      checker_port_item ( COMMA checker_port_item )? ; 

checker_port_item : 
      attribute_instance* (INPUT | OUTPUT)? property_formal_type identifier 
      variable_dimension* ( ASSIGN_OP property_actual_arg )? ; 

checker_or_generate_item  
    : checker_or_generate_item_declaration 
    | initial_construct 
    | always_construct 
    | final_construct 
    | assertion_item 
    | continuous_assign 
    | checker_generate_item 
    ; 

checker_or_generate_item_declaration  
    : RAND* data_declaration 
    | function_declaration 
    | checker_declaration 
    | assertion_item_declaration 
    | covergroup_declaration 
    | overload_declaration 
    | genvar_declaration 
    | clocking_declaration 
    | DEFAULT CLOCKING identifier SEMICOLUMN 
    | DEFAULT DISABLE IFF expression_or_dist SEMICOLUMN 
    | SEMICOLUMN
    | surelog_macro_not_defined
    ; 

checker_generate_item  
    : loop_generate_construct 
    | conditional_generate_construct 
    | generate_region 
    | elaboration_system_task 
    ; 

class_item  
    : ( attribute_instance )* ( class_property        
                              | class_method          
                              | class_constraint      
                              | type_declaration      
                              | class_declaration     
                              | covergroup_declaration ) 
    | local_parameter_declaration SEMICOLUMN        
    | parameter_declaration SEMICOLUMN              
    | surelog_macro_not_defined
    | SEMICOLUMN                                    
    ; 

class_property  
    : ( property_qualifier )* data_declaration      
    | CONST ( class_item_qualifier )* data_type identifier  
      ( ASSIGN_OP constant_expression )? SEMICOLUMN     
    ; 

pure_virtual_qualifier : PURE VIRTUAL ; 

extern_qualifier : EXTERN ;

class_method  
    : ( method_qualifier )* (task_declaration | function_declaration | class_constructor_declaration)                   
    | pure_virtual_qualifier ( class_item_qualifier )* method_prototype SEMICOLUMN 
    | extern_qualifier ( method_qualifier )* ( method_prototype SEMICOLUMN | class_constructor_prototype )
    ; 

class_constructor_prototype : FUNCTION NEW ( OPEN_PARENS ( tf_port_list )? CLOSE_PARENS )?; 

class_constraint  
    : constraint_prototype    
    | constraint_declaration  
    ; 

class_item_qualifier 
    : STATIC    # ClassItemQualifier_Static 
    | PROTECTED # ClassItemQualifier_Protected 
    | LOCAL     # ClassItemQualifier_Local 
    ; 

property_qualifier  
    : RAND                  # PropQualifier_Rand 
    | RANDC                 # PropQualifier_Randc 
    | class_item_qualifier  # PropQualifier_ClassItem 
    ; 

method_qualifier  
    : VIRTUAL               # MethodQualifier_Virtual 
    | class_item_qualifier  # MethodQualifier_ClassItem 
    ; 

method_prototype  
    : task_prototype      
    | function_prototype  
    ; 

super_dot_new : SUPER DOT NEW ;

class_constructor_declaration  
    : FUNCTION ( class_scope )? NEW ( OPEN_PARENS ( tf_port_list )? CLOSE_PARENS )? SEMICOLUMN 
    ( block_item_declaration )* 
    ( super_dot_new ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? SEMICOLUMN )? 
    ( function_statement_or_null )* 
    endfunction ( COLUMN NEW )? ; 

constraint_declaration : ( STATIC )? CONSTRAINT identifier constraint_block ; 
     
constraint_block : OPEN_CURLY ( constraint_block_item )* CLOSE_CURLY ; 
     
constraint_block_item  
    : SOLVE solve_before_list BEFORE solve_before_list SEMICOLUMN 
    | constraint_expression                                   
    ; 

solve_before_list : 
      constraint_primary ( COMMA constraint_primary )* ; 

constraint_primary : 
      ( implicit_class_handle DOT | class_scope )?  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  select ; 


constraint_expression  
    : SOFT? expression_or_dist SEMICOLUMN   
    | uniqueness_constraint SEMICOLUMN      
    | expression IMPLY constraint_set       
    | IF OPEN_PARENS expression CLOSE_PARENS constraint_set  
      ( ELSE constraint_set )?              
    | FOREACH OPEN_PARENS ps_or_hierarchical_array_identifier OPEN_BRACKET loop_variables 
      CLOSE_BRACKET CLOSE_PARENS constraint_set                                             
    | DISABLE SOFT constraint_primary SEMICOLUMN 
    ; 

uniqueness_constraint : 
      UNIQUE OPEN_CURLY open_range_list CLOSE_CURLY ; 

     
constraint_set  
    : constraint_expression                             
    | OPEN_CURLY ( constraint_expression )* CLOSE_CURLY  
    ; 

     
dist_list : dist_item ( COMMA dist_item )* ; 

     
dist_item : value_range ( dist_weight )? ; 
             
/* Replaced by COLUMN DIV :  ASSIGN_RANGE : ':/' ; */
dist_weight  
    : ASSIGN_VALUE expression # DistWeight_AssignValue  
    | COLUMN DIV expression   # DistWeight_AssignRange
    ; 

constraint_prototype : (extern_qualifier | pure_keyword )? ( STATIC )? CONSTRAINT identifier SEMICOLUMN ; 


extern_constraint_declaration : 
    ( STATIC )? CONSTRAINT class_scope identifier constraint_block ; 
     
identifier_list : identifier ( COMMA identifier )* ;    

package_item  
    : package_or_generate_item_declaration 
    | specparam_declaration                
    | anonymous_program                    
    | package_export_declaration           
    | timeunits_declaration
    ; 


package_or_generate_item_declaration  
    : net_declaration               
    | data_declaration              
    | task_declaration              
    | function_declaration          
    | checker_declaration           
    | dpi_import_export             
    | extern_constraint_declaration 
    | class_declaration             
    | interface_class_declaration   
    | class_constructor_declaration 
    | parameter_declaration SEMICOLUMN 
    | local_parameter_declaration SEMICOLUMN  
    | covergroup_declaration        
    | overload_declaration          
    | assertion_item_declaration    
    | SEMICOLUMN                    
    ; 

anonymous_program : PROGRAM SEMICOLUMN ( anonymous_program_item )* endprogram ; 

anonymous_program_item  
    : task_declaration              
    | function_declaration          
    | class_declaration             
    | covergroup_declaration        
    | class_constructor_declaration 
    | SEMICOLUMN                    
    | surelog_macro_not_defined
    ; 

local_parameter_declaration 
   : LOCALPARAM data_type_or_implicit list_of_param_assignments 
   | LOCALPARAM TYPE list_of_param_assignments                  
   ; 


parameter_declaration  
    : PARAMETER data_type_or_implicit list_of_param_assignments 
    | PARAMETER TYPE list_of_type_assignments                   
    ; 
     

specparam_declaration : 
    SPECPARAM ( packed_dimension )? list_of_specparam_assignments SEMICOLUMN ; 



inout_declaration : INOUT net_port_type list_of_port_identifiers ; 


input_declaration  
    : INPUT net_port_type list_of_port_identifiers     
    | INPUT variable_port_type? list_of_variable_identifiers 
    ; 


output_declaration  
    : OUTPUT net_port_type list_of_port_identifiers             
    | OUTPUT variable_port_type? list_of_variable_port_identifiers    
    ; 


interface_port_declaration  
    : interface_identifier list_of_interface_identifiers 
    | interface_identifier DOT identifier  
      list_of_interface_identifiers                      
    ; 


ref_declaration : REF variable_port_type list_of_variable_identifiers ; 



data_declaration 
    : ( CONST )? ( VAR )? ( lifetime )? variable_declaration
    | type_declaration                              
    | package_import_declaration
    | net_type_declaration                          
//  | virtual_interface_declaration                 
    ;
    
variable_declaration : (  data_type                               
                        | signing ( packed_dimension )*      
                        | ( packed_dimension )+
		       )
			list_of_variable_decl_assignments SEMICOLUMN ;

package_import_declaration : 
    IMPORT package_import_item ( COMMA package_import_item )*  SEMICOLUMN ; 


package_import_item  
    : identifier COLUMNCOLUMN identifier 
    | identifier COLUMNCOLUMN STAR       
    ; 

package_export_declaration  
      : EXPORT STARCOLUMNCOLUMNSTAR SEMICOLUMN 
      | EXPORT package_import_item ( COMMA package_import_item )? SEMICOLUMN 
      ; 

genvar_declaration : GENVAR identifier_list SEMICOLUMN ; 

net_declaration  
    : net_type ( drive_strength | charge_strength )? ( VECTORED | SCALARED )? 
      data_type_or_implicit ( delay3 )? list_of_net_decl_assignments SEMICOLUMN 
    | identifier delay_control? list_of_net_decl_assignments SEMICOLUMN 
    | INTERCONNECT implicit_data_type ( pound_delay_value )? identifier unpacked_dimension* 
      ( COMMA identifier unpacked_dimension* )? SEMICOLUMN 
   ; 


type_declaration  
    : TYPEDEF
       (
           ( (data_type | net_type) identifier variable_dimension* ) 
         | ( identifier constant_bit_select DOT identifier identifier )
	 | ( ( enum_keyword | struct_keyword | union_keyword | class_keyword | interface_class_keyword )? identifier )
       )
      SEMICOLUMN
    ;

enum_keyword : ENUM;

struct_keyword : STRUCT;

union_keyword : UNION;

class_keyword : CLASS;

interface_class_keyword : INTERFACE CLASS;

net_type_declaration  
    : NETTYPE
        (
            ( data_type identifier ( WITH ( package_scope | class_scope )? identifier )? ) 
          | ( ( package_scope | class_scope )? identifier identifier )
	) 
      SEMICOLUMN 
    ; 

lifetime 
    : STATIC    # Lifetime_Static 
    | AUTOMATIC # Lifetime_Automatic 
    ;
    
casting_type  
    : simple_type
    | primary_literal                                  
//    | ( package_scope | class_scope )? identifier constant_select ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )? 
//    | constant_concatenation ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )?    
//    | constant_multiple_concatenation ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )?                        
//    | subroutine_call
    | OPEN_PARENS constant_mintypmax_expression CLOSE_PARENS 
//    | casting_type TICK ( OPEN_PARENS constant_expression CLOSE_PARENS | constant_concatenation | constant_multiple_concatenation )                      
//    | constant_assignment_pattern_expression           
//    | type_reference
    | signing    
    | string_type   
    | const_type
    | system_task
    ;
    
data_type  
    : integer_vector_type ( signing )? ( packed_dimension )* 
    | integer_atom_type ( signing )?                         
    | non_integer_type                                       
    | struct_union ( packed_keyword ( signing )? )? OPEN_CURLY struct_union_member ( struct_union_member )* CLOSE_CURLY ( packed_dimension )* 
    | ENUM ( enum_base_type )? OPEN_CURLY enum_name_declaration ( COMMA enum_name_declaration )* CLOSE_CURLY           
    | string_type                                               
    | chandle_type                                             
    | VIRTUAL ( INTERFACE )? interface_identifier ( parameter_value_assignment )? ( DOT identifier )?                            
    | ( class_scope | package_scope )? identifier ( ( packed_dimension )+ | (( parameter_value_assignment )?  ( COLUMNCOLUMN identifier ( parameter_value_assignment )? )*) )      
    | event_type                                                 
    | type_reference                                         
    ;

packed_keyword : PACKED;

string_type : STRING ;

string_value : String ;

chandle_type : CHANDLE ;

event_type : EVENT ;

const_type : CONST ;

data_type_or_implicit  
    : data_type                               
    | ( signing )? ( packed_dimension )*      
    ; 

implicit_data_type : 
      signing? packed_dimension*; 

enum_base_type  
    : integer_atom_type ( signing )?                         
    | integer_vector_type ( signing )? ( packed_dimension )? 
    | identifier ( packed_dimension )?                  
    ; 

enum_name_declaration  
    : identifier  
      ( OPEN_BRACKET Integral_number ( COLUMN Integral_number )? CLOSE_BRACKET )?  
      ( ASSIGN_OP constant_expression )?  
    ; 

class_scope : class_type COLUMNCOLUMN ; 

// identifier was inlined to lexer tokens for parsing speed
class_type : 
    ( Simple_identifier   
    | Escaped_identifier  
    | THIS                
    | RANDOMIZE           
    | SAMPLE
    | DOLLAR_UNIT ) ( parameter_value_assignment )? ( COLUMNCOLUMN identifier ( parameter_value_assignment )? )* 
    ; 

integer_type  
    : integer_vector_type 
    | integer_atom_type   
    ; 

integer_atom_type  
    : BYTE     # IntegerAtomType_Byte 
    | SHORTINT # IntegerAtomType_Shortint 
    | INT      # IntegerAtomType_Int 
    | LONGINT  # IntegerAtomType_LongInt 
    | INTEGER  # IntegerAtomType_Int 
    | TIME     # IntegerAtomType_Time 
    ; 

integer_vector_type  
    : BIT    # IntVec_TypeBit 
    | LOGIC  # IntVec_TypeLogic 
    | REG    # IntVec_TypeReg 
    ; 


non_integer_type  
    : SHORTREAL  # NonIntType_ShortReal 
    | REAL       # NonIntType_Real 
    | REALTIME   # NonIntType_RealTime 
    ; 


net_type  
    : SUPPLY0 # NetType_Supply0 
    | SUPPLY1 # NetType_Supply1 
    | TRI     # NetType_Tri 
    | TRIAND  # NetType_TriAnd 
    | TRIOR   # NetType_TriOr 
    | TRIREG  # NetType_TriReg 
    | TRI0    # NetType_Tri0 
    | TRI1    # NetType_Tri1 
    | UWIRE   # NetType_Uwire 
    | WIRE    # NetType_Wire 
    | WAND    # NetType_Wand 
    | WOR     # NetType_Wor 
    ; 

net_port_type : 
        net_type? data_type_or_implicit 
      | identifier 
      | INTERCONNECT implicit_data_type ; 

variable_port_type 
      : var_data_type 
      | OPEN_BRACKET constant_range CLOSE_BRACKET
      ;

var_data_type : 
        data_type 
      | VAR data_type_or_implicit ; 
  
signing  
    : SIGNED    # Signing_Signed 
    | UNSIGNED  # Signing_Unsigned 
    ; 
  

simple_type  
    : integer_type       
    | non_integer_type   
    | ps_type_identifier 
    ; 

random_qualifier :
       RAND  # RandomQualifier_Rand
     | RANDC # RandomQualifier_RandC
     ;

struct_union_member : 
( attribute_instance )* ( random_qualifier )? data_type_or_void list_of_variable_decl_assignments SEMICOLUMN ; 


data_type_or_void  
    : data_type 
    | VOID      
    ; 

struct_union  
    : struct_keyword            
    | union_keyword ( tagged_keyword )? 
    ; 

tagged_keyword : TAGGED;

type_reference : 
      TYPE OPEN_PARENS expression CLOSE_PARENS | TYPE OPEN_PARENS data_type CLOSE_PARENS ; 

drive_strength  
    : OPEN_PARENS strength0 COMMA strength1 CLOSE_PARENS 
    | OPEN_PARENS strength1 COMMA strength0 CLOSE_PARENS 
    | OPEN_PARENS strength0 COMMA HIGHZ1 CLOSE_PARENS    
    | OPEN_PARENS strength1 COMMA HIGHZ0 CLOSE_PARENS    
    | OPEN_PARENS HIGHZ0 COMMA strength1 CLOSE_PARENS    
    | OPEN_PARENS HIGHZ1 COMMA strength0 CLOSE_PARENS    
; 

strength0  
    : SUPPLY0 # Strength0_Supply0 
    | STRONG0 # Strength0_Strong0 
    | PULL0   # Strength0_Pull0 
    | WEAK0   # Strength0_Weak0 
    ; 

strength1  
    : SUPPLY1 # Strength1_Supply1 
    | STRONG1 # Strength1_Strong1 
    | PULL1   # Strength1_Pull1 
    | WEAK1   # Strength1_Weak1 
    ;
   
charge_strength  
    :  SMALL  # ChargeStrength_Small 
    |  MEDIUM # ChargeStrength_Medium  
    |  LARGE  # ChargeStrength_Large 
    ; 

delay3  
    : pound_delay_value                                                
    | POUND OPEN_PARENS mintypmax_expression ( COMMA mintypmax_expression  
                       ( COMMA mintypmax_expression )? )? CLOSE_PARENS 
    ; 

delay2  
    : pound_delay_value                          
    | POUND OPEN_PARENS mintypmax_expression  
      ( COMMA mintypmax_expression )? CLOSE_PARENS 
    ;


pound_delay_value
   : Pound_delay (time_unit)?
   | POUND delay_value ;

delay_value 
    : Integral_number 
    | Real_number     
    | ps_identifier   
    | time_literal    
    | ONESTEP         
    | ps_or_hierarchical_identifier 
//REMOVED  | Decimal_number 
    ; 

list_of_defparam_assignments : defparam_assignment ( COMMA defparam_assignment )* ; 

list_of_interface_identifiers : interface_identifier ( unpacked_dimension )* 
        ( COMMA interface_identifier ( unpacked_dimension )* )* ; 

list_of_net_decl_assignments : net_decl_assignment ( COMMA net_decl_assignment )* ; 

list_of_param_assignments : param_assignment ( COMMA param_assignment )* ; 

list_of_port_identifiers : identifier ( unpacked_dimension )* 
    ( COMMA identifier ( unpacked_dimension )* )* ; 

list_of_specparam_assignments : specparam_assignment ( COMMA specparam_assignment )* ; 
                                
list_of_tf_variable_identifiers : identifier variable_dimension* ( ASSIGN_OP expression )? 
    ( COMMA identifier variable_dimension* ( ASSIGN_OP expression )? )* ; 

list_of_type_assignments : (identifier (ASSIGN_OP data_type)? ) ( COMMA (identifier (ASSIGN_OP data_type)? ) )* ; 

list_of_variable_decl_assignments : variable_decl_assignment ( COMMA variable_decl_assignment )* ; 

list_of_variable_identifiers : identifier variable_dimension* 
        ( COMMA identifier variable_dimension* )* ; 

list_of_variable_port_identifiers : identifier variable_dimension* ( ASSIGN_OP constant_expression )? 
    ( COMMA identifier variable_dimension* ( ASSIGN_OP constant_expression )? )* ; 

list_of_virtual_interface_decl : 
    identifier ( ASSIGN_OP identifier )? 
    ( COMMA identifier ( ASSIGN_OP identifier )? )* ; 

defparam_assignment : hierarchical_identifier ASSIGN_OP constant_mintypmax_expression ; 

net_decl_assignment : identifier ( unpacked_dimension )* ( ASSIGN_OP expression )? ; 

param_assignment : identifier ( unpacked_dimension )* (ASSIGN_OP constant_param_expression)? ; 

specparam_assignment  
    : identifier ASSIGN_OP constant_mintypmax_expression  
    | pulse_control_specparam                                   
    ; 

pulse_control_specparam  
    : PATHPULSE DOLLAR ASSIGN_OP OPEN_PARENS  constant_mintypmax_expression
      ( COMMA constant_mintypmax_expression )? CLOSE_PARENS SEMICOLUMN  
    | PATHPULSE DOLLAR specify_input_terminal_descriptor  
      DOLLAR specify_output_terminal_descriptor ASSIGN_OP OPEN_PARENS  
      constant_mintypmax_expression ( COMMA constant_mintypmax_expression )? CLOSE_PARENS SEMICOLUMN  
                                                            
    ; 

variable_decl_assignment  
    : identifier ( (ASSIGN_OP class_new ) 
                 | ( unsized_dimension variable_dimension*  ( ASSIGN_OP dynamic_array_new )?)
		 | ( ASSIGN_OP NEW ( OPEN_PARENS list_of_arguments CLOSE_PARENS )?)
                 | (variable_dimension* ( ASSIGN_OP expression )?) )		 
         //        | ASSIGN_OP NEW ( OPEN_PARENS list_of_arguments CLOSE_PARENS )?                                                     
    ; 

class_new : (class_scope)? NEW ( OPEN_PARENS list_of_arguments CLOSE_PARENS | expression )? ; 

dynamic_array_new : NEW OPEN_BRACKET expression CLOSE_BRACKET ( OPEN_PARENS expression CLOSE_PARENS )? ; 

unpacked_dimension  
    : OPEN_BRACKET constant_range CLOSE_BRACKET      
    | OPEN_BRACKET constant_expression CLOSE_BRACKET 
    ; 

packed_dimension  
    : OPEN_BRACKET constant_range CLOSE_BRACKET 
    | unsized_dimension                         
    ;                 


associative_dimension  
    : OPEN_BRACKET data_type CLOSE_BRACKET 
    | ASSOCIATIVE_UNSPECIFIED    
    ; 


variable_dimension  
    : unsized_dimension
    | unpacked_dimension
    | associative_dimension           
    | queue_dimension                 
    ; 

queue_dimension : OPEN_BRACKET DOLLAR ( COLUMN constant_expression )? CLOSE_BRACKET ; 

unsized_dimension : OPEN_BRACKET CLOSE_BRACKET ; 

function_data_type  
    : data_type 
    | VOID      
    ; 

function_data_type_or_implicit  
    : function_data_type                 
    | ( signing )? ( packed_dimension )* 
    ; 

function_declaration : FUNCTION ( lifetime )? function_body_declaration ; 

endfunction : ENDFUNCTION ;

function_body_declaration  
    : function_data_type_or_implicit 
        ( interface_identifier DOT | class_scope )? identifier SEMICOLUMN
        ( tf_item_declaration )* 
        ( function_statement_or_null )* 
        endfunction ( COLUMN identifier )?  
    | function_data_type_or_implicit 
        ( interface_identifier DOT | class_scope )? identifier OPEN_PARENS  
        ( tf_port_list )? CLOSE_PARENS SEMICOLUMN 
        ( block_item_declaration )* 
        ( function_statement_or_null )* 
        endfunction ( COLUMN identifier )?  
    ;

function_prototype : FUNCTION function_data_type_or_implicit identifier ( OPEN_PARENS ( tf_port_list )? CLOSE_PARENS )?;         
         
dpi_import_export  
    : IMPORT string_value ( context_keyword | pure_keyword )? ( Simple_identifier ASSIGN_OP )?  function_prototype SEMICOLUMN  
    | IMPORT string_value ( context_keyword )? ( Simple_identifier ASSIGN_OP )?  task_prototype  SEMICOLUMN      
    | EXPORT string_value ( Simple_identifier ASSIGN_OP )? (function_name_decl | task_name_decl)  SEMICOLUMN 
    ; 

context_keyword : CONTEXT ;

function_name_decl : FUNCTION identifier;

task_name_decl : TASK identifier;

pure_keyword : PURE;

task_declaration : TASK ( lifetime )? task_body_declaration ; 

endtask : ENDTASK ; 

task_body_declaration  
    : ( interface_identifier DOT | class_scope )? identifier SEMICOLUMN 
    ( tf_item_declaration )* 
    ( statement_or_null )* 
    endtask ( COLUMN identifier )?   
    | ( interface_identifier DOT | class_scope )? identifier OPEN_PARENS (tf_port_list )? CLOSE_PARENS SEMICOLUMN 
    ( block_item_declaration )* 
    ( statement_or_null )* 
    endtask ( COLUMN identifier )? 
    ; 


tf_item_declaration  
    : block_item_declaration 
    | tf_port_declaration    
    ; 

tf_port_list : tf_port_item ( COMMA tf_port_item )* ; 

tf_port_item : ( attribute_instance )* 
        ( tf_port_direction )? ( VAR )? data_type_or_implicit 
        identifier variable_dimension* ( ASSIGN_OP expression )? ; 

tf_port_direction
    : INPUT     # TfPortDir_Inp 
    | OUTPUT    # TfPortDir_Out 
    | INOUT     # TfPortDir_Inout 
    | REF       # TfPortDir_Ref 
    | CONST REF # TfPortDir_ConstRef      
    ; 

tf_port_declaration : ( attribute_instance )* tf_port_direction ( VAR )? 
                      data_type_or_implicit list_of_tf_variable_identifiers SEMICOLUMN ; 


task_prototype : TASK identifier ( OPEN_PARENS ( tf_port_list )? CLOSE_PARENS )?; 

block_item_declaration  
    : ( attribute_instance )* ( data_declaration                 
                              | local_parameter_declaration      
                              | parameter_declaration SEMICOLUMN 
                              | overload_declaration )             
                              ; 

overload_declaration : BIND overload_operator FUNCTION data_type identifier  
                       OPEN_PARENS overload_proto_formals CLOSE_PARENS SEMICOLUMN ; 

overload_operator  
    : PLUS          # OverloadOp_Plus 
    | PLUSPLUS      # OverloadOp_PlusPlus 
    | MINUS         # OverloadOp_Minus 
    | MINUSMINUS    # OverloadOp_MinusMinus 
    | STAR          # OverloadOp_Mult 
    | STARSTAR      # OverloadOp_StarStar 
    | DIV           # OverloadOp_Div 
    | PERCENT       # OverloadOp_Percent 
    | EQUIV         # OverloadOp_Equiv 
    | NOTEQUAL      # OverloadOp_NotEqual 
    | LESS          # OverloadOp_Less 
    | LESS_EQUAL    # OverloadOp_LessEqual 
    | GREATER       # OverloadOp_Greater 
    | GREATER_EQUAL # OverloadOp_GreaterEqual 
    | ASSIGN_OP     # OverloadOp_Equal 
    ; 

overload_proto_formals : data_type ( COMMA data_type)* ; 

virtual_interface_declaration : VIRTUAL ( INTERFACE )? interface_identifier  
                                list_of_virtual_interface_decl SEMICOLUMN ;  

modport_item : identifier OPEN_PARENS modport_ports_declaration ( COMMA modport_ports_declaration )* CLOSE_PARENS ; 


modport_ports_declaration  
    : ( attribute_instance )* ( modport_simple_ports_declaration       
                              | modport_hierarchical_ports_declaration 
                              | modport_tf_ports_declaration           
                              | CLOCKING identifier )                    
    ; 

modport_simple_ports_declaration : port_direction modport_simple_port  
                                   ( COMMA modport_simple_port )* ; 

modport_simple_port  
    : identifier                               
    | DOT identifier OPEN_PARENS ( expression )* 
      CLOSE_PARENS                                  
    ; 

modport_hierarchical_ports_declaration : identifier  
                                         ( OPEN_BRACKET constant_expression CLOSE_BRACKET )?  
                                         DOT identifier ; 

modport_tf_ports_declaration : ( IMPORT | EXPORT ) modport_tf_port ( COMMA modport_tf_port )* ; 

modport_tf_port  
    : method_prototype 
    | identifier    
    ; 
       
concurrent_assertion_item 
      : ( identifier COLUMN )? concurrent_assertion_statement 
      | checker_instantiation 
      ; 


concurrent_assertion_statement  
    : assert_property_statement 
    | assume_property_statement 
    | cover_property_statement  
    | cover_sequence_statement  
    | restrict_property_statement 
    ; 


assert_property_statement : 
    ASSERT PROPERTY OPEN_PARENS property_spec CLOSE_PARENS action_block ; 


assume_property_statement : 
    ASSUME PROPERTY OPEN_PARENS property_spec CLOSE_PARENS SEMICOLUMN ; 


cover_property_statement : 
    COVER PROPERTY OPEN_PARENS property_spec CLOSE_PARENS statement_or_null ; 


expect_property_statement : 
    EXPECT OPEN_PARENS property_spec CLOSE_PARENS action_block ; 


cover_sequence_statement : 
  COVER SEQUENCE OPEN_PARENS ( clocking_event )? ( DISABLE IFF OPEN_PARENS expression_or_dist CLOSE_PARENS )? 
  sequence_expr CLOSE_PARENS statement_or_null ; 

restrict_property_statement : 
    RESTRICT PROPERTY OPEN_PARENS property_spec CLOSE_PARENS SEMICOLUMN ; 

property_instance : 
   ps_or_hierarchical_sequence_identifier ( OPEN_PARENS ( actual_arg_list )? CLOSE_PARENS )? ; 

//property_list_of_arguments
//  : (property_actual_arg)? ( COMMA (property_actual_arg)? )* ( COMMA DOT identifier OPEN_PARENS (property_actual_arg)? CLOSE_PARENS )*
//  | DOT identifier OPEN_PARENS (property_actual_arg)? CLOSE_PARENS ( COMMA DOT identifier OPEN_PARENS (property_actual_arg)? CLOSE_PARENS )*
//  ;

property_actual_arg 
  : property_expr 
  | sequence_actual_arg 
  ; 


concurrent_assertion_item_declaration  
    : property_declaration 
    | sequence_declaration 
    ; 

assertion_item_declaration 
      : property_declaration 
      | sequence_declaration 
      | let_declaration 
      ; 

endproperty : ENDPROPERTY ;

property_declaration : 
    PROPERTY identifier ( OPEN_PARENS ( list_of_formals )? CLOSE_PARENS )? SEMICOLUMN 
    ( assertion_variable_declaration )* 
    property_spec (SEMICOLUMN)? 
    endproperty ( COLUMN identifier )? ; 

property_formal_type  
   : sequence_formal_type 
   | PROPERTY             
   ; 
    
property_spec : 
    ( clocking_event )? ( DISABLE IFF OPEN_PARENS expression_or_dist CLOSE_PARENS )? property_expr ; 

endcase : ENDCASE ;

property_expr  
    : sequence_expr                               
    | STRONG OPEN_PARENS sequence_expr CLOSE_PARENS 
    | WEAK   OPEN_PARENS sequence_expr CLOSE_PARENS 
    | OPEN_PARENS property_expr CLOSE_PARENS      
    | NOT property_expr                           
    | property_expr OR property_expr              
    | property_expr AND property_expr             
    | sequence_expr OVERLAP_IMPLY property_expr   
    | sequence_expr NON_OVERLAP_IMPLY property_expr 
    | IF OPEN_PARENS expression_or_dist CLOSE_PARENS property_expr  
            ( ELSE property_expr )?               
    | CASE OPEN_PARENS expression_or_dist CLOSE_PARENS property_case_item property_case_item* endcase 
                                                  
    | sequence_expr OVERLAPPED property_expr      
    | sequence_expr NONOVERLAPPED property_expr   
    | NEXTTIME property_expr                      
    | NEXTTIME OPEN_BRACKET constant_expression CLOSE_BRACKET property_expr 
                                                  
    | S_NEXTTIME property_expr                    
    | S_NEXTTIME OPEN_BRACKET constant_expression CLOSE_BRACKET property_expr 
                                                  
    | ALWAYS property_expr                        
    | ALWAYS OPEN_BRACKET cycle_delay_const_range_expression CLOSE_BRACKET property_expr 
                                                  
    | S_ALWAYS OPEN_BRACKET constant_range CLOSE_BRACKET property_expr 
                                                  
    | S_EVENTUALLY property_expr                  
    | EVENTUALLY OPEN_BRACKET constant_range CLOSE_BRACKET property_expr 
                                                  
    | S_EVENTUALLY OPEN_BRACKET cycle_delay_const_range_expression CLOSE_BRACKET property_expr 
                                                  
    | property_expr UNTIL property_expr           
    | property_expr S_UNTIL property_expr         
    | property_expr UNTIL_WITH property_expr      
    | property_expr S_UNTIL_WITH property_expr    
    | property_expr IMPLIES property_expr         
    | property_expr IFF property_expr             
    | ACCEPT_ON OPEN_PARENS expression_or_dist CLOSE_PARENS property_expr 
    | REJECT_ON OPEN_PARENS expression_or_dist CLOSE_PARENS property_expr 
    | SYNC_ACCEPT_ON OPEN_PARENS expression_or_dist CLOSE_PARENS property_expr 
    | SYNC_REJECT_ON OPEN_PARENS expression_or_dist CLOSE_PARENS property_expr 
    | property_instance                           
    | clocking_event property_expr                
    ; 

property_case_item  
     : expression_or_dist ( COMMA expression_or_dist )* COLUMN property_expr SEMICOLUMN? 
     | DEFAULT COLUMN? property_expr SEMICOLUMN? 
     ; 

endsequence : ENDSEQUENCE;

sequence_declaration : 
    SEQUENCE identifier ( OPEN_PARENS ( list_of_formals )? CLOSE_PARENS )? SEMICOLUMN 
    ( assertion_variable_declaration )* 
    sequence_expr (SEMICOLUMN)? 
    endsequence ( COLUMN identifier )? 
    ; 


sequence_expr  
    : cycle_delay_range sequence_expr ( cycle_delay_range sequence_expr )*  
                                                       
    | sequence_expr cycle_delay_range sequence_expr ( cycle_delay_range sequence_expr )*  
                                                       
    | expression_or_dist ( boolean_abbrev )?           
    | OPEN_PARENS expression_or_dist ( COMMA sequence_match_item )* CLOSE_PARENS ( boolean_abbrev )? 
                                                       
    | sequence_instance ( consecutive_repetition )? 
    | OPEN_PARENS sequence_expr ( COMMA sequence_match_item )* CLOSE_PARENS  
      ( consecutive_repetition )?                             
    | sequence_expr AND sequence_expr                  
    | sequence_expr INTERSECT sequence_expr            
    | sequence_expr OR sequence_expr                   
    | FIRST_MATCH OPEN_PARENS sequence_expr ( COMMA sequence_match_item )*  
      CLOSE_PARENS                                     
    | expression_or_dist THROUGHOUT sequence_expr      
    | sequence_expr WITHIN sequence_expr               
    | clocking_event sequence_expr                     
    ; 


cycle_delay_range  
    : POUNDPOUND constant_primary    
    | POUNDPOUND OPEN_BRACKET cycle_delay_const_range_expression  
      CLOSE_BRACKET                  
    | POUNDPOUND ASSOCIATIVE_UNSPECIFIED 
    | POUNDPOUND OPEN_BRACKET PLUS CLOSE_BRACKET 
    ; 
     

sequence_method_call : sequence_instance DOT identifier ; 


sequence_match_item  
    : operator_assignment   
    | inc_or_dec_expression 
    | subroutine_call       
    ; 

sequence_formal_type  
  : data_type_or_implicit # SeqFormatType_Data
  | SEQUENCE              # SeqFormatType_Sequence
  | UNTYPED               # SeqFormatType_Untyped
  ; 

sequence_instance : 
      ps_or_hierarchical_sequence_identifier ( OPEN_PARENS sequence_list_of_arguments CLOSE_PARENS )? ; 

sequence_list_of_arguments  
    : sequence_actual_arg? ( COMMA sequence_actual_arg? )* 
      ( COMMA DOT identifier OPEN_PARENS sequence_actual_arg? CLOSE_PARENS )* 
    | DOT identifier OPEN_PARENS sequence_actual_arg? CLOSE_PARENS 
      ( COMMA DOT identifier OPEN_PARENS sequence_actual_arg? CLOSE_PARENS )* 
    ; 

sequence_actual_arg  
  : event_expression 
  | sequence_expr 
  ; 
   

formal_list_item : 
    identifier ( ASSIGN_OP actual_arg_expr )? ; 


list_of_formals : formal_list_item ( COMMA formal_list_item )* ; 
     

actual_arg_list  
    : actual_arg_expr ( COMMA actual_arg_expr )*     
    | DOT identifier OPEN_PARENS actual_arg_expr CLOSE_PARENS  
      ( COMMA DOT identifier OPEN_PARENS actual_arg_expr CLOSE_PARENS )* 
                                                     
    ; 


actual_arg_expr  
    : event_expression 
    | dollar_keyword          
    ; 


boolean_abbrev  
    : consecutive_repetition     
    | non_consecutive_repetition 
    | goto_repetition            
    ; 
     

consecutive_repetition : CONSECUTIVE_REP const_or_range_expression CLOSE_BRACKET ; 


non_consecutive_repetition : NON_CONSECUTIVE_REP const_or_range_expression CLOSE_BRACKET ; 
                          

goto_repetition : GOTO_REP const_or_range_expression CLOSE_BRACKET ; 


const_or_range_expression  
    : constant_expression                
    | cycle_delay_const_range_expression 
    ; 


cycle_delay_const_range_expression  
    : constant_expression COLUMN constant_expression 
    | constant_expression COLUMN DOLLAR              
    ; 


expression_or_dist : expression ( DIST OPEN_CURLY dist_list CLOSE_CURLY )? ; 


assertion_variable_declaration : 
    data_type list_of_variable_identifiers SEMICOLUMN ; 


let_declaration : 
   LET identifier ( OPEN_PARENS ( let_port_list )? CLOSE_PARENS )? ASSIGN_OP expression SEMICOLUMN ; 


let_port_list : 
   let_port_item ( COMMA let_port_item)* ; 

let_port_item : 
   ( attribute_instance )* let_formal_type identifier ( variable_dimension )* ( ASSIGN_OP expression )? ; 

let_formal_type : 
   data_type_or_implicit 
   | UNTYPED ; 

/*
let_expression : 
  ( package_scope )? identifier ( OPEN_PARENS list_of_arguments  CLOSE_PARENS )? ; 
*/

endgroup : ENDGROUP ;

covergroup_declaration : 
    COVERGROUP identifier ( OPEN_PARENS ( tf_port_list )? CLOSE_PARENS )? ( coverage_event )? SEMICOLUMN 
    ( coverage_spec_or_option )* 
    endgroup ( COLUMN identifier )? ; 
                       

coverage_spec_or_option  
    : ( attribute_instance )* ( coverage_spec              
                              | coverage_option SEMICOLUMN ) 
    ; 


coverage_option  
    : OPTION_DOT identifier ASSIGN_OP expression      
    | TYPE_OPTION_DOT identifier ASSIGN_OP expression 
    ; 


coverage_spec  
    : cover_point 
    | cover_cross 
    ; 


coverage_event  
    : clocking_event                                       
    | WITH FUNCTION SAMPLE OPEN_PARENS tf_port_list? CLOSE_PARENS 
    | ATAT OPEN_PARENS block_event_expression CLOSE_PARENS 
    ; 

end : END ;

block_event_expression  
    : block_event_expression OR block_event_expression 
    | BEGIN hierarchical_btf_identifier                
    | end hierarchical_btf_identifier                  
    ; 


hierarchical_btf_identifier  
    : hierarchical_identifier                             
    |  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  ( class_scope )? identifier 
    ; 


cover_point : ( identifier COLUMN )? COVERPOINT expression ( IFF OPEN_PARENS expression CLOSE_PARENS )? bins_or_empty ; 


bins_or_empty  
    : OPEN_CURLY ( attribute_instance )*  
      ( bins_or_options SEMICOLUMN )* CLOSE_CURLY 
    | SEMICOLUMN                                  
    ; 



bins_or_options  
    : coverage_option                               
    | ( WILDCARD )? bins_keyword identifier ( OPEN_BRACKET ( expression )? CLOSE_BRACKET )?  
       ASSIGN_OP OPEN_CURLY range_list CLOSE_CURLY ( WITH OPEN_PARENS expression CLOSE_PARENS )? 
       ( IFF OPEN_PARENS expression CLOSE_PARENS )? 
    | ( WILDCARD )? bins_keyword identifier ( OPEN_BRACKET ( expression )? CLOSE_BRACKET )? ASSIGN_OP 
      identifier ( WITH OPEN_PARENS expression CLOSE_PARENS )? 
      ( IFF OPEN_PARENS expression CLOSE_PARENS )?  
    | ( WILDCARD )? bins_keyword identifier ( OPEN_BRACKET ( expression )? CLOSE_BRACKET )? ASSIGN_OP 
      expression ( IFF OPEN_PARENS expression CLOSE_PARENS )? 
                                                    
    | ( WILDCARD )? bins_keyword identifier ( unsized_dimension )? 
      ASSIGN_OP trans_list ( IFF OPEN_PARENS expression CLOSE_PARENS )? 
                                                    
    | bins_keyword identifier ( OPEN_BRACKET ( expression )? CLOSE_BRACKET )? 
      ASSIGN_OP DEFAULT ( IFF OPEN_PARENS expression CLOSE_PARENS )? 
                                                    
    | bins_keyword identifier ASSIGN_OP DEFAULT SEQUENCE 
      ( IFF OPEN_PARENS expression CLOSE_PARENS )?  
    ; 


bins_keyword  
    : BINS  # Bins_Bins       
    | ILLEGAL_BINS  # Bins_Illegal
    | IGNORE_BINS   # Bins_Ignore
    ; 

range_list : value_range ( COMMA value_range )* ; 


trans_list : OPEN_PARENS trans_set CLOSE_PARENS ( COMMA OPEN_PARENS trans_set CLOSE_PARENS )* ;  


trans_set : trans_range_list  ( TRANSITION_OP trans_range_list )* ; 


trans_range_list  
    : range_list  
    | range_list  CONSECUTIVE_REP repeat_range CLOSE_BRACKET      
    | range_list  GOTO_REP repeat_range CLOSE_BRACKET             
    | range_list  NON_CONSECUTIVE_REP repeat_range CLOSE_BRACKET  
    ;
    
repeat_range  
    : expression                   
    | expression COLUMN expression 
    ; 


cover_cross : ( identifier COLUMN )? CROSS list_of_cross_items ( IFF OPEN_PARENS expression CLOSE_PARENS )? cross_body ; 


list_of_cross_items : cross_item COMMA cross_item ( COMMA cross_item )* ; 


cross_item  
    : identifier 
    | identifier    
    ; 


cross_body  
    : OPEN_CURLY ( cross_body_item SEMICOLUMN )? CLOSE_CURLY  
                                                        
    | SEMICOLUMN                                        
    ; 

cross_body_item  
      : function_declaration                  
      | bins_selection_or_option SEMICOLUMN  
      ; 


bins_selection_or_option  
    : ( attribute_instance )* ( coverage_option  
                              | bins_selection )   
    ; 


bins_selection : bins_keyword identifier ASSIGN_OP select_expression ( IFF OPEN_PARENS expression CLOSE_PARENS )? ; 


select_expression  
    : select_condition                                
    | BANG select_condition                           
    | select_expression LOGICAL_AND select_expression 
    | select_expression LOGICAL_OR select_expression  
    | OPEN_PARENS select_expression CLOSE_PARENS      
    | select_expression WITH OPEN_PARENS expression CLOSE_PARENS 
      ( MATCHES expression )?                         
    | identifier                                      
    | expression ( MATCHES expression )?              
    ; 


select_condition : BINSOF OPEN_PARENS bins_expression CLOSE_PARENS ( INTERSECT OPEN_CURLY open_range_list CLOSE_CURLY )? ; 


bins_expression  
    : identifier ( DOT identifier )? 
    ; 


open_range_list : value_range ( COMMA value_range )* ; 

gate_instantiation  
    : cmos_switchtype ( delay3 )? cmos_switch_instance ( COMMA cmos_switch_instance )* SEMICOLUMN 
         
    | enable_gatetype ( drive_strength )? ( delay3 )? enable_gate_instance ( COMMA enable_gate_instance )* SEMICOLUMN 
         
    | mos_switchtype ( delay3 )? mos_switch_instance ( COMMA mos_switch_instance )* SEMICOLUMN 
         
    | n_input_gatetype ( drive_strength )? ( delay2 )? n_input_gate_instance ( COMMA n_input_gate_instance )* SEMICOLUMN 
         
    | n_output_gatetype ( drive_strength )? ( delay2 )? n_output_gate_instance 
    ( COMMA n_output_gate_instance )* SEMICOLUMN 
         
    | pass_en_switchtype ( delay2 )? pass_enable_switch_instance ( COMMA pass_enable_switch_instance )* SEMICOLUMN 
         
    | pass_switchtype pass_switch_instance ( COMMA pass_switch_instance )* SEMICOLUMN 
         
    | PULLDOWN ( pulldown_strength )? pull_gate_instance ( COMMA pull_gate_instance )* SEMICOLUMN 
         
    | PULLUP ( pullup_strength )? pull_gate_instance ( COMMA pull_gate_instance )* SEMICOLUMN 
         
    ; 


cmos_switch_instance : ( name_of_instance )? OPEN_PARENS net_lvalue COMMA expression COMMA 
        expression COMMA expression CLOSE_PARENS ; 


enable_gate_instance : ( name_of_instance )? OPEN_PARENS net_lvalue COMMA expression COMMA expression CLOSE_PARENS ; 


mos_switch_instance : ( name_of_instance )? OPEN_PARENS net_lvalue COMMA expression COMMA expression CLOSE_PARENS ; 


n_input_gate_instance : ( name_of_instance )? OPEN_PARENS net_lvalue COMMA expression ( COMMA expression )* CLOSE_PARENS ; 


n_output_gate_instance : ( name_of_instance )? OPEN_PARENS net_lvalue ( COMMA net_lvalue )* COMMA 
                expression CLOSE_PARENS ; 


pass_switch_instance : ( name_of_instance )? OPEN_PARENS  net_lvalue COMMA  net_lvalue CLOSE_PARENS ; 


pass_enable_switch_instance : ( name_of_instance )? OPEN_PARENS  net_lvalue COMMA  net_lvalue COMMA 
    expression CLOSE_PARENS ; 


pull_gate_instance : ( name_of_instance )? OPEN_PARENS net_lvalue CLOSE_PARENS ; 


pulldown_strength  
    : OPEN_PARENS strength0 COMMA strength1 CLOSE_PARENS # PulldownStrength_01 
    | OPEN_PARENS strength1 COMMA strength0 CLOSE_PARENS # PulldownStrength_10 
    | OPEN_PARENS strength0 CLOSE_PARENS                 # PulldownStrength_0 
    ; 


pullup_strength  
    : OPEN_PARENS strength0 COMMA strength1 CLOSE_PARENS # PullupStrength_01 
    | OPEN_PARENS strength1 COMMA strength0 CLOSE_PARENS # PullupStrength_10 
    | OPEN_PARENS strength1 CLOSE_PARENS                 # PullupStrength_1 
    ; 

cmos_switchtype  
    : CMOS  # CmosSwitchType_Cmos 
    | RCMOS # CmosSwitchType_RCmos 
    ; 

enable_gatetype  
    : BUFIF0 # EnableGateType_Bufif0 
    | BUFIF1 # EnableGateType_Bufif1 
    | NOTIF0 # EnableGateType_Notif0 
    | NOTIF1 # EnableGateType_Notif1 
    ; 

mos_switchtype  
    : NMOS  # MosSwitchType_NMos 
    | PMOS  # MosSwitchType_PMos 
    | RNMOS # MosSwitchType_RNMos 
    | RPMOS # MosSwitchType_RPMos 
    ; 

n_input_gatetype  
    : AND  # NInpGate_And 
    | NAND # NInpGate_Nand 
    | OR   # NInpGate_Or 
    | NOR  # NInpGate_Nor 
    | XOR  # NInpGate_Xor 
    | XNOR # NInpGate_Xnor 
    ; 

n_output_gatetype  
    : BUF # NOutGate_Buf 
    | NOT # NOutGate_Not 
    ; 

pass_en_switchtype  
    : TRANIF0  # PassEnSwitch_Tranif0 
    | TRANIF1  # PassEnSwitch_Tranif1 
    | RTRANIF1 # PassEnSwitch_RTranif1 
    | RTRANIF0 # PassEnSwitch_RTranif0 
    ; 

pass_switchtype  
    : TRAN  # PassSwitch_Tran 
    | RTRAN # PassSwitch_RTran 
    ; 

module_instantiation : identifier ( parameter_value_assignment )?  
                       hierarchical_instance ( COMMA hierarchical_instance )* SEMICOLUMN ; 

parameter_value_assignment : POUND (OPEN_PARENS list_of_parameter_assignments? CLOSE_PARENS)
                           | Pound_delay
			   | POUND Simple_identifier
			   ;
			   
list_of_parameter_assignments  
    : ordered_parameter_assignment ( COMMA ordered_parameter_assignment )* 
    | named_parameter_assignment ( COMMA named_parameter_assignment )*     
    ; 

ordered_parameter_assignment : param_expression ; 
                                      

named_parameter_assignment : DOT identifier OPEN_PARENS ( param_expression )? CLOSE_PARENS ; 


hierarchical_instance : name_of_instance OPEN_PARENS  list_of_port_connections  CLOSE_PARENS ; 
                              

name_of_instance : identifier ( unpacked_dimension )* ; 
  

list_of_port_connections  
    : ordered_port_connection ( COMMA ordered_port_connection )* 
    | named_port_connection ( COMMA named_port_connection )*     
    ; 


ordered_port_connection : ( attribute_instance )* ( expression )? ; 


named_port_connection  
    : ( attribute_instance )* ( DOT identifier ( OPEN_PARENS ( expression )? CLOSE_PARENS )? 
                              | DOTSTAR )                            
    ; 

interface_instantiation : interface_identifier ( parameter_value_assignment )?  
                          hierarchical_instance ( COMMA hierarchical_instance )* SEMICOLUMN ; 

program_instantiation : identifier ( parameter_value_assignment )?  
                        hierarchical_instance ( COMMA hierarchical_instance )* SEMICOLUMN ; 

checker_instantiation : 
      ps_identifier name_of_instance OPEN_PARENS list_of_checker_port_connections CLOSE_PARENS ; 

list_of_checker_port_connections  
    : ordered_checker_port_connection ( COMMA ordered_checker_port_connection )? 
    | named_checker_port_connection  ( COMMA named_checker_port_connection )? 
    ; 
     
ordered_checker_port_connection : 
      ( attribute_instance )*  property_actual_arg? ; 
     
named_checker_port_connection  
    : ( attribute_instance )* ( DOT identifier ( OPEN_PARENS  property_actual_arg? CLOSE_PARENS )? 
                              | DOTSTAR ) 
    ; 

endgenerate : ENDGENERATE ; 

generated_module_instantiation : GENERATE ( generate_module_item )* endgenerate ; 


generate_module_item  
    : generate_module_conditional_statement 
    | generate_module_case_statement        
    | generate_module_loop_statement        
    | ( identifier COLUMN )?  
       generate_module_block                
    | module_or_generate_item               
    ; 


generate_module_conditional_statement : 
    IF OPEN_PARENS constant_expression CLOSE_PARENS generate_module_item  
    ( ELSE generate_module_item )? ;  


generate_module_case_statement :  
CASE OPEN_PARENS constant_expression CLOSE_PARENS genvar_module_case_item  
                                   ( genvar_module_case_item )* endcase ; 


genvar_module_case_item  
    : constant_expression ( COMMA constant_expression )* COLUMN generate_module_item  
                                                           
    | DEFAULT ( COLUMN )? generate_module_item                                       
                                                           
    ; 


generate_module_loop_statement : 
    FOR OPEN_PARENS genvar_decl_assignment SEMICOLUMN constant_expression  
    SEMICOLUMN genvar_assignment CLOSE_PARENS 
    generate_module_named_block ; 
                                

genvar_assignment  
    : identifier assignment_operator constant_expression 
    | inc_or_dec_operator identifier                     
    | identifier inc_or_dec_operator                     
    ; 


genvar_decl_assignment : 
    ( GENVAR )? identifier ASSIGN_OP constant_expression ; 


generate_module_named_block  
    : BEGIN COLUMN identifier ( generate_module_item )* 
      end ( COLUMN identifier )?               
    | identifier COLUMN generate_module_block  
    ; 


generate_module_block : 
    BEGIN ( COLUMN identifier )? ( generate_module_item )* end ( COLUMN identifier )? ; 



generated_interface_instantiation : GENERATE ( generate_interface_item )* endgenerate ; 


generate_interface_item  
    : generate_interface_conditional_statement 
    | generate_interface_case_statement        
    | generate_interface_loop_statement        
    | ( identifier COLUMN ) generate_interface_block  
                                               
    | interface_or_generate_item               
    ; 


generate_interface_conditional_statement : 
    IF OPEN_PARENS constant_expression CLOSE_PARENS generate_interface_item ( ELSE generate_interface_item )? ; 


generate_interface_case_statement : 
    CASE OPEN_PARENS constant_expression CLOSE_PARENS  
    genvar_interface_case_item ( genvar_interface_case_item )* endcase ; 


genvar_interface_case_item  
    : constant_expression ( COMMA constant_expression )* COLUMN generate_interface_item 
                                                  
    | DEFAULT ( COLUMN )? generate_interface_item 
    ; 


generate_interface_loop_statement : 
    FOR OPEN_PARENS genvar_decl_assignment SEMICOLUMN constant_expression  
    SEMICOLUMN genvar_assignment CLOSE_PARENS 
    generate_interface_named_block ; 


generate_interface_named_block  
    : BEGIN COLUMN identifier ( generate_interface_item )* end  
      ( COLUMN identifier )?  
    | identifier COLUMN generate_interface_block 
                                             
    ; 


generate_interface_block : 
    BEGIN ( COLUMN identifier )? 
    ( generate_interface_item )* 
    end ( COLUMN identifier )? ; 

generate_region : 
      GENERATE generate_item* endgenerate; 

loop_generate_construct : 
      FOR OPEN_PARENS genvar_initialization SEMICOLUMN constant_expression SEMICOLUMN genvar_iteration CLOSE_PARENS generate_block ; 

genvar_initialization : 
      GENVAR? identifier ASSIGN_OP constant_expression ; 

genvar_iteration  
    : identifier assignment_operator constant_expression 
    | inc_or_dec_operator identifier 
    | identifier inc_or_dec_operator 
    ; 

conditional_generate_construct  
      : if_generate_construct 
      | case_generate_construct 
      ; 

if_generate_construct : 
      IF OPEN_PARENS constant_expression CLOSE_PARENS generate_block ( ELSE generate_block )? ; 

case_generate_construct : 
      CASE OPEN_PARENS constant_expression CLOSE_PARENS case_generate_item  case_generate_item* endcase ; 

case_generate_item  
      : constant_expression ( COMMA constant_expression )* COLUMN generate_block 
      | DEFAULT ( COLUMN )? generate_block 
      ; 

generate_block  
    :  generate_item 
    | ( identifier COLUMN )? BEGIN ( COLUMN identifier )?  generate_item* end 
      ( COLUMN identifier )? 
    ; 

generate_item  
     : module_or_generate_item 
     | interface_or_generate_item 
     | checker_or_generate_item 
     ; 

udp_nonansi_declaration : ( attribute_instance )* PRIMITIVE identifier  
                          OPEN_PARENS udp_port_list CLOSE_PARENS SEMICOLUMN ;  

udp_ansi_declaration : ( attribute_instance )* PRIMITIVE identifier  
                       OPEN_PARENS udp_declaration_port_list CLOSE_PARENS SEMICOLUMN ;  

endprimitive : ENDPRIMITIVE ;

udp_declaration  
    : udp_nonansi_declaration udp_port_declaration ( udp_port_declaration )* 
        udp_body 
        endprimitive ( COLUMN identifier )? 
    | udp_ansi_declaration 
        udp_body 
        endprimitive ( COLUMN identifier )? 
    | EXTERN udp_nonansi_declaration            
    | EXTERN udp_ansi_declaration               
    | ( attribute_instance )* PRIMITIVE identifier OPEN_PARENS DOTSTAR  
        CLOSE_PARENS SEMICOLUMN 
        ( udp_port_declaration )* 
        udp_body 
        endprimitive ( COLUMN identifier )? 
    ; 

udp_port_list : identifier COMMA identifier ( COMMA identifier )* ; 

udp_declaration_port_list : udp_output_declaration COMMA  
                            udp_input_declaration ( COMMA udp_input_declaration )* ; 

udp_port_declaration  
    : udp_output_declaration SEMICOLUMN 
    | udp_input_declaration SEMICOLUMN  
    | udp_reg_declaration SEMICOLUMN    
    ; 
    
udp_output_declaration  
    : ( attribute_instance )* ( OUTPUT identifier 
                              | OUTPUT REG identifier ( ASSIGN_OP constant_expression )?)            
    ; 

udp_input_declaration : ( attribute_instance )* INPUT identifier_list ; 

udp_reg_declaration : ( attribute_instance )* REG identifier ; 

udp_body  
     : combinational_body 
     | sequential_body    
     ; 

endtable : ENDTABLE ;

combinational_body : TABLE combinational_entry ( combinational_entry )* endtable ; 
  
combinational_entry : level_input_list COLUMN output_symbol SEMICOLUMN ; 
                          
sequential_body : ( udp_initial_statement )? TABLE sequential_entry  
                                               ( sequential_entry )* endtable ; 
  
udp_initial_statement : INITIAL identifier ASSIGN_OP init_val SEMICOLUMN ; 
  

init_val
   : ONE_TICK_b0     # InitVal_1Tickb0
   | ONE_TICK_b1     # InitVal_1Tickb1
   | ONE_TICK_B0     # InitVal_1TickB0
   | ONE_TICK_B1     # InitVal_1TickB1
   | ONE_TICK_bx     # InitVal_1Tickbx
   | ONE_TICK_bX     # InitVal_1TickbX
   | ONE_TICK_Bx     # InitVal_1TickBx
   | ONE_TICK_BX     # InitVal_1TickBX
   | Integral_number # InitVal_Integral
   ; 
  

sequential_entry : seq_input_list COLUMN level_symbol COLUMN next_state SEMICOLUMN ; 
  

seq_input_list   
    : level_input_list 
    | edge_input_list  
    ; 
  

level_input_list : level_symbol ( level_symbol )* ; 
  

edge_input_list : ( level_symbol )* edge_indicator ( level_symbol )* ; 
  

edge_indicator  
     : OPEN_PARENS /* Will have to check post parse time that there are 2 items (10 becomes one int): */
                   level_symbol+ CLOSE_PARENS 
     | edge_symbol                                        
     ; 
    
next_state  
     : output_symbol 
     | MINUS         
     ; 

output_symbol : Integral_number | Simple_identifier ; 
    
level_symbol : Integral_number | Simple_identifier | QMARK ; 

edge_symbol : Simple_identifier | STAR ; 

udp_instantiation : identifier ( drive_strength )? ( delay2 )?  
                    udp_instance ( COMMA udp_instance )* SEMICOLUMN ; 

udp_instance : ( name_of_instance )? OPEN_PARENS net_lvalue COMMA  
               expression ( COMMA expression )* CLOSE_PARENS ; 

continuous_assign  
    : ASSIGN ( drive_strength )? ( delay3 )? list_of_net_assignments SEMICOLUMN  
                                                    
    | ASSIGN_OP ( delay_control )? list_of_variable_assignments SEMICOLUMN  
                                                    
    ; 
     
list_of_net_assignments : net_assignment ( COMMA net_assignment )* ; 

list_of_variable_assignments : variable_assignment ( COMMA variable_assignment )* ; 

net_alias : ALIAS net_lvalue (ASSIGN_OP net_lvalue)+ SEMICOLUMN ; 

net_assignment : net_lvalue ASSIGN_OP expression ; 

initial_construct : INITIAL statement_or_null ; 

always_construct : always_keyword statement ; 

always_keyword  
    : ALWAYS       # AlwaysKeywd_Always 
    | ALWAYS_COMB  # AlwaysKeywd_Comb 
    | ALWAYS_LATCH # AlwaysKeywd_Latch 
    | ALWAYS_FF    # AlwaysKeywd_FF 
    ; 

blocking_assignment  
    : variable_lvalue ASSIGN_OP delay_or_event_control expression   
    | nonrange_variable_lvalue ASSIGN_OP dynamic_array_new  
                                                                
    | ( implicit_class_handle DOT | class_scope | package_scope )? hierarchical_identifier  
        select ASSIGN_OP class_new                                  
    | operator_assignment                                       
    ; 

operator_assignment : variable_lvalue assignment_operator expression ; 

assignment_operator  
    : ASSIGN_OP  # AssignOp_Assign
    | ADD_ASSIGN  # AssignOp_Add
    | SUB_ASSIGN  # AssignOp_Sub
    | MULT_ASSIGN  # AssignOp_Mult
    | DIV_ASSIGN  # AssignOp_Div
    | MODULO_ASSIGN  # AssignOp_Modulo
    | BITW_AND_ASSIGN  # AssignOp_BitwAnd
    | BITW_OR_ASSIGN  # AssignOp_BitwOr
    | BITW_XOR_ASSIGN  # AssignOp_BitwXor
    | BITW_LEFT_SHIFT_ASSIGN  # AssignOp_BitwLeftShift
    | BITW_RIGHT_SHIFT_ASSIGN  # AssignOp_BitwRightShift
    | ARITH_SHIFT_LEFT_ASSIGN  # AssignOp_ArithShiftLeft
    | ARITH_SHIFT_RIGHT_ASSIGN  # AssignOp_ArithShiftRight
    ; 

nonblocking_assignment : variable_lvalue LESS_EQUAL ( delay_or_event_control )? expression ; 

procedural_continuous_assignment  
    : ASSIGN variable_assignment 
    | DEASSIGN variable_lvalue   
    | FORCE variable_assignment  
    | FORCE net_assignment       
    | RELEASE variable_lvalue    
    | RELEASE net_lvalue         
    ; 

variable_assignment : variable_lvalue ASSIGN_OP expression ; 

action_block  
    : statement_or_null 
    | ( statement )? ELSE statement_or_null 
    ; 
     

seq_block :  
    BEGIN ( COLUMN identifier )? ( block_item_declaration )* ( statement_or_null )* 
    end ( COLUMN identifier )? ; 


par_block : 
    FORK ( COLUMN identifier )? ( block_item_declaration )* ( statement_or_null )* 
    (join_keyword | join_any_keyword | join_none_keyword ) ( COLUMN identifier )? ; 


join_keyword : JOIN ;

join_any_keyword : JOIN_ANY ;

join_none_keyword : JOIN_NONE ; 

statement_or_null  
    : statement 
    | ( attribute_instance )* SEMICOLUMN  
    ; 

statement : ( identifier COLUMN )? ( attribute_instance )* statement_item ; 

statement_item  
    : blocking_assignment SEMICOLUMN              
    | nonblocking_assignment SEMICOLUMN           
    | procedural_continuous_assignment SEMICOLUMN 
    | case_statement                              
    | conditional_statement                       
    | inc_or_dec_expression SEMICOLUMN            
    | subroutine_call_statement                   
    | disable_statement                           
    | event_trigger                               
    | loop_statement                              
    | jump_statement                              
    | par_block                                   
    | procedural_timing_control_statement         
    | seq_block                                   
    | wait_statement                              
    | procedural_assertion_statement              
    | clocking_drive SEMICOLUMN                   
    | randsequence_statement                      
    | randcase_statement                          
    | expect_property_statement                   
    | system_task                                 
    | surelog_macro_not_defined
    ; 
     
function_statement_or_null  
    : statement                          
    | ( attribute_instance )* SEMICOLUMN 
    ; 

procedural_timing_control_statement : 
    procedural_timing_control statement_or_null ; 


delay_or_event_control  
    : delay_control                
    | event_control                
    | REPEAT OPEN_PARENS expression CLOSE_PARENS  
      event_control                
    ; 


delay_control  
    : pound_delay_value                                  
    | POUND OPEN_PARENS mintypmax_expression CLOSE_PARENS  
    ; 


event_control  
    : AT hierarchical_identifier            
    | AT OPEN_PARENS event_expression CLOSE_PARENS 
    | ATSTAR
    | AT_PARENS_STAR
    | AT ps_or_hierarchical_sequence_identifier   
    ; 


event_expression  
    : ( edge_identifier )? expression ( IFF expression )? 
    | sequence_instance ( IFF expression )?               
    | event_expression OR event_expression                
    | event_expression COMMA event_expression             
    | OPEN_PARENS event_expression CLOSE_PARENS           
    ; 
     

procedural_timing_control    
    : delay_control  
    | event_control  
    | cycle_delay    
    ; 


jump_statement  
    : RETURN ( expression )? SEMICOLUMN 
    | BREAK SEMICOLUMN                  
    | CONTINUE SEMICOLUMN               
    ; 


 final_construct : FINAL statement ; 


wait_statement  
    : WAIT OPEN_PARENS expression CLOSE_PARENS statement_or_null   
    | WAIT FORK SEMICOLUMN                                         
    | WAIT_ORDER OPEN_PARENS  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*
      ( COMMA  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  )? CLOSE_PARENS action_block 
    ; 
     

event_trigger  
    : IMPLY hierarchical_identifier SEMICOLUMN   
    | NON_BLOCKING_TRIGGER_EVENT_OP ( delay_or_event_control )?  
      hierarchical_identifier SEMICOLUMN                  
    ; 


disable_statement  
    : DISABLE hierarchical_identifier SEMICOLUMN  
    | DISABLE FORK SEMICOLUMN                          
    ; 


conditional_statement : 
   ( unique_priority )? IF OPEN_PARENS cond_predicate CLOSE_PARENS  statement_or_null 
    ( ELSE IF OPEN_PARENS cond_predicate CLOSE_PARENS  statement_or_null )* 
    ( ELSE statement_or_null )* ; 


unique_priority : UNIQUE | UNIQUE0 | PRIORITY ; 


cond_predicate : 
   expression_or_cond_pattern ( COND_PRED_OP expression_or_cond_pattern )* ; 
    

expression_or_cond_pattern  
    : expression  
    | expression MATCHES pattern 
    ; 

case_statement  
    : ( unique_priority )? case_keyword OPEN_PARENS expression  
      CLOSE_PARENS case_item ( case_item )* endcase         
    | ( unique_priority )? case_keyword OPEN_PARENS expression  
      CLOSE_PARENS MATCHES case_pattern_item ( case_pattern_item )* 
      endcase                                               
    | ( unique_priority )? case_keyword  OPEN_PARENS expression  
      CLOSE_PARENS INSIDE case_inside_item ( case_inside_item )* 
      endcase                                               
    ; 
       

case_keyword  
    : CASE  # CaseKeyword_Case
    | CASEZ # CaseKeyword_CaseZ
    | CASEX # CaseKeyword_CaseX
    ; 
       
case_item  
    : expression ( COMMA expression )* COLUMN statement_or_null 
    | DEFAULT ( COLUMN )? statement_or_null                     
    ; 

case_pattern_item  
    : pattern ( COND_PRED_OP expression )? COLUMN statement_or_null 
    | DEFAULT ( COLUMN )? statement_or_null                    
    ; 

case_inside_item  
     : open_range_list COLUMN statement_or_null  
     | DEFAULT ( COLUMN )? statement_or_null     
     ; 

randcase_statement : 
    RANDCASE randcase_item ( randcase_item )* endcase ; 

randcase_item : expression COLUMN statement_or_null ; 


pattern  
    : DOT identifier                  
    | DOTSTAR                                  
    | constant_expression                      
    | TAGGED identifier ( pattern )?    
    | TICK OPEN_CURLY pattern ( COMMA pattern )* CLOSE_CURLY 
    | TICK OPEN_CURLY identifier COLUMN pattern ( COMMA identifier COLUMN pattern )* CLOSE_CURLY        
    ; 

assignment_pattern : 
      TICK OPEN_CURLY expression ( COMMA expression )* CLOSE_CURLY   
    | TICK OPEN_CURLY structure_pattern_key COLUMN expression ( COMMA structure_pattern_key COLUMN expression )* CLOSE_CURLY 
    | TICK OPEN_CURLY array_pattern_key COLUMN expression ( COMMA array_pattern_key COLUMN expression )* CLOSE_CURLY 
   // | TICK OPEN_CURLY constant_expression OPEN_CURLY expression ( COMMA expression )* CLOSE_CURLY CLOSE_CURLY
    | TICK OPEN_CURLY constant_expression OPEN_CURLY expression ( (CLOSE_CURLY ( COMMA expression )*) | (( COMMA expression )* CLOSE_CURLY))  CLOSE_CURLY
    | TICK OPEN_CURLY CLOSE_CURLY 
    ; 

structure_pattern_key : identifier 
                      | assignment_pattern_key 
                ; 

array_pattern_key 
      : constant_expression     
      | assignment_pattern_key  
      ; 

assignment_pattern_key 
      : simple_type 
      | DEFAULT 
      ; 

assignment_pattern_expression 
      : ( assignment_pattern_expression_type )? assignment_pattern; 

assignment_pattern_expression_type 
      : ps_type_identifier       
      | ps_identifier  
      | integer_atom_type        
      | type_reference           
      ; 

constant_assignment_pattern_expression : 
      assignment_pattern_expression ; 

assignment_pattern_net_lvalue : 
      TICK OPEN_CURLY net_lvalue ( COMMA net_lvalue )* CLOSE_CURLY; 

assignment_pattern_variable_lvalue : 
      TICK OPEN_CURLY variable_lvalue ( COMMA variable_lvalue )* CLOSE_CURLY 
    ; 

forever_keyword : FOREVER;

repeat_keyword : REPEAT;

while_keyword : WHILE ;

loop_statement  
    : forever_keyword statement_or_null                                    
    | (repeat_keyword | while_keyword) OPEN_PARENS expression CLOSE_PARENS statement_or_null 
    | FOR OPEN_PARENS for_initialization? SEMICOLUMN expression? SEMICOLUMN  
      for_step? CLOSE_PARENS statement_or_null                      
    | DO statement_or_null WHILE OPEN_PARENS expression CLOSE_PARENS  SEMICOLUMN                                                  
    | FOREACH OPEN_PARENS ps_or_hierarchical_array_identifier OPEN_BRACKET loop_variables  
      CLOSE_BRACKET CLOSE_PARENS statement                         
    ; 


for_initialization  
    : list_of_variable_assignments                                 
    | for_variable_declaration ( COMMA for_variable_declaration )* 
    ; 

for_variable_declaration : 
    VAR? data_type identifier ASSIGN_OP expression ( COMMA identifier ASSIGN_OP expression )* ; 

for_step : for_step_assignment ( COMMA for_step_assignment )* ; 

for_step_assignment  
    : operator_assignment      
    | inc_or_dec_expression    
    | subroutine_call 
    ; 

loop_variables : ( identifier )? ( COMMA ( identifier )? )* ; 

subroutine_call_statement  
    : subroutine_call SEMICOLUMN 
    | VOID TICK OPEN_PARENS subroutine_call CLOSE_PARENS SEMICOLUMN    
    ; 


assertion_item  
    : concurrent_assertion_item          
    | deferred_immediate_assertion_item  
    ; 

deferred_immediate_assertion_item : 
      ( identifier COLUMN )? deferred_immediate_assertion_statement ; 

procedural_assertion_statement  
      : concurrent_assertion_statement  
      | immediate_assertion_statement   
      | checker_instantiation           
      ; 

immediate_assertion_statement  
      : simple_immediate_assertion_statement 
      | deferred_immediate_assertion_statement 
      ; 

simple_immediate_assertion_statement 
    : simple_immediate_assert_statement 
    | simple_immediate_assume_statement 
    | simple_immediate_cover_statement 
    ; 
     
simple_immediate_assert_statement : 
      ASSERT OPEN_PARENS expression CLOSE_PARENS action_block ; 

simple_immediate_assume_statement : 
      ASSUME OPEN_PARENS expression CLOSE_PARENS action_block ; 

simple_immediate_cover_statement : 
      COVER OPEN_PARENS expression CLOSE_PARENS statement_or_null ; 

deferred_immediate_assertion_statement  
    : deferred_immediate_assert_statement 
    | deferred_immediate_assume_statement 
    | deferred_immediate_cover_statement 
    ; 

deferred_immediate_assert_statement  
      : ASSERT Pound_delay OPEN_PARENS expression CLOSE_PARENS action_block 
      | ASSERT FINAL ( expression ) action_block 
      ; 

deferred_immediate_assume_statement  
      : ASSUME Pound_delay OPEN_PARENS expression CLOSE_PARENS action_block 
      | ASSUME FINAL OPEN_PARENS expression CLOSE_PARENS  action_block 
      ; 

deferred_immediate_cover_statement  
      : COVER Pound_delay OPEN_PARENS expression CLOSE_PARENS statement_or_null 
      | COVER FINAL OPEN_PARENS expression CLOSE_PARENS  statement_or_null 
      ; 

endclocking : ENDCLOCKING;

clocking_declaration : ( DEFAULT )? CLOCKING ( identifier )? clocking_event SEMICOLUMN 
    ( clocking_item )* endclocking ( COLUMN identifier )?
    | GLOBAL CLOCKING  identifier? clocking_event SEMICOLUMN endclocking ( COLUMN identifier )?
   ; 

clocking_event 
    : AT identifier                                
    | AT OPEN_PARENS event_expression CLOSE_PARENS 
    ; 
     
clocking_item  
    : DEFAULT default_skew SEMICOLUMN                               
    | clocking_direction list_of_clocking_decl_assign SEMICOLUMN    
    | ( attribute_instance )* concurrent_assertion_item_declaration 
    ; 

default_skew  
    : INPUT clocking_skew   # DefaultSkew_Intput                  
    | OUTPUT clocking_skew  # DefaultSkew_Output                   
    | INPUT clocking_skew OUTPUT clocking_skew  # DefaultSkew_IntputOutput
    ; 

clocking_direction  
    : INPUT ( clocking_skew )?  # ClockingDir_Input                         
    | OUTPUT ( clocking_skew )?  # ClockingDir_Output                         
    | INPUT ( clocking_skew )? OUTPUT ( clocking_skew )? # ClockingDir_InputOutput 
    | INOUT # ClockingDir_Inout                                         
    ; 

list_of_clocking_decl_assign : clocking_decl_assign ( COMMA clocking_decl_assign )* ; 

clocking_decl_assign : identifier ( ASSIGN_OP  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  )? ; 

clocking_skew   
    : edge_identifier ( delay_control )? 
    | delay_control                      
    ; 


edge_identifier :
    POSEDGE  # Edge_Posedge 
  | NEGEDGE  # Edge_Negedge
  | EDGE     # Edge_Edge
  ; 


clocking_drive  
    : clockvar_expression LESS_EQUAL ( cycle_delay )? expression  
           
    | cycle_delay clockvar_expression LESS_EQUAL expression 
           
    ; 

cycle_delay  
    : POUNDPOUND Integral_number                     
    | POUNDPOUND identifier                          
    | POUNDPOUND OPEN_PARENS expression CLOSE_PARENS 
    ; 

clockvar :  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  ; 

clockvar_expression : clockvar select ; 

randsequence_statement : RANDSEQUENCE OPEN_PARENS ( identifier )? CLOSE_PARENS 
    production ( production )* 
    endsequence ; 


production : ( function_data_type )? identifier ( OPEN_PARENS tf_port_list  
                   CLOSE_PARENS )? COLUMN rs_rule ( BITW_OR rs_rule )* SEMICOLUMN ; 


rs_rule : rs_production_list ( ASSIGN_VALUE expression ( rs_code_block )? )? ; 


rs_production_list  
    : rs_prod ( rs_prod )*  
    | RAND JOIN ( OPEN_PARENS expression CLOSE_PARENS )? production_item  
      production_item ( production_item )*  
    ; 


rs_code_block : OPEN_CURLY ( data_declaration )* ( statement_or_null )*  
                CLOSE_CURLY ; 
       
rs_prod  
    : production_item 
    | rs_code_block   
    | rs_if_else      
    | rs_repeat       
    | rs_case         
    ; 

production_item : identifier ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? ; 

rs_if_else : IF OPEN_PARENS expression CLOSE_PARENS production_item ( ELSE production_item )? ; 

rs_repeat : REPEAT OPEN_PARENS expression CLOSE_PARENS production_item ; 
             
rs_case : CASE OPEN_PARENS expression CLOSE_PARENS rs_case_item ( rs_case_item )* endcase ;  

rs_case_item  
    : expression ( COMMA expression )* COLUMN production_item 
    | DEFAULT ( COLUMN )? production_item                     
    ;

endspecify : ENDSPECIFY ; 

specify_block : SPECIFY ( specify_item )* endspecify ; 

specify_item  
    : specparam_declaration     
    | pulsestyle_declaration    
    | showcancelled_declaration 
    | path_declaration          
    | system_timing_check       
    ; 


pulsestyle_declaration  
    : PULSESTYLE_ONEVENT list_of_path_outputs SEMICOLUMN  
    | PULSESTYLE_ONDETECT list_of_path_outputs SEMICOLUMN 
    ; 


showcancelled_declaration  
    : SHOWCANCELLED list_of_path_outputs SEMICOLUMN    
    | NOSHOWCANCELLED list_of_path_outputs SEMICOLUMN  
    ; 



path_declaration  
    : simple_path_declaration SEMICOLUMN           
    | edge_sensitive_path_declaration SEMICOLUMN   
    | state_dependent_path_declaration SEMICOLUMN  
    ; 


simple_path_declaration  
    : parallel_path_description ASSIGN_OP path_delay_value 
    | full_path_description ASSIGN_OP path_delay_value     
    ; 


parallel_path_description : 
    OPEN_PARENS specify_input_terminal_descriptor ( PLUS | MINUS )? TRANSITION_OP
    specify_output_terminal_descriptor CLOSE_PARENS ; 


full_path_description : 
    OPEN_PARENS list_of_path_inputs  ( PLUS | MINUS )? FULL_CONN_OP  
    list_of_path_outputs CLOSE_PARENS ; 


list_of_path_inputs : specify_input_terminal_descriptor  
                      ( COMMA specify_input_terminal_descriptor )* ; 


list_of_path_outputs : specify_output_terminal_descriptor  
                       ( COMMA specify_output_terminal_descriptor )* ; 

specify_input_terminal_descriptor : 
    ( identifier | interface_identifier DOT identifier )  ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )? ; 


specify_output_terminal_descriptor : 
    ( identifier | interface_identifier DOT identifier )  ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )? ;  

path_delay_value  
    : list_of_path_delay_expressions                          
    | OPEN_PARENS list_of_path_delay_expressions CLOSE_PARENS 
    ; 


list_of_path_delay_expressions  
    : t_path_delay_expression 
    | trise_path_delay_expression COMMA tfall_path_delay_expression 
    | trise_path_delay_expression COMMA tfall_path_delay_expression COMMA tz_path_delay_expression 
    | t01_path_delay_expression COMMA t10_path_delay_expression COMMA t0z_path_delay_expression COMMA 
    tz1_path_delay_expression COMMA t1z_path_delay_expression COMMA tz0_path_delay_expression 
    | t01_path_delay_expression COMMA t10_path_delay_expression COMMA t0z_path_delay_expression COMMA 
    tz1_path_delay_expression COMMA t1z_path_delay_expression COMMA tz0_path_delay_expression COMMA 
    t0x_path_delay_expression COMMA tx1_path_delay_expression COMMA t1x_path_delay_expression COMMA 
    tx0_path_delay_expression COMMA txz_path_delay_expression COMMA tzx_path_delay_expression 
    ; 

t_path_delay_expression : path_delay_expression ; 
trise_path_delay_expression : path_delay_expression ; 
tfall_path_delay_expression : path_delay_expression ; 
tz_path_delay_expression : path_delay_expression ; 
t01_path_delay_expression : path_delay_expression ; 
t10_path_delay_expression : path_delay_expression ; 
t0z_path_delay_expression : path_delay_expression ; 
tz1_path_delay_expression : path_delay_expression ; 
t1z_path_delay_expression : path_delay_expression ; 
tz0_path_delay_expression : path_delay_expression ; 
t0x_path_delay_expression : path_delay_expression ; 
tx1_path_delay_expression : path_delay_expression ; 
t1x_path_delay_expression : path_delay_expression ; 
tx0_path_delay_expression : path_delay_expression ; 
txz_path_delay_expression : path_delay_expression ; 
tzx_path_delay_expression : path_delay_expression ; 
path_delay_expression : constant_mintypmax_expression ; 


edge_sensitive_path_declaration  
    : parallel_edge_sensitive_path_description ASSIGN_OP path_delay_value 
    | full_edge_sensitive_path_description ASSIGN_OP path_delay_value 
    ; 

parallel_edge_sensitive_path_description :  
     OPEN_PARENS ( edge_identifier )? specify_input_terminal_descriptor TRANSITION_OP 
     OPEN_PARENS specify_output_terminal_descriptor ( INC_PART_SELECT_OP | DEC_PART_SELECT_OP | COLUMN )   
     expression CLOSE_PARENS CLOSE_PARENS ; 
 
 
full_edge_sensitive_path_description : 
     OPEN_PARENS ( edge_identifier )? list_of_path_inputs FULL_CONN_OP 
     OPEN_PARENS list_of_path_outputs ( INC_PART_SELECT_OP | DEC_PART_SELECT_OP | COLUMN )    
     expression CLOSE_PARENS CLOSE_PARENS ;  

state_dependent_path_declaration  
    : IF OPEN_PARENS module_path_expression CLOSE_PARENS simple_path_declaration 
    | IF OPEN_PARENS module_path_expression CLOSE_PARENS edge_sensitive_path_declaration 
    | IFNONE simple_path_declaration 
    ; 

system_timing_check  
    : dollar_setup_timing_check 
    | dollar_hold_timing_check 
    | dollar_setuphold_timing_check 
    | dollar_recovery_timing_check 
    | dollar_removal_timing_check 
    | dollar_recrem_timing_check 
    | dollar_skew_timing_check 
    | dollar_timeskew_timing_check 
    | dollar_fullskew_timing_check 
    | dollar_period_timing_check 
    | dollar_width_timing_check 
    | dollar_nochange_timing_check 
    ; 


dollar_setup_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS timing_check_event COMMA reference_event COMMA  
    timing_check_limit ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_hold_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS  reference_event COMMA  timing_check_event COMMA  
    timing_check_limit ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_setuphold_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA  timing_check_event COMMA timing_check_limit COMMA timing_check_limit 
    ( COMMA ( notifier )? ( COMMA ( stamptime_condition )? ( COMMA ( mintypmax_expression )? 
    ( COMMA ( delayed_reference )? ( COMMA ( delayed_data )? )? )? )? )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_recovery_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event COMMA  
    timing_check_limit ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_removal_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event  COMMA  
    timing_check_limit ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_recrem_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event COMMA timing_check_limit COMMA timing_check_limit 
    ( COMMA ( notifier )? ( COMMA ( stamptime_condition )? ( COMMA ( mintypmax_expression )? 
    ( COMMA ( delayed_reference )? ( COMMA ( delayed_data )? )? )? )? )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_skew_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event COMMA  
    timing_check_limit ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_timeskew_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event  COMMA timing_check_limit 
    ( COMMA ( notifier )? ( COMMA ( event_based_flag )?  
    ( COMMA ( remain_active_flag )? )? )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_fullskew_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event  
    COMMA timing_check_limit COMMA timing_check_limit 
    ( COMMA ( notifier )? ( COMMA ( event_based_flag )?  
    ( COMMA ( remain_active_flag )? )? )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_period_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS controlled_timing_check_event COMMA timing_check_limit  
    ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ; 


dollar_width_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS controlled_timing_check_event COMMA timing_check_limit 
    COMMA threshold ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ;  


dollar_nochange_timing_check : 
    DOLLAR Simple_identifier OPEN_PARENS reference_event COMMA timing_check_event COMMA start_edge_offset COMMA 
    end_edge_offset ( COMMA ( notifier )? )? CLOSE_PARENS SEMICOLUMN ;   

delayed_data 
    : identifier 
    | identifier OPEN_BRACKET constant_mintypmax_expression CLOSE_BRACKET  
    ; 


delayed_reference  
    : identifier 
    | identifier OPEN_BRACKET constant_mintypmax_expression CLOSE_BRACKET  
    ; 

end_edge_offset : mintypmax_expression ; 

event_based_flag : constant_expression ; 

notifier : identifier ; 

reference_event : timing_check_event ; 

remain_active_flag : constant_mintypmax_expression ; 

stamptime_condition : mintypmax_expression ; 

start_edge_offset : mintypmax_expression ; 

threshold : constant_expression ; 

timing_check_limit : expression ; 

timing_check_event : 
    (timing_check_event_control)? specify_terminal_descriptor ( COND_PRED_OP timing_check_condition )? ; 


controlled_timing_check_event : 
    timing_check_event_control specify_terminal_descriptor ( COND_PRED_OP timing_check_condition )? ; 


timing_check_event_control  
    : POSEDGE  # TimingCheckEventControl_Posedge              
    | NEGEDGE  # TimingCheckEventControl_Negedge              
    | edge_control_specifier # TimingCheckEventControl_Edge
    ; 


specify_terminal_descriptor  
    : specify_input_terminal_descriptor 
    | specify_output_terminal_descriptor 
    ; 

edge_control_specifier : EDGE OPEN_BRACKET edge_descriptor ( COMMA edge_descriptor )* CLOSE_BRACKET ; 

edge_descriptor  
      : Integral_number                     
      | Simple_identifier  Integral_number  
      | Integral_number Simple_identifier   
//    | Rising              
//    | Falling             
//    | Simple_identifier  Zero_or_one  
//    | Zero_or_one Simple_identifier 
    ; 

timing_check_condition  
    : scalar_timing_check_condition 
    | OPEN_PARENS scalar_timing_check_condition CLOSE_PARENS 
    ; 

scalar_timing_check_condition  
    : expression                       
    | TILDA expression                 
    | expression EQUIV scalar_constant  
                                       
    | expression FOUR_STATE_LOGIC_EQUAL scalar_constant 
                                       
    | expression NOTEQUAL scalar_constant  
                                       
    | expression FOUR_STATE_LOGIC_NOTEQUAL scalar_constant   
                                       
    ; 


scalar_constant
    : ONE_TICK_b0 # Scalar_1Tickb0
    | ONE_TICK_b1 # Scalar_1Tickb1
    | ONE_TICK_B0 # Scalar_1TickB0
    | ONE_TICK_B1 # Scalar_1TickB1
    | TICK_b0 # Scalar_Tickb0
    | TICK_b1 # Scalar_Tickb1
    | TICK_B0  # Scalar_TickB0
    | TICK_B1  # Scalar_TickB1
    | Integral_number  # Scalar_Integral 
    ; 

 concatenation  
    : OPEN_CURLY expression ( COMMA expression )* CLOSE_CURLY      
    | OPEN_CURLY array_member_label COLUMN expression  
      ( COMMA array_member_label COLUMN expression )* CLOSE_CURLY  
    ; 


constant_concatenation 
    : OPEN_CURLY constant_expression ( COMMA constant_expression )* CLOSE_CURLY  
                                                        
    | OPEN_CURLY array_member_label COLUMN constant_expression  
      ( COMMA array_member_label COLUMN constant_expression )* CLOSE_CURLY   
                                                        
    ; 


array_member_label  
    : DEFAULT             
    | identifier     
    | constant_expression 
    ; 


constant_multiple_concatenation : OPEN_CURLY constant_expression constant_concatenation CLOSE_CURLY ; 


module_path_concatenation : OPEN_CURLY module_path_expression ( COMMA module_path_expression )* CLOSE_CURLY ; 


module_path_multiple_concatenation : OPEN_CURLY constant_expression module_path_concatenation CLOSE_CURLY ; 


multiple_concatenation : OPEN_CURLY expression concatenation CLOSE_CURLY ; 


streaming_concatenation : OPEN_CURLY stream_operator ( slice_size )? stream_concatenation CLOSE_CURLY ; 
  

stream_operator : SHIFT_RIGHT | SHIFT_LEFT ; 
  
  
 slice_size : simple_type | constant_expression ; 


stream_concatenation : OPEN_CURLY stream_expression ( COMMA stream_expression )* CLOSE_CURLY ; 
  

stream_expression : expression ( WITH OPEN_BRACKET array_range_expression CLOSE_BRACKET )? ; 


array_range_expression 
    : expression                               
    | expression COLUMN expression             
    | expression INC_PART_SELECT_OP expression 
    | expression DEC_PART_SELECT_OP expression 
    ; 

empty_queue : OPEN_CURLY CLOSE_CURLY ; 

/*
subroutine_call
    : tf_call         
    | method_call     
    | randomize_call  
    ;
*/

subroutine_call : ( implicit_class_handle DOT | class_scope | package_scope | dollar_keyword )?  
       ( dollar_root_keyword )? identifier ( constant_bit_select DOT identifier )* ( attribute_instance )* (  ( OPEN_PARENS list_of_arguments CLOSE_PARENS ) | select) (DOT? method_call_body)?
       | randomize_call;



list_of_arguments 
    : ( expression )? (COMMA ( expression )? )* ( COMMA DOT identifier OPEN_PARENS ( expression )? CLOSE_PARENS )*                                                         
    | DOT identifier OPEN_PARENS ( expression )? CLOSE_PARENS ( COMMA DOT identifier OPEN_PARENS ( expression )? CLOSE_PARENS )* 
                                                        
    ; 

method_call : method_call_root DOT method_call_body 
            | class_type COLUMNCOLUMN method_call_body 
         ; 


method_call_body  
    : identifier ( attribute_instance )*  
      ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? 
    | built_in_method_call 
    ; 


built_in_method_call  
    : array_manipulation_call 
    | randomize_call          
    ; 


array_manipulation_call : array_method_name ( attribute_instance )* 
    ( OPEN_PARENS list_of_arguments CLOSE_PARENS )? 
    ( WITH OPEN_PARENS expression CLOSE_PARENS )? 
    ; 


randomize_call : 
    RANDOMIZE ( attribute_instance )* 
    ( OPEN_PARENS ( identifier_list | NULL_KEYWORD )? CLOSE_PARENS )? 
    ( WITH ( OPEN_PARENS ( identifier_list )? CLOSE_PARENS )? constraint_block )? ; 


method_call_root 
    : implicit_class_handle                            
    | ( class_scope | package_scope )?  
       ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)* select              
    ; 


array_method_name  
    : identifier 
    | unique_call         
    | and_call               
    | or_call             
    | xor_call               
    ; 

unique_call : UNIQUE ;
and_call : AND;
or_call : OR;
xor_call : XOR;


inc_or_dec_expression  
    : inc_or_dec_operator ( attribute_instance )* variable_lvalue   
    | variable_lvalue ( attribute_instance )* inc_or_dec_operator  
                                               
    ; 

constant_expression  
    : constant_primary                                        
    | unary_operator ( attribute_instance )* constant_primary 
    | constant_expression binary_operator ( attribute_instance )* constant_expression                    
    | constant_expression QMARK ( attribute_instance )* constant_expression COLUMN constant_expression  
    | system_task                                             
    ; 

constant_mintypmax_expression  
    : constant_expression 
    | constant_expression COLUMN constant_expression COLUMN constant_expression  
    ; 

constant_param_expression  
    : constant_mintypmax_expression 
    | data_type                     
    | DOLLAR                        
    ; 


param_expression  
    : mintypmax_expression 
    | data_type
    | DOLLAR
    ; 


constant_range_expression  
    : constant_expression         
    | constant_part_select_range  
    ; 


constant_part_select_range  
    : constant_range         
    | constant_indexed_range 
    ; 


constant_range : constant_expression COLUMN constant_expression ; 


constant_indexed_range  
    : constant_expression INC_PART_SELECT_OP constant_expression  
                                              
    | constant_expression DEC_PART_SELECT_OP constant_expression  
                                              
    ; 


expression  
    : primary                                                 
    | unary_operator ( attribute_instance )* primary          
    | inc_or_dec_expression                                   
    | OPEN_PARENS operator_assignment CLOSE_PARENS            
    | expression binary_operator ( attribute_instance )* expression 
    |  expression ( LOGICAL_AND expression )* QMARK ( attribute_instance )* 
       expression COLUMN expression                           
    |  expression MATCHES pattern ( LOGICAL_AND expression )* QMARK ( attribute_instance )* 
       expression COLUMN expression
    |  OPEN_PARENS expression MATCHES pattern ( LOGICAL_AND expression )* CLOSE_PARENS QMARK ( attribute_instance )* 
       expression COLUMN expression
    | expression INSIDE OPEN_CURLY open_range_list CLOSE_CURLY 
    | tagged_union_expression                                 
    ; 


tagged_union_expression : 
    TAGGED identifier ( expression )? ;  


value_range  
    : expression                                               
    | OPEN_BRACKET expression COLUMN expression CLOSE_BRACKET  
    ; 


mintypmax_expression  
    : expression                                     
    | expression COLUMN expression COLUMN expression 
    ; 

module_path_expression  
    : module_path_primary                 
    | unary_module_path_operator ( attribute_instance )*  module_path_primary   
                                          
    | module_path_expression binary_module_path_operator ( attribute_instance )*  
        module_path_expression            
    | module_path_expression QMARK ( attribute_instance )*  
    module_path_expression COLUMN module_path_expression 
; 

module_path_mintypmax_expression  
    : module_path_expression  
    | module_path_expression COLUMN module_path_expression COLUMN module_path_expression 
                              
    ; 

range_expression  
    : expression        
    | part_select_range 
    ; 

part_select_range  
    : constant_range 
    | indexed_range  
    ; 

indexed_range  
    : expression INC_PART_SELECT_OP constant_expression 
    | expression DEC_PART_SELECT_OP constant_expression 
    ; 

constant_primary  
    : primary_literal                                  
    | ( package_scope | class_scope )? identifier constant_select ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )? 
    | constant_concatenation ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )?    
    | constant_multiple_concatenation ( OPEN_BRACKET constant_range_expression CLOSE_BRACKET )?                        
    | subroutine_call                        
    | OPEN_PARENS constant_mintypmax_expression CLOSE_PARENS 
    | constant_cast                                    
    | constant_assignment_pattern_expression           
    | type_reference
    | dollar_keyword                         
    ; 

module_path_primary  
    : number                                                    
    | identifier                                                
    | module_path_concatenation                                 
    | module_path_multiple_concatenation                        
    | subroutine_call                                  
    | OPEN_PARENS module_path_mintypmax_expression CLOSE_PARENS 
    ;

/*
  Replaces let_expression, tf_call, method_call
*/
complex_func_call : ( implicit_class_handle DOT | class_scope | package_scope | dollar_keyword )?  
       ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)* ( attribute_instance )* ( ( OPEN_PARENS (list_of_arguments) CLOSE_PARENS ) | select ) (DOT? method_call_body)? ;

primary
    : primary_literal                
    | complex_func_call
    | ( concatenation | multiple_concatenation ) ( OPEN_BRACKET range_expression CLOSE_BRACKET )? 
    | OPEN_PARENS mintypmax_expression CLOSE_PARENS
    | cast                           
    | assignment_pattern_expression  
    | streaming_concatenation        
//    | sequence_method_call           
    | system_task                    
    | class_type COLUMNCOLUMN method_call_body 
    | this_keyword                          
    | dollar_keyword                         
    | null_keyword                  
    | empty_queue                    
    | randomize_call
    ;
    
this_keyword : THIS; 

super_keyword : SUPER; 

dollar_keyword : DOLLAR;

dollar_root_keyword : DOLLAR_ROOT DOT;

this_dot_super : THIS DOT SUPER;

null_keyword : NULL_KEYWORD;   

time_literal  
    : Integral_number time_unit    
    | Real_number time_unit        
//REMOVED  | Unsigned_number time_unit    
//  | Fixed_point_number time_unit 
    ; 

time_unit  
    : Simple_identifier  
    ; 

implicit_class_handle  
    : this_keyword            
    | super_keyword           
    | this_dot_super  
    ; 

bit_select : 
      ( OPEN_BRACKET expression CLOSE_BRACKET )* ; 

select : ( ( DOT identifier bit_select )* DOT identifier )? bit_select ( OPEN_BRACKET part_select_range CLOSE_BRACKET )? ; 

nonrange_select : 
      ( ( DOT identifier bit_select )* DOT identifier )? bit_select ; 

constant_bit_select : 
      ( OPEN_BRACKET constant_expression CLOSE_BRACKET )* ; 

constant_select : 
      ( ( DOT identifier constant_bit_select )* DOT identifier )? constant_bit_select 
      ( OPEN_BRACKET constant_part_select_range CLOSE_BRACKET )? ; 

primary_literal  
    : number                   
    | time_literal             
    | unbased_unsized_literal  
    | string_value
    | identifier
    ; 

constant_cast  
    : casting_type TICK ( OPEN_PARENS constant_expression CLOSE_PARENS | constant_concatenation | constant_multiple_concatenation ) 
    ; 

cast  
    : casting_type TICK ( OPEN_PARENS expression CLOSE_PARENS | concatenation | multiple_concatenation)
    ; 

net_lvalue  
    : ps_or_hierarchical_identifier constant_select       
    | OPEN_CURLY net_lvalue ( COMMA net_lvalue )* CLOSE_CURLY 
    | ( assignment_pattern_expression_type )? assignment_pattern_net_lvalue 
    ; 


variable_lvalue  
    : ( implicit_class_handle DOT | package_scope )?  
      hierarchical_identifier select                           
    | OPEN_CURLY variable_lvalue ( COMMA variable_lvalue )* CLOSE_CURLY 
    | ( assignment_pattern_expression_type )? assignment_pattern_variable_lvalue 
    | streaming_concatenation                                           
    ; 

nonrange_variable_lvalue : 
      ( implicit_class_handle DOT | package_scope )? hierarchical_identifier nonrange_select ; 
     

unary_operator
    : PLUS  # Unary_Plus
    | MINUS  # Unary_Minus
    | BANG  # Unary_Not
    | TILDA  # Unary_Tilda
    | BITW_AND  # Unary_BitwAnd
    | REDUCTION_NAND  # Unary_ReductNand
    | BITW_OR    # Unary_BitwOr
    | REDUCTION_NOR  # Unary_ReductNor
    | BITW_XOR  # Unary_BitwXor
    | REDUCTION_XNOR1  # Unary_ReductXnor1
    | REDUCTION_XNOR2  # Unary_ReductXnor2
    ; 

binary_operator  
    : PLUS     # BinOp_Plus
    | MINUS    # BinOp_Minus
    | STAR     # BinOp_Mult
    | DIV     # BinOp_Div
    | PERCENT     # BinOp_Percent
    | EQUIV     # BinOp_Equiv
    | NOTEQUAL     # BinOp_Not
    | FOUR_STATE_LOGIC_EQUAL      # BinOp_FourStateLogicEqual
    | FOUR_STATE_LOGIC_NOTEQUAL     # BinOp_FourStateLogicNotEqual
    | WILD_EQUAL_OP     # BinOp_WildEqual
    | WILD_NOTEQUAL_OP     # BinOp_WildNotEqual
    | LOGICAL_AND     # BinOp_LogicAnd
    | LOGICAL_OR     # BinOp_LogicOr
    | STARSTAR       # BinOp_MultMult
    | LESS     # BinOp_Less
    | LESS_EQUAL     # BinOp_LessEqual
    | GREATER     # BinOp_Great
    | GREATER_EQUAL     # BinOp_GreatEqual
    | BITW_AND     # BinOp_BitwAnd
    | BITW_OR     # BinOp_BitwOr
    | BITW_XOR       # BinOp_BitwXor
    | REDUCTION_XNOR1     # BinOp_ReductXnor1
    | REDUCTION_XNOR2     # BinOp_ReductXnor2
    | REDUCTION_NOR       # BinOp_ReductNor
    | REDUCTION_NAND      # BinOp_ReductNand
    | SHIFT_RIGHT     # BinOp_ShiftRight
    | SHIFT_LEFT     # BinOp_ShiftLeft
    | ARITH_SHIFT_RIGHT     # BinOp_ArithShiftRight
    | ARITH_SHIFT_LEFT     # BinOp_ArithShiftLeft
    | IMPLY                # BinOp_Imply
    | EQUIVALENCE          # BinOp_Equivalence
    | BINARY_WILDCARD_EQUAL # BinOp_WildcardEqual
    | BINARY_WILDCARD_NOTEQUAL # BinOp_WildcardNotEqual
    ; 

inc_or_dec_operator
    : PLUSPLUS   # IncDec_PlusPlus
    | MINUSMINUS # IncDec_MinusMinus
    ; 

unary_module_path_operator
    : BANG               # UnaryModOp_Not
    | TILDA              # UnaryModOp_Tilda
    | BITW_AND           # UnaryModOp_BitwAnd
    | REDUCTION_NAND     # UnaryModOp_ReductNand
    | BITW_OR            # UnaryModOp_BitwOr
    | REDUCTION_NOR      # UnaryModOp_ReductNor
    | BITW_XOR           # UnaryModOp_BitwXor
    | REDUCTION_XNOR1    # UnaryModOp_ReductXNor1
    | REDUCTION_XNOR2    # UnaryModOp_ReductXnor2
    ; 

binary_module_path_operator
    : EQUIV   # BinModOp_Equiv
    | NOTEQUAL   # BinModOp_NotEqual
    | LOGICAL_AND   # BinModOp_LogicAnd
    | LOGICAL_OR   # BinModOp_LogicOr
    | BITW_AND    # BinModOp_BitwAnd 
    | BITW_OR   # BinModOp_BitwOr
    | BITW_XOR   # BinModOp_BitwXor
    | REDUCTION_XNOR1   # BinModOp_ReductXnor1
    | REDUCTION_XNOR2   # BinModOp_ReductXnor2
    ; 

number 
   : Integral_number # Number_Integral 
   | Real_number     # Number_Real
   | ONE_TICK_b0     # Number_1Tickb0
   | ONE_TICK_b1     # Number_1Tickb1
   | ONE_TICK_B0     # Number_1TickB0
   | ONE_TICK_B1     # Number_1TickB1
   | TICK_b0         # Number_Tickb0
   | TICK_b1         # Number_Tickb1
   | TICK_B0         # Number_TickB0
   | TICK_B1         # Number_TickB1
   | TICK_0          # Number_Tick0
   | TICK_1          # Number_Tick1
   | ONE_TICK_bx     # Number_1Tickbx
   | ONE_TICK_bX     # Number_1TickbX
   | ONE_TICK_Bx     # Number_1TickBx
   | ONE_TICK_BX     # Number_1TickBX
   ;


unbased_unsized_literal  
    : TICK_0     
    | TICK_1     
    | TICK Simple_identifier 
    ;  


attribute_instance : OPEN_PARENS_STAR attr_spec ( COMMA attr_spec )* STAR_CLOSE_PARENS ; 

attr_spec : attr_name ( ASSIGN_OP constant_expression )? ; 

attr_name : identifier ; 

hierarchical_identifier :  ( dollar_root_keyword )? (
      Simple_identifier   
    | Escaped_identifier  
    | THIS                
    | RANDOMIZE
    | SAMPLE 
    | LOGIC  
    | BIT    
    | BYTE   
    | NEW    
    | EXPECT 
    | VAR    
    | DO     
    | SIGNED 
    | UNSIGNED 
    | FINAL 
    | GLOBAL 
    | SOFT 
    | CONTEXT
      ) (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT (
      Simple_identifier   
    | Escaped_identifier  
    | THIS                
    | RANDOMIZE           
    | SAMPLE
    | LOGIC  
    | BIT    
    | BYTE   
    | NEW    
    | EXPECT 
    | VAR    
    | DO     
    | SIGNED 
    | UNSIGNED 
    | FINAL 
    | GLOBAL 
    | SOFT 
    | CONTEXT 
    ))*  ; 

identifier  
    : Simple_identifier   
    | Escaped_identifier  
    | THIS    // System Verilog keyword            
    | RANDOMIZE // System Verilog keyword        
    | SAMPLE // System Verilog keyword
    | LOGIC  // System Verilog keyword
    | BIT    // System Verilog keyword
    | BYTE   // System Verilog keyword
    | NEW    // System Verilog keyword
    | EXPECT // System Verilog keyword
    | VAR    // System Verilog keyword
    | DO     // System Verilog keyword
    | SIGNED // System Verilog keyword
    | UNSIGNED // System Verilog keyword
    | FINAL // System Verilog keyword
    | GLOBAL // System Verilog keyowrd
    | SOFT // System Verilog keyword
    | CONTEXT // System Verilog keyword
    ; 

interface_identifier : ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  ;  

/*
package_scope  
    : identifier COLUMNCOLUMN 
    | DOLLAR_UNIT COLUMNCOLUMN 
    ;
*/

package_scope  
    : ( Simple_identifier   
    | Escaped_identifier  
    | THIS                
    | RANDOMIZE           
    | SAMPLE
    | DOLLAR_UNIT ) COLUMNCOLUMN 
    ; 

/*
ps_identifier : ( package_scope )?  identifier  ; 
*/

ps_identifier : ( Simple_identifier   
    | Escaped_identifier  
    | THIS                
    | RANDOMIZE           
    | SAMPLE
    | DOLLAR_UNIT ) (COLUMNCOLUMN (Simple_identifier   
    | Escaped_identifier
    | THIS                
    | RANDOMIZE           
    | SAMPLE  ))?;



ps_or_hierarchical_identifier : ( package_scope )? identifier | hierarchical_identifier ; 

ps_or_hierarchical_array_identifier : ( implicit_class_handle DOT | class_scope | package_scope )?  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  ; 

ps_or_hierarchical_sequence_identifier : ( package_scope )? identifier |  ( dollar_root_keyword )? identifier (( OPEN_BRACKET constant_expression CLOSE_BRACKET )* DOT identifier)*  ; 

ps_type_identifier : ( LOCAL COLUMNCOLUMN | package_scope )?  identifier  ; 

system_task : system_task_names (OPEN_PARENS (list_of_arguments | data_type) CLOSE_PARENS)? SEMICOLUMN? ;

system_task_names : DOLLAR Simple_identifier (DOLLAR Simple_identifier)*
		  | DOLLAR TIME
		  | DOLLAR REALTIME
		  | DOLLAR signing
		  | DOLLAR ASSERT
                  ;
     
top_directives   : timescale_directive
                 | uselib_directive 
                 | BACK_TICK Simple_identifier ( number | Simple_identifier | Real_number ) ?
		 | begin_keywords_directive
		 | end_keywords_directive
		 | unconnected_drive_directive
		 | nounconnected_drive_directive
		 | default_nettype_directive
		 | default_decay_time_directive
                 | default_trireg_strenght_directive
                 | delay_mode_distributed_directive   
                 | delay_mode_path_directive  
                 | delay_mode_unit_directive        
                 | delay_mode_zero_directive
	         | protect_directive
     	         | endprotect_directive 
     	         | protected_directive
	         | endprotected_directive 
	         | expand_vectornets_directive
	         | noexpand_vectornets_directive 
	         | autoexpand_vectornets_directive
	         | remove_gatename_directive
	         | noremove_gatenames_directive 
	         | remove_netname_directive 
 	         | noremove_netnames_directive
	         | accelerate_directive
	         | noaccelerate_directive
	         | disable_portfaults_directive
	         | enable_portfaults_directive 
	         | nosuppress_faults_directive 
	         | suppress_faults_directive
	         | signed_directive
	         | unsigned_directive
		 | celldefine_directive
		 | endcelldefine_directive
		 | pragma_directive
                 ;
		 
pragma_directive : TICK_PRAGMA Simple_identifier (pragma_expression (COMMA pragma_expression)*)? ;

pragma_expression
                 : Simple_identifier
		 | Simple_identifier ASSIGN_OP pragma_value
		 | pragma_value
		 | BEGIN
		 | END
		 ;

pragma_value
                : OPEN_PARENS pragma_expression ( COMMA pragma_expression)* CLOSE_PARENS
		| number
		| string_value
		| Simple_identifier
		;

timescale_directive : TICK_TIMESCALE Integral_number Simple_identifier DIV  Integral_number Simple_identifier ; 

begin_keywords_directive : TICK_BEGIN_KEYWORDS String ;

end_keywords_directive : TICK_END_KEYWORDS ;

unconnected_drive_directive : TICK_UNCONNECTED_DRIVE ( Simple_identifier | PULL0 | PULL1) ;

nounconnected_drive_directive : TICK_NOUNCONNECTED_DRIVE;

default_nettype_directive : TICK_DEFAULT_NETTYPE ( Simple_identifier | net_type );

uselib_directive : TICK_USELIB ; 

celldefine_directive : TICK_CELLDEFINE ;
endcelldefine_directive : TICK_ENDCELLDEFINE;
protect_directive : TICK_PROTECT;
endprotect_directive : TICK_ENDPROTECT; 
protected_directive : TICK_PROTECTED;
endprotected_directive : TICK_ENDPROTECTED; 
expand_vectornets_directive : TICK_EXPAND_VECTORNETS ;
noexpand_vectornets_directive : TICK_NOEXPAND_VECTORNETS;
autoexpand_vectornets_directive : TICK_AUTOEXPAND_VECTORNETS;
disable_portfaults_directive : TICK_DISABLE_PORTFAULTS;
enable_portfaults_directive : TICK_ENABLE_PORTFAULTS;
nosuppress_faults_directive : TICK_NOSUPPRESS_FAULTS;
suppress_faults_directive : TICK_SUPPRESS_FAULTS;
signed_directive : TICK_SIGNED;
unsigned_directive : TICK_UNSIGNED;
remove_gatename_directive : TICK_REMOVE_GATENAME;
noremove_gatenames_directive : TICK_NOREMOVE_GATENAMES;
remove_netname_directive : TICK_REMOVE_NETNAME;
noremove_netnames_directive : TICK_NOREMOVE_NETNAMES; 
accelerate_directive : TICK_ACCELERATE;
noaccelerate_directive : TICK_NOACCELERATE;
default_trireg_strenght_directive : TICK_DEFAULT_TRIREG_STRENGTH number;
default_decay_time_directive : TICK_DEFAULT_DECAY_TIME ( number | Simple_identifier );
delay_mode_distributed_directive : TICK_DELAY_MODE_DISTRIBUTED;    
delay_mode_path_directive : TICK_DELAY_MODE_PATH;   
delay_mode_unit_directive : TICK_DELAY_MODE_UNIT;         
delay_mode_zero_directive : TICK_DELAY_MODE_ZERO;


surelog_macro_not_defined : SURELOG_MACRO_NOT_DEFINED ; 

slline : TICK_LINE Integral_number String Integral_number ;

endconfig : ENDCONFIG;

config_declaration : CONFIG identifier SEMICOLUMN 
                     ( local_parameter_declaration SEMICOLUMN )* 
                     design_statement  
                     ( config_rule_statement )*  
                     endconfig ( COLUMN identifier )? ; 

design_statement : DESIGN ( ( identifier DOT )? identifier )*  
                   SEMICOLUMN ; 

config_rule_statement  
        : default_clause liblist_clause SEMICOLUMN 
        | inst_clause liblist_clause    SEMICOLUMN 
        | inst_clause use_clause_config SEMICOLUMN 
        | inst_clause use_clause        SEMICOLUMN 
        | cell_clause liblist_clause    SEMICOLUMN
	| cell_clause use_clause_config SEMICOLUMN 
        | cell_clause use_clause        SEMICOLUMN 
     ; 

default_clause : DEFAULT ; 
     
inst_clause : INSTANCE inst_name ; 

inst_name : identifier ( DOT identifier )* ; 

cell_clause : CELL ( identifier DOT )? identifier ; 

liblist_clause : LIBLIST ( identifier )* ; 


use_clause_config : USE ( identifier DOT )? identifier COLUMN CONFIG  
           | USE named_parameter_assignment ( COMMA named_parameter_assignment )* COLUMN CONFIG  
           | USE ( identifier DOT )? identifier named_parameter_assignment 
             ( COMMA named_parameter_assignment )* COLUMN CONFIG  
           ; 

use_clause : USE ( identifier DOT )? identifier 
           | USE named_parameter_assignment ( COMMA named_parameter_assignment )* 
           | USE ( identifier DOT )? identifier named_parameter_assignment 
             ( COMMA named_parameter_assignment )*
	   | USE parameter_value_assignment  
           ; 
