INTRO

GRAMMAR

library_text ::= { library_description } library_description ::= library_declaration | include_statement | config_declaration library_declaration ::= "library" library_identifier file_path_spec [ { , file_path_spec } ] [ "-incdir" file_path_spec { , file_path_spec } ] ; include_statement ::= "include" file_path_spec ; source_text ::= { description } description ::= module_declaration | udp_declaration | config_declaration module_declaration ::= { attribute_instance } module_keyword module_identifier [ module_parameter_port_list ] list_of_ports ; { module_item } "endmodule" | { attribute_instance } module_keyword module_identifier [ module_parameter_port_list ] [ list_of_port_declarations ] ; { non_port_module_item } "endmodule" module_keyword ::= module | macromodule module_parameter_port_list ::= #( parameter_declaration { , parameter_declaration } ) list_of_ports ::= ( port { , port } ) list_of_port_declarations ::=( port_declaration { , port_declaration } ) | () port ::= [ port_expression ] | . port_identifier ( [ port_expression ] ) port_expression ::= port_reference | { port_reference { , port_reference } } port_reference ::= port_identifier [ [ constant_range_expression ] ] port_declaration ::= { attribute_instance } inout_declaration | { attribute_instance } input_declaration | { attribute_instance } output_declaration