EBNF Syntax: Verilog 2001

Syntax Productions
Variants
Terminals
Literals
Production Cross Reference
Lookahead-1 Parser First Token
Lookahead-1 Parser Ambiguities

Syntax Productions

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start Symbol (source_text)

Name Production
always_construct 'always' statement
binary_base
  • "'b"
  • "'B"
binary_digit
  • 'x'
  • 'X'
  • 'z'
  • 'Z'
  • '0'
  • '1'
binary_number
binary_operator
  • '+'
  • '-'
  • '*'
  • '/'
  • '%'
  • '=='
  • '!='
  • '==='
  • '!=='
  • '&&'
  • '||'
  • '<'
  • '<='
  • '>'
  • '>='
  • '&'
  • '|'
  • '^'
  • '^~'
  • '~^'
  • '>>'
  • '<<'
  • '**'(vlog2001)
  • '>>>'(vlog2001)
  • '<<<'(vlog2001)
block_item_declaration
blocking_assignment reg_lvalue '=' [ delay_or_event_control ] expression
case_item
case_statement
charge_strength
  • '(' 'small' ')'(#2)
  • '(' 'medium' ')'(#2)
  • '(' 'large' ')'(#2)
cmos_switch_instance [ name_of_gate_instance ] '(' output_terminal ',' input_terminal ',' ncontrol_terminal ',' pcontrol_terminal ')'
cmos_switchtype
  • 'cmos'
  • 'rcmos'
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
  • "'d"
  • "'D"
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
  • 'posedge'
  • 'negedge'
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' [ 'automatic' ](vlog2001) [ range_or_type ] function_identifier ';' function_item_declaration { function_item_declaration } statement 'endfunction'
function_item_declaration
gate_instantiation
hex_base
  • "'h"
  • "'H"
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
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
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
  • 'module'
  • 'macromodule'
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
  • 'buf'
  • 'not'
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
  • "'o"
  • "'O"
octal_digit
  • 'x'
  • 'X'
  • 'z'
  • 'Z'
  • '0'
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
octal_number
ordered_port_connection [ expression ]
output_declaration 'output' [ range ] list_of_port_identifiers ';'
output_identifier
output_symbol
  • '0'
  • '1'
  • 'x'
  • 'X'
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_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
  • 'tran'
  • 'rtran'
path_declaration
path_delay_expression constant_mintypmax_expression
path_delay_value
pcontrol_terminal scalar_expression
polarity_operator
  • '+'
  • '-'
port
port_direction
  • 'input'
  • 'output'
  • 'inout'
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' [ 'signed' ](vlog2001) [ 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
  • '+'
  • '-'
signed_binary_base
  • "'sb"
  • "'SB"
  • "'sB"
  • "'Sb"
signed_decimal_base
  • "'sd"
  • "'SD"
  • "'sD"
  • "'Sd"
signed_hex_base
  • "'sh"
  • "'SH"
  • "'sH"
  • "'Sh"
signed_octal_base
  • "'so"
  • "'SO"
  • "'sO"
  • "'So"
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
task_declaration 'task' [ 'automatic' ](vlog2001) 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


Variants

Variant Used in Variant Expressions
vlog2001binary_number ... [ size ] signed_binary_base binary_digit { '_' | binary_digit } ...
binary_operator ... '**' ...
... '>>>' ...
... '<<<' ...
decimal_number ... [ size ] signed_decimal_base unsigned_number ...
event_control ... '@' '*' ...
event_expression ... event_expression 'or' event_expression ...
function_declaration ... [ 'automatic' ] ...
hex_number ... [ size ] signed_hex_base hex_digit { '_' | hex_digit } ...
module_item_declaration ... port_direction net_declaration ...
... port_direction reg_declaration ...
... port_direction integer_declaration ...
... port_direction time_declaration ...
net_declaration ... [ 'signed' ] ...
... [ 'signed' ] ...
... [ 'signed' ] ...
octal_number ... [ size ] signed_octal_base octal_digit { '_' | octal_digit } ...
parameter_declaration ... 'localparam' list_of_param_assignments ';' ...
reg_declaration ... [ 'signed' ] ...
task_declaration ... [ 'automatic' ] ...

Terminals

Terminal Used in
ALPHA simple_identifier
ALPHANUM simple_identifier
ANY_CHAR_EXCEPT_NEWLINE string
ANY_CHAR_EXCEPT_WHITESPACE escaped_identifier
COMMENT_TEXT long_comment / short_comment
NEWLINE short_comment
WHITESPACE escaped_identifier

Literals

Literal Used in
! unary_operator
!= binary_operator / scalar_timing_check_condition
!== binary_operator / scalar_timing_check_condition
" string
# delay2 / delay3 / delay_control / parameter_value_assignment
$ name_of_system_function / pulse_control_specparam / simple_identifier / system_task_name
$hold system_timing_check
$period system_timing_check
$recovery system_timing_check
$setup system_timing_check
$setuphold system_timing_check
$skew system_timing_check
$width system_timing_check
% binary_operator
& binary_operator / unary_operator
&& binary_operator
&&& controlled_timing_check_event / timing_check_event
'B binary_base
'B0 scalar_constant
'B1 scalar_constant
'D decimal_base
'H hex_base
'O octal_base
'SB signed_binary_base
'SD signed_decimal_base
'SH signed_hex_base
'SO signed_octal_base
'Sb signed_binary_base
'Sd signed_decimal_base
'Sh signed_hex_base
'So signed_octal_base
'b binary_base
'b0 scalar_constant
'b1 scalar_constant
'd decimal_base
'h hex_base
'o octal_base
'sB signed_binary_base
'sD signed_decimal_base
'sH signed_hex_base
'sO signed_octal_base
'sb signed_binary_base
'sd signed_decimal_base
'sh signed_hex_base
'so signed_octal_base
( case_statement / charge_strength / cmos_switch_instance / conditional_statement / delay2 / delay3 / delay_control / delay_or_event_control / drive_strength / edge_indicator / enable_gate_instance / event_control / full_edge_sensitive_path_description / full_path_description / function_call / list_of_ports / loop_statement / module_instance / mos_switch_instance / n_input_gate_instance / n_output_gate_instance / named_port_connection / parallel_edge_sensitive_path_description / parallel_path_description / parameter_value_assignment / pass_en_switch_instance / pass_switch_instance / path_delay_value / port / primary / pull_gate_instance / pulldown_strength / pullup_strength / pulse_control_specparam / state_dependent_path_declaration / system_task_enable / system_timing_check / task_enable / timing_check_condition / udp_declaration / udp_instance / wait_statement
) case_statement / charge_strength / cmos_switch_instance / conditional_statement / delay2 / delay3 / delay_control / delay_or_event_control / drive_strength / edge_indicator / enable_gate_instance / event_control / full_edge_sensitive_path_description / full_path_description / function_call / list_of_ports / loop_statement / module_instance / mos_switch_instance / n_input_gate_instance / n_output_gate_instance / named_port_connection / parallel_edge_sensitive_path_description / parallel_path_description / parameter_value_assignment / pass_en_switch_instance / pass_switch_instance / path_delay_value / port / primary / pull_gate_instance / pulldown_strength / pullup_strength / pulse_control_specparam / state_dependent_path_declaration / system_task_enable / system_timing_check / task_enable / timing_check_condition / udp_declaration / udp_instance / wait_statement
* binary_operator / edge_symbol / event_control
** binary_operator
*/ long_comment
*> full_edge_sensitive_path_description / full_path_description
+ binary_operator / polarity_operator / sign / unary_operator
, case_item / cmos_switch_instance / concatenation / delay2 / delay3 / drive_strength / edge_control_specifier / enable_gate_instance / event_declaration / event_expression / function_call / gate_instantiation / list_of_module_connections / list_of_net_assignments / list_of_net_decl_assignments / list_of_net_identifiers / list_of_param_assignments / list_of_path_delay_expressions / list_of_path_inputs / list_of_path_outputs / list_of_port_identifiers / list_of_ports / list_of_real_identifiers / list_of_register_identifiers / list_of_specparam_assignments / module_instantiation / mos_switch_instance / multiple_concatenation / n_input_gate_instance / n_output_gate_instance / parameter_value_assignment / pass_en_switch_instance / pass_switch_instance / port_expression / pulldown_strength / pullup_strength / pulse_control_specparam / system_task_enable / system_timing_check / task_enable / udp_instance / udp_instantiation / udp_port_list
- binary_operator / next_state / polarity_operator / sign / unary_operator
-> event_trigger
. identifier / named_port_connection / port / real_number
/ binary_operator
/* long_comment
// short_comment
: case_item / combinational_entry / constant_expression / constant_mintypmax_expression / expression / full_edge_sensitive_path_description / mintypmax_expression / net_lvalue / par_block / parallel_edge_sensitive_path_description / port_reference / primary / range / reg_lvalue / register_name / seq_block / sequencial_entry / specify_input_terminal_descriptor / specify_output_terminal_descriptor
; combinational_entry / continuous_assign / disable_statement / event_declaration / event_trigger / function_declaration / gate_instantiation / inout_declaration / input_declaration / integer_declaration / loop_statement / module_declaration / module_instantiation / net_declaration / output_declaration / parameter_declaration / parameter_override / procedural_continuous_assignment / pulse_control_specparam / real_declaration / realtime_declaration / reg_declaration / sequencial_entry / specparam_declaration / statement / statement_or_null / system_task_enable / system_timing_check / task_declaration / task_enable / time_declaration / udp_declaration / udp_initial_statement / udp_instantiation
< binary_operator
<< binary_operator
<<< binary_operator
<= binary_operator / non_blocking_assignment
= blocking_assignment / edge_sensitive_path_declaration / net_assignment / net_decl_assignment / param_assignment / pulse_control_specparam / reg_assignment / simple_path_declaration / specparam_assignment / udp_initial_statement
== binary_operator / scalar_timing_check_condition
=== binary_operator / scalar_timing_check_condition
=> parallel_edge_sensitive_path_description / parallel_path_description
> binary_operator
>= binary_operator
>> binary_operator
>>> binary_operator
? constant_expression / expression / level_symbol
@ event_control
[ edge_control_specifier / inout_terminal / net_lvalue / output_terminal / port_reference / primary / range / reg_lvalue / register_name / specify_input_terminal_descriptor / specify_output_terminal_descriptor
\ escaped_identifier
] edge_control_specifier / inout_terminal / net_lvalue / output_terminal / port_reference / primary / range / reg_lvalue / register_name / specify_input_terminal_descriptor / specify_output_terminal_descriptor
^ binary_operator / unary_operator
^~ binary_operator / unary_operator
_ binary_number / hex_number / octal_number / simple_identifier / unsigned_number
{ concatenation / multiple_concatenation / port_expression
| binary_operator / unary_operator
|| binary_operator
} concatenation / multiple_concatenation / port_expression
~ scalar_timing_check_condition / unary_operator
~& unary_operator
~^ binary_operator / unary_operator
~| unary_operator
0 binary_digit / decimal_digit / hex_digit / init_val / level_symbol / octal_digit / output_symbol / scalar_constant
01 edge_descriptor
0x edge_descriptor
1 binary_digit / decimal_digit / hex_digit / init_val / level_symbol / octal_digit / output_symbol / scalar_constant
1'b0 init_val / scalar_constant
1'B0 init_val / scalar_constant
1'b1 init_val / scalar_constant
1'B1 init_val / scalar_constant
1'bX init_val
1'BX init_val
1'bx init_val
1'Bx init_val
10 edge_descriptor
1x edge_descriptor
2 decimal_digit / hex_digit / octal_digit
3 decimal_digit / hex_digit / octal_digit
4 decimal_digit / hex_digit / octal_digit
5 decimal_digit / hex_digit / octal_digit
6 decimal_digit / hex_digit / octal_digit
7 decimal_digit / hex_digit / octal_digit
8 decimal_digit / hex_digit
9 decimal_digit / hex_digit
a hex_digit
A hex_digit
always always_construct
and n_input_gatetype
assign continuous_assign / procedural_continuous_assignment
automatic function_declaration / task_declaration
B hex_digit / level_symbol
b hex_digit / level_symbol
begin seq_block
buf n_output_gatetype
bufif0 enable_gatetype
bufif1 enable_gatetype
C hex_digit
c hex_digit
case case_statement
casex case_statement
casez case_statement
cmos cmos_switchtype
D hex_digit
d hex_digit
deassign procedural_continuous_assignment
default case_item
defparam parameter_override
disable disable_statement
e hex_digit / real_number
E hex_digit / real_number
edge edge_control_specifier
else conditional_statement
end seq_block
endcase case_statement
endfunction function_declaration
endmodule module_declaration
endprimitive udp_declaration
endspecify specify_block
endtable combinational_body / sequencial_body
endtask task_declaration
event event_declaration
F edge_symbol / hex_digit
f edge_symbol / hex_digit
for loop_statement
force procedural_continuous_assignment
forever loop_statement
fork par_block
function function_declaration
highz0 drive_strength
highz1 drive_strength
if conditional_statement / state_dependent_path_declaration
ifnone state_dependent_path_declaration
initial initial_construct / udp_initial_statement
inout inout_declaration / port_direction
input input_declaration / port_direction
integer integer_declaration / range_or_type
join par_block
large charge_strength
localparam parameter_declaration
macromodule module_keyword
medium charge_strength
module module_keyword
N edge_symbol
n edge_symbol
nand n_input_gatetype
negedge edge_identifier / event_expression / timing_check_event_control
nmos mos_switchtype
nor n_input_gatetype
not n_output_gatetype
notif0 enable_gatetype
notif1 enable_gatetype
or event_expression / n_input_gatetype
output output_declaration / port_direction
P edge_symbol
p edge_symbol
parameter parameter_declaration
PATHPULSE$ pulse_control_specparam
pmos mos_switchtype
posedge edge_identifier / event_expression / timing_check_event_control
primitive udp_declaration
pull0 strength0
pull1 strength1
pulldown gate_instantiation
pullup gate_instantiation
R edge_symbol
r edge_symbol
rcmos cmos_switchtype
real range_or_type / real_declaration
realtime range_or_type / realtime_declaration
reg reg_declaration
release procedural_continuous_assignment
repeat delay_or_event_control / loop_statement
rnmos mos_switchtype
rpmos mos_switchtype
rtran pass_switchtype
rtranif0 pass_en_switchtype
rtranif1 pass_en_switchtype
scalared net_declaration
signed net_declaration / reg_declaration
small charge_strength
specify specify_block
specparam specparam_declaration
strong0 strength0
strong1 strength1
supply0 net_type / strength0
supply1 net_type / strength1
table combinational_body / sequencial_body
task task_declaration
time range_or_type / time_declaration
tran pass_switchtype
tranif0 pass_en_switchtype
tranif1 pass_en_switchtype
tri net_type
tri0 net_type
tri1 net_type
triand net_type
trior net_type
trireg net_declaration
vectored net_declaration
wait wait_statement
wand net_type
weak0 strength0
weak1 strength1
while loop_statement
wire net_type
wor net_type
X binary_digit / hex_digit / level_symbol / octal_digit / output_symbol
x binary_digit / hex_digit / level_symbol / octal_digit / output_symbol
x0 edge_descriptor
x1 edge_descriptor
xnor n_input_gatetype
xor n_input_gatetype
Z binary_digit / hex_digit / octal_digit
z binary_digit / hex_digit / octal_digit

Production Cross Reference

Production Used in
always_constructmodule_item
binary_basebinary_number
binary_digitbinary_number
binary_numbernumber
binary_operatorconstant_expression / expression
block_item_declarationfunction_item_declaration / par_block / seq_block / task_item_declaration
blocking_assignmentstatement
case_itemcase_statement
case_statementstatement
charge_strengthnet_declaration
cmos_switch_instancegate_instantiation
cmos_switchtypegate_instantiation
combinational_bodyudp_body
combinational_entrycombinational_body
concatenationconstant_primary / net_lvalue / primary / reg_lvalue
conditional_statementstatement
constant_expressionconstant_expression / constant_mintypmax_expression / inout_terminal / net_lvalue / output_terminal / param_assignment / port_reference / primary / range / reg_lvalue / register_name / specify_input_terminal_descriptor / specify_output_terminal_descriptor / specparam_assignment / system_timing_check
constant_mintypmax_expressiondelay_value / limit_value / path_delay_expression
constant_primaryconstant_expression
continuous_assignmodule_item
controlled_timing_check_eventsystem_timing_check
current_statesequencial_entry
data_source_expressionfull_edge_sensitive_path_description / parallel_edge_sensitive_path_description
decimal_basedecimal_number
decimal_digitunsigned_number
decimal_numbernumber
delay2gate_instantiation / udp_instantiation
delay3continuous_assign / gate_instantiation / net_declaration
delay_controldelay_or_event_control
delay_or_event_controlblocking_assignment / non_blocking_assignment / procedural_timing_control_statement
delay_valuedelay2 / delay3 / delay_control
descriptionsource_text
disable_statementstatement
drive_strengthcontinuous_assign / gate_instantiation / net_declaration / udp_instantiation
edge_control_specifiertiming_check_event_control
edge_descriptoredge_control_specifier
edge_identifierfull_edge_sensitive_path_description / parallel_edge_sensitive_path_description
edge_indicatoredge_input_list
edge_input_listseq_input_list
edge_sensitive_path_declarationpath_declaration / state_dependent_path_declaration
edge_symboledge_indicator
enable_gate_instancegate_instantiation
enable_gatetypegate_instantiation
enable_terminalenable_gate_instance / mos_switch_instance / pass_en_switch_instance
escaped_identifiersingle_identifier
event_controldelay_or_event_control
event_declarationblock_item_declaration / module_item_declaration
event_expressionevent_control / event_expression
event_triggerstatement
expressionblocking_assignment / case_item / case_statement / concatenation / conditional_statement / data_source_expression / delay_or_event_control / enable_terminal / event_expression / expression / function_call / input_terminal / loop_statement / mintypmax_expression / multiple_concatenation / named_port_connection / ncontrol_terminal / net_assignment / net_decl_assignment / net_lvalue / non_blocking_assignment / ordered_port_connection / parameter_value_assignment / pcontrol_terminal / primary / reg_assignment / reg_lvalue / scalar_timing_check_condition / state_dependent_path_declaration / system_task_enable / task_enable / timing_check_limit / wait_statement
full_edge_sensitive_path_descriptionedge_sensitive_path_declaration
full_path_descriptionsimple_path_declaration
function_callprimary
function_declarationmodule_item_declaration
function_item_declarationfunction_declaration
gate_instantiationmodule_item
hex_basehex_number
hex_digithex_number
hex_numbernumber
identifierconstant_primary / delay_value / disable_statement / event_control / event_declaration / event_expression / event_trigger / function_call / function_declaration / inout_terminal / input_identifier / list_of_net_identifiers / list_of_port_identifiers / list_of_real_identifiers / module_declaration / module_instantiation / name_of_gate_instance / name_of_instance / name_of_system_function / name_of_udp_instance / named_port_connection / net_decl_assignment / net_lvalue / notify_register / output_identifier / output_terminal / par_block / param_assignment / port / port_reference / primary / reg_lvalue / register_name / seq_block / specparam_assignment / system_task_name / task_declaration / task_enable / udp_declaration / udp_initial_statement / udp_instantiation / udp_port_list
init_valudp_initial_statement
initial_constructmodule_item
inout_declarationmodule_item_declaration / task_item_declaration
inout_terminalpass_en_switch_instance / pass_switch_instance
input_declarationfunction_item_declaration / module_item_declaration / task_item_declaration / udp_port_declaration
input_identifierspecify_input_terminal_descriptor
input_terminalcmos_switch_instance / enable_gate_instance / mos_switch_instance / n_input_gate_instance / n_output_gate_instance / udp_instance
integer_declarationblock_item_declaration / module_item_declaration
level_input_listcombinational_entry / seq_input_list
level_symbolcurrent_state / edge_indicator / edge_input_list / level_input_list
limit_valuepulse_control_specparam
list_of_module_connectionsmodule_instance
list_of_net_assignmentscontinuous_assign
list_of_net_decl_assignmentsnet_declaration
list_of_net_identifiersnet_declaration
list_of_param_assignmentsparameter_declaration / parameter_override
list_of_path_delay_expressionspath_delay_value
list_of_path_inputsfull_edge_sensitive_path_description / full_path_description
list_of_path_outputsfull_edge_sensitive_path_description / full_path_description
list_of_port_identifiersinout_declaration / input_declaration / output_declaration
list_of_portsmodule_declaration
list_of_real_identifiersreal_declaration / realtime_declaration
list_of_register_identifiersinteger_declaration / reg_declaration / time_declaration
list_of_specparam_assignmentsspecparam_declaration
long_commentcomment
loop_statementstatement
mintypmax_expressiondelay_control / primary
module_declarationdescription
module_instancemodule_instantiation
module_instantiationmodule_item
module_itemmodule_declaration
module_item_declarationmodule_item
module_keywordmodule_declaration
mos_switch_instancegate_instantiation
mos_switchtypegate_instantiation
multiple_concatenationconstant_primary / primary
n_input_gate_instancegate_instantiation
n_input_gatetypegate_instantiation
n_output_gate_instancegate_instantiation
n_output_gatetypegate_instantiation
name_of_gate_instancecmos_switch_instance / enable_gate_instance / mos_switch_instance / n_input_gate_instance / n_output_gate_instance / pass_en_switch_instance / pass_switch_instance / pull_gate_instance
name_of_instancemodule_instance
name_of_system_functionfunction_call
name_of_udp_instanceudp_instance
named_port_connectionlist_of_module_connections
ncontrol_terminalcmos_switch_instance
net_assignmentlist_of_net_assignments / procedural_continuous_assignment
net_decl_assignmentlist_of_net_decl_assignments
net_declarationmodule_item_declaration
net_lvaluenet_assignment / procedural_continuous_assignment
net_typenet_declaration
next_statesequencial_entry
non_blocking_assignmentstatement
notify_registersystem_timing_check
numberconstant_primary / primary
octal_baseoctal_number
octal_digitoctal_number
octal_numbernumber
ordered_port_connectionlist_of_module_connections
output_declarationmodule_item_declaration / task_item_declaration / udp_port_declaration
output_identifierspecify_output_terminal_descriptor
output_symbolcombinational_entry / next_state
output_terminalcmos_switch_instance / enable_gate_instance / mos_switch_instance / n_input_gate_instance / n_output_gate_instance / pull_gate_instance / udp_instance
par_blockstatement
parallel_edge_sensitive_path_descriptionedge_sensitive_path_declaration
parallel_path_descriptionsimple_path_declaration
param_assignmentlist_of_param_assignments
parameter_declarationblock_item_declaration / module_item_declaration
parameter_overridemodule_item
parameter_value_assignmentmodule_instantiation
pass_en_switch_instancegate_instantiation
pass_en_switchtypegate_instantiation
pass_switch_instancegate_instantiation
pass_switchtypegate_instantiation
path_declarationspecify_item
path_delay_expressionlist_of_path_delay_expressions
path_delay_valueedge_sensitive_path_declaration / simple_path_declaration
pcontrol_terminalcmos_switch_instance
polarity_operatorfull_edge_sensitive_path_description / full_path_description / parallel_edge_sensitive_path_description / parallel_path_description
portlist_of_ports
port_directionmodule_item_declaration
port_expressionport
port_referenceport_expression
primaryexpression
procedural_continuous_assignmentstatement
procedural_timing_control_statementstatement
pull_gate_instancegate_instantiation
pulldown_strengthgate_instantiation
pullup_strengthgate_instantiation
pulse_control_specparamspecparam_assignment
rangeinout_declaration / input_declaration / name_of_gate_instance / name_of_instance / name_of_udp_instance / net_declaration / output_declaration / range_or_type / reg_declaration
range_or_typefunction_declaration
real_declarationblock_item_declaration / module_item_declaration
real_numbernumber
realtime_declarationblock_item_declaration / module_item_declaration
reg_assignmentloop_statement / procedural_continuous_assignment
reg_declarationblock_item_declaration / module_item_declaration / udp_port_declaration
reg_lvalueblocking_assignment / non_blocking_assignment / procedural_continuous_assignment / reg_assignment
register_namelist_of_register_identifiers
scalar_constantscalar_timing_check_condition
scalar_timing_check_conditiontiming_check_condition
seq_blockstatement
seq_input_listsequencial_entry
sequencial_bodyudp_body
sequencial_entrysequencial_body
short_commentcomment
signdecimal_number / real_number
signed_binary_basebinary_number
signed_decimal_basedecimal_number
signed_hex_basehex_number
signed_octal_baseoctal_number
simple_identifiersingle_identifier
simple_path_declarationpath_declaration / state_dependent_path_declaration
single_identifieridentifier
sizebinary_number / decimal_number / hex_number / octal_number
source_text
specify_blockmodule_item
specify_input_terminal_descriptorlist_of_path_inputs / parallel_edge_sensitive_path_description / parallel_path_description / pulse_control_specparam / specify_terminal_descriptor
specify_itemspecify_block
specify_output_terminal_descriptorlist_of_path_outputs / parallel_edge_sensitive_path_description / parallel_path_description / pulse_control_specparam / specify_terminal_descriptor
specify_terminal_descriptorcontrolled_timing_check_event / timing_check_event
specparam_assignmentlist_of_specparam_assignments
specparam_declarationspecify_item
state_dependent_path_declarationpath_declaration
statementalways_construct / function_declaration / initial_construct / loop_statement / par_block / seq_block / statement_or_null
statement_or_nullcase_item / conditional_statement / procedural_timing_control_statement / task_declaration / wait_statement
strength0drive_strength / pulldown_strength / pullup_strength
strength1drive_strength / pulldown_strength / pullup_strength
stringconstant_expression / expression
system_task_enablestatement
system_task_namesystem_task_enable
system_timing_checkspecify_item
task_declarationmodule_item_declaration
task_enablestatement
task_item_declarationtask_declaration
time_declarationblock_item_declaration / module_item_declaration
timing_check_conditioncontrolled_timing_check_event / timing_check_event
timing_check_eventsystem_timing_check
timing_check_event_controlcontrolled_timing_check_event / timing_check_event
timing_check_limitsystem_timing_check
udp_bodyudp_declaration
udp_declarationdescription
udp_initial_statementsequencial_body
udp_instanceudp_instantiation
udp_instantiationmodule_item
udp_port_declarationudp_declaration
udp_port_listudp_declaration
unary_operatorconstant_expression / expression
unsigned_numberdecimal_number / delay_value / real_number / size
wait_statementstatement
commentNot used in any production

Lookahead-1 Parser First Token

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start symbol = source_text

Name First Tokens
always_construct 'always'
binary_base "'B"
"'b"
binary_digit '0'
'1'
'X'
'Z'
'x'
'z'
binary_number "'B"
"'SB"
"'Sb"
"'b"
"'sB"
"'sb"
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
binary_operator '!='
'!=='
'%'
'&&'
'&'
'*'
'**'
'+'
'-'
'/'
'<'
'<<'
'<<<'
'<='
'=='
'==='
'>'
'>='
'>>'
'>>>'
'^'
'^~'
'|'
'||'
'~^'
block_item_declaration 'event'
'integer'
'localparam'
'parameter'
'real'
'realtime'
'reg'
'time'
blocking_assignment '\'
'{'
ALPHA
case_item "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'default'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
case_statement 'case'
'casex'
'casez'
charge_strength '('
cmos_switch_instance '('
'\'
ALPHA
cmos_switchtype 'cmos'
'rcmos'
combinational_body 'table'
combinational_entry '0'
'1'
'?'
'B'
'X'
'b'
'x'
comment '/*'
'//'
concatenation '{'
conditional_statement 'if'
constant_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
constant_mintypmax_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
constant_primary "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'{'
ALPHA
continuous_assign 'assign'
controlled_timing_check_event 'edge'
'negedge'
'posedge'
current_state '0'
'1'
'?'
'B'
'X'
'b'
'x'
data_source_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
decimal_base "'D"
"'d"
decimal_digit '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
decimal_number "'D"
"'SD"
"'Sd"
"'d"
"'sD"
"'sd"
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
delay2 '#'
delay3 '#'
delay_control '#'
delay_or_event_control '#'
'@'
'repeat'
delay_value "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
description 'macromodule'
'module'
'primitive'
disable_statement 'disable'
drive_strength '('
edge_control_specifier 'edge'
edge_descriptor '01'
'0x'
'10'
'1x'
'x0'
'x1'
edge_identifier 'negedge'
'posedge'
edge_indicator '('
'*'
'F'
'N'
'P'
'R'
'f'
'n'
'p'
'r'
edge_input_list '('
'*'
'0'
'1'
'?'
'B'
'F'
'N'
'P'
'R'
'X'
'b'
'f'
'n'
'p'
'r'
'x'
edge_sensitive_path_declaration '('
edge_symbol '*'
'F'
'N'
'P'
'R'
'f'
'n'
'p'
'r'
enable_gate_instance '('
'\'
ALPHA
enable_gatetype 'bufif0'
'bufif1'
'notif0'
'notif1'
enable_terminal "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
escaped_identifier '\'
event_control '@'
event_declaration 'event'
event_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'negedge'
'posedge'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
event_trigger '->'
expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
full_edge_sensitive_path_description '('
full_path_description '('
function_call '$'
'\'
ALPHA
function_declaration 'function'
function_item_declaration 'event'
'input'
'integer'
'localparam'
'parameter'
'real'
'realtime'
'reg'
'time'
gate_instantiation 'and'
'buf'
'bufif0'
'bufif1'
'cmos'
'nand'
'nmos'
'nor'
'not'
'notif0'
'notif1'
'or'
'pmos'
'pulldown'
'pullup'
'rcmos'
'rnmos'
'rpmos'
'rtran'
'rtranif0'
'rtranif1'
'tran'
'tranif0'
'tranif1'
'xnor'
'xor'
hex_base "'H"
"'h"
hex_digit '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'A'
'B'
'C'
'D'
'E'
'F'
'X'
'Z'
'a'
'b'
'c'
'd'
'e'
'f'
'x'
'z'
hex_number "'H"
"'SH"
"'Sh"
"'h"
"'sH"
"'sh"
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
identifier '\'
ALPHA
init_val "1'B0"
"1'B1"
"1'BX"
"1'Bx"
"1'b0"
"1'b1"
"1'bX"
"1'bx"
'0'
'1'
initial_construct 'initial'
inout_declaration 'inout'
inout_terminal '\'
ALPHA
input_declaration 'input'
input_identifier '\'
ALPHA
input_terminal "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
integer_declaration 'integer'
level_input_list '0'
'1'
'?'
'B'
'X'
'b'
'x'
level_symbol '0'
'1'
'?'
'B'
'X'
'b'
'x'
limit_value "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
list_of_module_connections ø
"'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
','
'-'
'.'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
list_of_net_assignments '\'
'{'
ALPHA
list_of_net_decl_assignments '\'
ALPHA
list_of_net_identifiers '\'
ALPHA
list_of_param_assignments '\'
ALPHA
list_of_path_delay_expressions "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
list_of_path_inputs '\'
ALPHA
list_of_path_outputs '\'
ALPHA
list_of_port_identifiers '\'
ALPHA
list_of_ports '('
list_of_real_identifiers '\'
ALPHA
list_of_register_identifiers '\'
ALPHA
list_of_specparam_assignments 'PATHPULSE$'
'\'
ALPHA
long_comment '/*'
loop_statement 'for'
'forever'
'repeat'
'while'
mintypmax_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
module_declaration 'macromodule'
'module'
module_instance '\'
ALPHA
module_instantiation '\'
ALPHA
module_item '\'
'always'
'and'
'assign'
'buf'
'bufif0'
'bufif1'
'cmos'
'defparam'
'event'
'function'
'initial'
'inout'
'input'
'integer'
'localparam'
'nand'
'nmos'
'nor'
'not'
'notif0'
'notif1'
'or'
'output'
'parameter'
'pmos'
'pulldown'
'pullup'
'rcmos'
'real'
'realtime'
'reg'
'rnmos'
'rpmos'
'rtran'
'rtranif0'
'rtranif1'
'specify'
'supply0'
'supply1'
'task'
'time'
'tran'
'tranif0'
'tranif1'
'tri'
'tri0'
'tri1'
'triand'
'trior'
'trireg'
'wand'
'wire'
'wor'
'xnor'
'xor'
ALPHA
module_item_declaration 'event'
'function'
'inout'
'input'
'integer'
'localparam'
'output'
'parameter'
'real'
'realtime'
'reg'
'supply0'
'supply1'
'task'
'time'
'tri'
'tri0'
'tri1'
'triand'
'trior'
'trireg'
'wand'
'wire'
'wor'
module_keyword 'macromodule'
'module'
mos_switch_instance '('
'\'
ALPHA
mos_switchtype 'nmos'
'pmos'
'rnmos'
'rpmos'
multiple_concatenation '{'
n_input_gate_instance '('
'\'
ALPHA
n_input_gatetype 'and'
'nand'
'nor'
'or'
'xnor'
'xor'
n_output_gate_instance '('
'\'
ALPHA
n_output_gatetype 'buf'
'not'
name_of_gate_instance '\'
ALPHA
name_of_instance '\'
ALPHA
name_of_system_function '$'
name_of_udp_instance '\'
ALPHA
named_port_connection '.'
ncontrol_terminal "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
net_assignment '\'
'{'
ALPHA
net_decl_assignment '\'
ALPHA
net_declaration 'supply0'
'supply1'
'tri'
'tri0'
'tri1'
'triand'
'trior'
'trireg'
'wand'
'wire'
'wor'
net_lvalue '\'
'{'
ALPHA
net_type 'supply0'
'supply1'
'tri'
'tri0'
'tri1'
'triand'
'trior'
'wand'
'wire'
'wor'
next_state '-'
'0'
'1'
'X'
'x'
non_blocking_assignment '\'
'{'
ALPHA
notify_register '\'
ALPHA
number "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
octal_base "'O"
"'o"
octal_digit '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'X'
'Z'
'x'
'z'
octal_number "'O"
"'SO"
"'So"
"'o"
"'sO"
"'so"
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
ordered_port_connection ø
"'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
output_declaration 'output'
output_identifier '\'
ALPHA
output_symbol '0'
'1'
'X'
'x'
output_terminal '\'
ALPHA
par_block 'fork'
parallel_edge_sensitive_path_description '('
parallel_path_description '('
param_assignment '\'
ALPHA
parameter_declaration 'localparam'
'parameter'
parameter_override 'defparam'
parameter_value_assignment '#'
pass_en_switch_instance '('
'\'
ALPHA
pass_en_switchtype 'rtranif0'
'rtranif1'
'tranif0'
'tranif1'
pass_switch_instance '('
'\'
ALPHA
pass_switchtype 'rtran'
'tran'
path_declaration '('
'if'
'ifnone'
path_delay_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
path_delay_value "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
pcontrol_terminal "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
polarity_operator '+'
'-'
port ø
'.'
'\'
'{'
ALPHA
port_direction 'inout'
'input'
'output'
port_expression '\'
'{'
ALPHA
port_reference '\'
ALPHA
primary "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'$'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'{'
ALPHA
procedural_continuous_assignment 'assign'
'deassign'
'force'
'release'
procedural_timing_control_statement '#'
'@'
'repeat'
pull_gate_instance '('
'\'
ALPHA
pulldown_strength '('
pullup_strength '('
pulse_control_specparam 'PATHPULSE$'
range '['
range_or_type '['
'integer'
'real'
'realtime'
'time'
real_declaration 'real'
real_number '+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
realtime_declaration 'realtime'
reg_assignment '\'
'{'
ALPHA
reg_declaration 'reg'
reg_lvalue '\'
'{'
ALPHA
register_name '\'
ALPHA
scalar_constant "'B0"
"'B1"
"'b0"
"'b1"
"1'B0"
"1'B1"
"1'b0"
"1'b1"
'0'
'1'
scalar_timing_check_condition "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
seq_block 'begin'
seq_input_list '('
'*'
'0'
'1'
'?'
'B'
'F'
'N'
'P'
'R'
'X'
'b'
'f'
'n'
'p'
'r'
'x'
sequencial_body 'initial'
'table'
sequencial_entry '('
'*'
'0'
'1'
'?'
'B'
'F'
'N'
'P'
'R'
'X'
'b'
'f'
'n'
'p'
'r'
'x'
short_comment '//'
sign '+'
'-'
signed_binary_base "'SB"
"'Sb"
"'sB"
"'sb"
signed_decimal_base "'SD"
"'Sd"
"'sD"
"'sd"
signed_hex_base "'SH"
"'Sh"
"'sH"
"'sh"
signed_octal_base "'SO"
"'So"
"'sO"
"'so"
simple_identifier ALPHA
simple_path_declaration '('
single_identifier '\'
ALPHA
size '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
source_text ø
'macromodule'
'module'
'primitive'
specify_block 'specify'
specify_input_terminal_descriptor '\'
ALPHA
specify_item '$hold'
'$period'
'$recovery'
'$setup'
'$setuphold'
'$skew'
'$width'
'('
'if'
'ifnone'
'specparam'
specify_output_terminal_descriptor '\'
ALPHA
specify_terminal_descriptor '\'
ALPHA
specparam_assignment 'PATHPULSE$'
'\'
ALPHA
specparam_declaration 'specparam'
state_dependent_path_declaration 'if'
'ifnone'
statement '#'
'$'
'->'
'@'
'\'
'assign'
'begin'
'case'
'casex'
'casez'
'deassign'
'disable'
'for'
'force'
'forever'
'fork'
'if'
'release'
'repeat'
'wait'
'while'
'{'
ALPHA
statement_or_null '#'
'$'
'->'
';'
'@'
'\'
'assign'
'begin'
'case'
'casex'
'casez'
'deassign'
'disable'
'for'
'force'
'forever'
'fork'
'if'
'release'
'repeat'
'wait'
'while'
'{'
ALPHA
strength0 'pull0'
'strong0'
'supply0'
'weak0'
strength1 'pull1'
'strong1'
'supply1'
'weak1'
string '"'
system_task_enable '$'
system_task_name '$'
system_timing_check '$hold'
'$period'
'$recovery'
'$setup'
'$setuphold'
'$skew'
'$width'
task_declaration 'task'
task_enable '\'
ALPHA
task_item_declaration 'event'
'inout'
'input'
'integer'
'localparam'
'output'
'parameter'
'real'
'realtime'
'reg'
'time'
time_declaration 'time'
timing_check_condition "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
timing_check_event '\'
'edge'
'negedge'
'posedge'
ALPHA
timing_check_event_control 'edge'
'negedge'
'posedge'
timing_check_limit "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
udp_body 'initial'
'table'
udp_declaration 'primitive'
udp_initial_statement 'initial'
udp_instance '('
'\'
ALPHA
udp_instantiation '\'
ALPHA
udp_port_declaration 'input'
'output'
'reg'
udp_port_list '\'
ALPHA
unary_operator '!'
'&'
'+'
'-'
'^'
'^~'
'|'
'~&'
'~'
'~^'
'~|'
unsigned_number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
wait_statement 'wait'


Lookahead-1 Parser Ambiguities

Ref Production Ambiguous
Literals/Terminals
Can't decide between the following
#1 binary_number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#2 charge_strength '('
  • '(' 'small' ')'
  • '(' 'large' ')'
  • '(' 'medium' ')'
#3 constant_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'{'
ALPHA
#4 constant_expression '+'
'-'
#5 constant_expression '!'
'&'
'^'
'^~'
'|'
'~&'
'~'
'~^'
'~|'
#6 constant_expression '"'
#7 constant_mintypmax_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
#8 constant_primary '{'
#9 decimal_number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#10 delay2 '#'
#11 delay3 '#'
#12 delay_control '#'
#13 delay_value '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#14 delay_value '\'
ALPHA
#15 disable_statement 'disable'
#16 drive_strength '('
#17 edge_sensitive_path_declaration '('
#18 event_control '@'
#19 event_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
#20 event_expression '\'
ALPHA
#21 event_expression 'posedge'
#22 event_expression 'negedge'
#23 expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'$'
'('
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'{'
ALPHA
#24 expression '+'
'-'
#25 expression '!'
'&'
'^'
'^~'
'|'
'~&'
'~'
'~^'
'~|'
#26 expression '"'
#27 hex_number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#28 inout_terminal '\'
ALPHA
#29 input_identifier '\'
ALPHA
#30 list_of_path_delay_expressions "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'&'
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
#31 mintypmax_expression "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~'
'~^'
'~|'
ALPHA
#32 module_item '\'
ALPHA
#33 module_item_declaration 'inout'
#34 module_item_declaration 'output'
#35 module_item_declaration 'input'
#36 net_declaration 'supply0'
'supply1'
'tri'
'tri0'
'tri1'
'triand'
'trior'
'wand'
'wire'
'wor'
#37 net_lvalue '\'
ALPHA
#38 number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#39 number '+'
'-'
#40 octal_number '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#41 output_identifier '\'
ALPHA
#42 output_terminal '\'
ALPHA
#43 path_declaration '('
#44 port_reference '\'
ALPHA
#45 primary '\'
ALPHA
#46 primary '{'
#47 procedural_continuous_assignment 'release'
#48 procedural_continuous_assignment 'force'
#49 pulldown_strength '('
#50 pullup_strength '('
#51 pulse_control_specparam 'PATHPULSE$'
#52 real_number '+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
#53 reg_lvalue '\'
ALPHA
#54 register_name '\'
ALPHA
#55 scalar_timing_check_condition "'B"
"'D"
"'H"
"'O"
"'SB"
"'SD"
"'SH"
"'SO"
"'Sb"
"'Sd"
"'Sh"
"'So"
"'b"
"'d"
"'h"
"'o"
"'sB"
"'sD"
"'sH"
"'sO"
"'sb"
"'sd"
"'sh"
"'so"
'!'
'"'
'$'
'&'
'('
'+'
'-'
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'\'
'^'
'^~'
'{'
'|'
'~&'
'~^'
'~|'
ALPHA
#56 scalar_timing_check_condition '~'
#57 seq_input_list '0'
'1'
'?'
'B'
'X'
'b'
'x'
#58 simple_path_declaration '('
#59 specify_input_terminal_descriptor '\'
ALPHA
#60 specify_output_terminal_descriptor '\'
ALPHA
#61 specify_terminal_descriptor '\'
ALPHA
#62 state_dependent_path_declaration 'if'
#63 statement '{'
#64 statement '\'
ALPHA
#65 statement 'repeat'
#66 timing_check_condition '('
#67 udp_body 'table'

Created with ebnf2annot.pl (andreas.gieriet@externsoft.ch)