always_construct |
'always' statement |
binary_base |
|
binary_digit |
|
binary_number |
[ size ] binary_base binary_digit { '_' | binary_digit } |
binary_operator |
-
'+'
-
'-'
-
'*'
-
'/'
-
'%'
-
'=='
-
'!='
-
'==='
-
'!=='
-
'&&'
-
'||'
-
'<'
-
'<='
-
'>'
-
'>='
-
'&'
-
'|'
-
'^'
-
'^~'
-
'~^'
-
'>>'
-
'<<'
|
block_item_declaration |
|
blocking_assignment |
reg_lvalue '=' [ delay_or_event_control ] expression |
case_item |
|
case_statement |
|
charge_strength |
-
'(' 'small' ')'
-
'(' 'medium' ')'
-
'(' 'large' ')'
|
cmos_switch_instance |
[ name_of_gate_instance ] '(' output_terminal ',' input_terminal ',' ncontrol_terminal ',' pcontrol_terminal ')' |
cmos_switchtype |
|
combinational_body |
'table' combinational_entry { combinational_entry } 'endtable' |
combinational_entry |
level_input_list ':' output_symbol ';' |
comment (not used) |
|
concatenation |
'{' expression { ',' expression } '}' |
conditional_statement |
'if' '(' expression ')' statement_or_null [ 'else' statement_or_null ] |
constant_expression |
|
constant_mintypmax_expression |
|
constant_primary |
|
continuous_assign |
'assign' [ drive_strength ] [ delay3 ] list_of_net_assignments ';' |
controlled_timing_check_event |
timing_check_event_control specify_terminal_descriptor [ '&&&' timing_check_condition ] |
current_state |
level_symbol |
data_source_expression |
expression |
decimal_base |
|
decimal_digit |
-
'0'
-
'1'
-
'2'
-
'3'
-
'4'
-
'5'
-
'6'
-
'7'
-
'8'
-
'9'
|
decimal_number |
|
delay2 |
|
delay3 |
|
delay_control |
|
delay_or_event_control |
|
delay_value |
|
description |
|
disable_statement |
|
drive_strength |
|
edge_control_specifier |
'edge' '[' edge_descriptor [ ',' edge_descriptor ] ']' |
edge_descriptor |
-
'01'
-
'10'
-
'0x'
-
'x1'
-
'1x'
-
'x0'
|
edge_identifier |
|
edge_indicator |
|
edge_input_list |
{ level_symbol } edge_indicator { level_symbol } |
edge_sensitive_path_declaration |
|
edge_symbol |
-
'r'
-
'R'
-
'f'
-
'F'
-
'p'
-
'P'
-
'n'
-
'N'
-
'*'
|
enable_gate_instance |
[ name_of_gate_instance ] '(' output_terminal ',' input_terminal ',' enable_terminal ')' |
enable_gatetype |
-
'bufif0'
-
'bufif1'
-
'notif0'
-
'notif1'
|
enable_terminal |
scalar_expression |
escaped_identifier |
'\' { ANY_CHAR_EXCEPT_WHITESPACE } WHITESPACE |
event_control |
|
event_declaration |
'event' event_identifier { ',' event_identifier } ';' |
event_expression |
|
event_trigger |
'->' event_identifier ';' |
expression |
|
full_edge_sensitive_path_description |
'(' [ edge_identifier ] list_of_path_inputs '*>' list_of_path_outputs [ polarity_operator ] ':' data_source_expression ')' |
full_path_description |
'(' list_of_path_inputs [ polarity_operator ] '*>' list_of_path_outputs ')' |
function_call |
|
function_declaration |
'function' [ range_or_type ] function_identifier ';' function_item_declaration { function_item_declaration } statement 'endfunction' |
function_item_declaration |
|
gate_instantiation |
|
hex_base |
|
hex_digit |
-
'x'
-
'X'
-
'z'
-
'Z'
-
'0'
-
'1'
-
'2'
-
'3'
-
'4'
-
'5'
-
'6'
-
'7'
-
'8'
-
'9'
-
'a'
-
'b'
-
'c'
-
'd'
-
'e'
-
'f'
-
'A'
-
'B'
-
'C'
-
'D'
-
'E'
-
'F'
|
hex_number |
[ size ] hex_base hex_digit { '_' | hex_digit } |
identifier |
single_identifier { '.' single_identifier } |
init_val |
-
"1'b0"
-
"1'b1"
-
"1'bx"
-
"1'bX"
-
"1'B0"
-
"1'B1"
-
"1'Bx"
-
"1'BX"
-
'1'
-
'0'
|
initial_construct |
'initial' statement |
inout_declaration |
'inout' [ range ] list_of_port_identifiers ';' |
inout_terminal |
|
input_declaration |
'input' [ range ] list_of_port_identifiers ';' |
input_identifier |
|
input_terminal |
scalar_expression |
integer_declaration |
'integer' list_of_register_identifiers ';' |
level_input_list |
level_symbol { level_symbol } |
level_symbol |
-
'0'
-
'1'
-
'x'
-
'X'
-
'?'
-
'b'
-
'B'
|
limit_value |
constant_mintypmax_expression |
list_of_module_connections |
|
list_of_net_assignments |
net_assignment { ',' net_assignment } |
list_of_net_decl_assignments |
net_decl_assignment { ',' net_decl_assignment } |
list_of_net_identifiers |
net_identifier { ',' net_identifier } |
list_of_param_assignments |
param_assignment { ',' param_assignment } |
list_of_path_delay_expressions |
- t_path_delay_expression
- trise_path_delay_expression
',' tfall_path_delay_expression
- trise_path_delay_expression
',' tfall_path_delay_expression ',' tz_path_delay_expression
- t01_path_delay_expression
',' t10_path_delay_expression ',' t0z_path_delay_expression ',' tz1_path_delay_expression ',' t1z_path_delay_expression ',' tz0_path_delay_expression
- t01_path_delay_expression
',' t10_path_delay_expression ',' t0z_path_delay_expression ',' tz1_path_delay_expression ',' t1z_path_delay_expression ',' tz0_path_delay_expression ',' t0x_path_delay_expression ',' tx1_path_delay_expression ',' t1x_path_delay_expression ',' tx0_path_delay_expression ',' txz_path_delay_expression ',' tzx_path_delay_expression
|
list_of_path_inputs |
specify_input_terminal_descriptor { ',' specify_input_terminal_descriptor } |
list_of_path_outputs |
specify_output_terminal_descriptor { ',' specify_output_terminal_descriptor } |
list_of_port_identifiers |
port_identifier { ',' port_identifier } |
list_of_ports |
'(' port { ',' port } ')' |
list_of_real_identifiers |
real_identifier { ',' real_identifier } |
list_of_register_identifiers |
register_name { ',' register_name } |
list_of_specparam_assignments |
specparam_assignment { ',' specparam_assignment } |
long_comment |
'/*' COMMENT_TEXT '*/' |
loop_statement |
|
mintypmax_expression |
|
module_declaration |
module_keyword module_identifier [ list_of_ports ] ';' { module_item } 'endmodule' |
module_instance |
name_of_instance '(' [ list_of_module_connections ] ')' |
module_instantiation |
module_identifier [ parameter_value_assignment ] module_instance { ',' module_instance } ';' |
module_item |
|
module_item_declaration |
|
module_keyword |
|
mos_switch_instance |
[ name_of_gate_instance ] '(' output_terminal ',' input_terminal ',' enable_terminal ')' |
mos_switchtype |
-
'nmos'
-
'pmos'
-
'rnmos'
-
'rpmos'
|
multiple_concatenation |
'{' expression '{' expression { ',' expression } '}' '}' |
n_input_gate_instance |
[ name_of_gate_instance ] '(' output_terminal ',' input_terminal { ',' input_terminal } ')' |
n_input_gatetype |
-
'and'
-
'nand'
-
'or'
-
'nor'
-
'xor'
-
'xnor'
|
n_output_gate_instance |
[ name_of_gate_instance ] '(' output_terminal { ',' output_terminal } ',' input_terminal ')' |
n_output_gatetype |
|
name_of_gate_instance |
gate_instance_identifier [ range ] |
name_of_instance |
module_instance_identifier [ range ] |
name_of_system_function |
'$' identifier |
name_of_udp_instance |
udp_instance_identifier [ range ] |
named_port_connection |
'.' port_identifier '(' [ expression ] ')' |
ncontrol_terminal |
scalar_expression |
net_assignment |
net_lvalue '=' expression |
net_decl_assignment |
net_identifier '=' expression |
net_declaration |
|
net_lvalue |
|
net_type |
-
'wire'
-
'tri'
-
'tri1'
-
'supply0'
-
'wand'
-
'triand'
-
'tri0'
-
'supply1'
-
'wor'
-
'trior'
|
next_state |
|
non_blocking_assignment |
reg_lvalue '<=' [ delay_or_event_control ] expression |
notify_register |
register_identifier |
number |
|
octal_base |
|
octal_digit |
-
'x'
-
'X'
-
'z'
-
'Z'
-
'0'
-
'1'
-
'2'
-
'3'
-
'4'
-
'5'
-
'6'
-
'7'
|
octal_number |
[ size ] octal_base octal_digit { '_' | octal_digit } |
ordered_port_connection |
[ expression ] |
output_declaration |
'output' [ range ] list_of_port_identifiers ';' |
output_identifier |
|
output_symbol |
|
output_terminal |
|
par_block |
'fork' [ ':' block_identifier { block_item_declaration } ] { statement } 'join' |
parallel_edge_sensitive_path_description |
'(' [ edge_identifier ] specify_input_terminal_descriptor '=>' specify_output_terminal_descriptor [ polarity_operator ] ':' data_source_expression ')' |
parallel_path_description |
'(' specify_input_terminal_descriptor [ polarity_operator ] '=>' specify_output_terminal_descriptor ')' |
param_assignment |
parameter_identifier '=' constant_expression |
parameter_declaration |
'parameter' list_of_param_assignments ';' |
parameter_override |
'defparam' list_of_param_assignments ';' |
parameter_value_assignment |
'#' '(' expression { ',' expression } ')' |
pass_en_switch_instance |
[ name_of_gate_instance ] '(' inout_terminal ',' inout_terminal ',' enable_terminal ')' |
pass_en_switchtype |
-
'tranif0'
-
'tranif1'
-
'rtranif0'
-
'rtranif1'
|
pass_switch_instance |
[ name_of_gate_instance ] '(' inout_terminal ',' inout_terminal ')' |
pass_switchtype |
|
path_declaration |
|
path_delay_expression |
constant_mintypmax_expression |
path_delay_value |
|
pcontrol_terminal |
scalar_expression |
polarity_operator |
|
port |
|
port_expression |
|
port_reference |
|
primary |
|
procedural_continuous_assignment |
|
procedural_timing_control_statement |
delay_or_event_control statement_or_null |
pull_gate_instance |
[ name_of_gate_instance ] '(' output_terminal ')' |
pulldown_strength |
|
pullup_strength |
|
pulse_control_specparam |
|
range |
'[' msb_constant_expression ':' lsb_constant_expression ']' |
range_or_type |
- range
-
'integer'
-
'real'
-
'realtime'
-
'time'
|
real_declaration |
'real' list_of_real_identifiers ';' |
real_number |
|
realtime_declaration |
'realtime' list_of_real_identifiers ';' |
reg_assignment |
reg_lvalue '=' expression |
reg_declaration |
'reg' [ range ] list_of_register_identifiers ';' |
reg_lvalue |
|
register_name |
|
scalar_constant |
-
"1'b0"
-
"1'b1"
-
"1'B0"
-
"1'B1"
-
"'b0"
-
"'b1"
-
"'B0"
-
"'B1"
-
'1'
-
'0'
|
scalar_timing_check_condition |
|
seq_block |
'begin' [ ':' block_identifier { block_item_declaration } ] { statement } 'end' |
seq_input_list |
|
sequencial_body |
[ udp_initial_statement ] 'table' sequencial_entry { sequencial_entry } 'endtable' |
sequencial_entry |
seq_input_list ':' current_state ':' next_state ';' |
short_comment |
'//' COMMENT_TEXT NEWLINE |
sign |
|
simple_identifier |
ALPHA { ALPHANUM | '_' | '$' } |
simple_path_declaration |
|
single_identifier |
|
size |
unsigned_number |
source_text |
{ description } |
specify_block |
'specify' { specify_item } 'endspecify' |
specify_input_terminal_descriptor |
|
specify_item |
|
specify_output_terminal_descriptor |
|
specify_terminal_descriptor |
|
specparam_assignment |
|
specparam_declaration |
'specparam' list_of_specparam_assignments ';' |
state_dependent_path_declaration |
|
statement |
|
statement_or_null |
|
strength0 |
-
'supply0'
-
'strong0'
-
'pull0'
-
'weak0'
|
strength1 |
-
'supply1'
-
'strong1'
-
'pull1'
-
'weak1'
|
string |
'"' ANY_CHAR_EXCEPT_NEWLINE '"' |
system_task_enable |
system_task_name [ '(' expression { ',' expression } ')' ] ';' |
system_task_name |
'$' identifier |
system_timing_check |
-
'$setup' '(' timing_check_event ',' timing_check_event ',' timing_check_limit [ ',' notify_register ] ')' ';'
-
'$hold' '(' timing_check_event ',' timing_check_event ',' timing_check_limit [ ',' notify_register ] ')' ';'
-
'$period' '(' controlled_timing_check_event ',' timing_check_limit [ ',' notify_register ] ')' ';'
-
'$width' '(' controlled_timing_check_event ',' timing_check_limit ',' constant_expression [ ',' notify_register ] ')' ';'
-
'$skew' '(' timing_check_event ',' timing_check_event ',' timing_check_limit [ ',' notify_register ] ')' ';'
-
'$recovery' '(' controlled_timing_check_event ',' timing_check_event ',' timing_check_limit [ ',' notify_register ] ')' ';'
-
'$setuphold' '(' timing_check_event ',' timing_check_event ',' timing_check_limit ',' timing_check_limit [ ',' notify_register ] ')' ';'
|
task_declaration |
'task' task_identifier ';' { task_item_declaration } statement_or_null 'endtask' |
task_enable |
task_identifier [ '(' expression { ',' expression } ')' ] ';' |
task_item_declaration |
|
time_declaration |
'time' list_of_register_identifiers ';' |
timing_check_condition |
|
timing_check_event |
[ timing_check_event_control ] specify_terminal_descriptor [ '&&&' timing_check_condition ] |
timing_check_event_control |
|
timing_check_limit |
expression |
udp_body |
|
udp_declaration |
'primitive' udp_identifier '(' udp_port_list ')' ';' udp_port_declaration { udp_port_declaration } udp_body 'endprimitive' |
udp_initial_statement |
'initial' udp_output_port_identifier '=' init_val ';' |
udp_instance |
[ name_of_udp_instance ] '(' output_terminal ',' input_terminal { ',' input_terminal } ')' |
udp_instantiation |
udp_identifier [ drive_strength ] [ delay2 ] udp_instance { ',' udp_instance } ';' |
udp_port_declaration |
|
udp_port_list |
output_port_identifier ',' input_port_identifier { ',' input_port_identifier } |
unary_operator |
-
'+'
-
'-'
-
'!'
-
'~'
-
'&'
-
'~&'
-
'|'
-
'~|'
-
'^'
-
'~^'
-
'^~'
|
unsigned_number |
decimal_digit { '_' | decimal_digit } |
wait_statement |
'wait' '(' expression ')' statement_or_null |