From: Clifford E. Cummings (cliffc@sunburst-design.com)
Date: Thu Jun 04 1998 - 00:43:34 PDT
Based on Stu's recommendations and comments from Shalom:
X-Lines: 225
Content-Type: text/plain; charset="us-ascii"
Content-Length: 8510
X-Status: $$$$
X-UID: 0000000514
Status: RO
System tasks or system functions:
- A system_function_identifier is an identifier for system functions and is
never used in a hierarchical reference.
- A system_task_identifier is an identifier for system tasks and is never
used in a hierarchical reference.
- As described in section 2.7.3, a system task or system function is used
to name and identify Verilog standard system tasks and functions, user
defined system tasks and functions (created using the PLI) and software
implementation system tasks and functions. Additional system tasks and
functions that may not be available in all implementations of the Verilog
HDL are described in Annex F.
A.6
1998 BE49>system_task_enable ::= system_task_identifier [ ( expression { ,
expression } ) ] ;
A.8
1998 BE49> system_function_identifier [ ( expression { , expression } ) ]
Deleted
1998 BE08>system_task_function_name2 ::= $system_function_identifier
NOTES:
1998 BE??>6 - The $ character in a system_function_identifier or
system_task_identifier shall not
1998 BE??> be followed by white space. A system_function_identifier or
system_task_identifier
1998 BE??> shall not be escaped.
These have been incorporated into the latest rev of the BNF.
-------------
Identifiers:
- An identifier is either a simple or escaped identifier.
- An identifier is used to name and identify blocks, events, functions,
generate_blocks, genvar_functions, genvars, inout ports, input ports,
memories, modules, nets, output ports, parameters, reals, regs, registers,
specparams, tasks, terminals and udps.
Instances and arrayed instances:
- An arrayed_identifier is either a simple_arrayed_identifier (which could
just be a simple_identifier) or an escaped_arrayed_identifier (which could
just be an escaped_identifier)
- An instance or arrayed instance is used to name and identify gate
instances, module instances and udp instances.
References to instances, arrayed instances or an instance located in a
different part of the design hierarchy:
- A hierarchical_identifier is either a simple_hierarchical_identifier
(which could just be a simple_arrayed_identifier or simple_identifier) or
an escaped_hierarchical_identifier (which could just be an
escaped_arrayed_identifier or escaped_identifier)
System tasks or system functions:
- A system_function_identifier is an identifier for system functions and is
never used in a hierarchical reference.
- A system_task_identifier is an identifier for system tasks and is never
used in a hierarchical reference.
- As described in section 2.7.3, a system task or system function is used
to name and identify Verilog standard system tasks and functions, user
defined system tasks and functions (created using the PLI) and software
implementation system tasks and functions. Additional system tasks and
functions that may not be available in all implementations of the Verilog
HDL are described in Annex F.
All possible identifier types are listed alphabetically below:
1998 BE??>arrayed_identifier ::=
1998 BE??> simple_arrayed_identifier
1998 BE??> | escaped_arrayed_identifier
1998 BE??>block_identifier ::= identifier
1998 BE??>combinational_task_identifier ::= identifier
1998 BE??>edge_identifier ::= identifier
1998 BE??>escaped_arrayed_identifier ::= escaped_identifier [ [ range ] ]
1998 BE??>escaped_hierarchical_identifier5 ::=
1998 BE??> escaped_hierarchical_branch [ { .simple_hierarchical_branch |
.escaped_hierarchical_branch } ]
escaped_identifier ::= \ {Any_ASCII_character_except_white_space} white_space
1998 BE??>function_identifier ::= identifier
1998 BE??>gate_instance_identifier ::= arrayed_identifier
1998 BE??>generate_block_identifier ::= identifier
1998 BE??>genvar_function_identifier ::= identifier
1998 BE??>genvar_identifier ::= identifier
1998 BE??>hierarchical_identifier ::=
1998 BE??> simple_hierarchical_identifier
1998 BE??> | escaped_hierarchical_identifier
1998 BE??>identifier ::=
1998 BE??> simple_identifier
1998 BE??> | escaped_identifier
1998 BE??>event_identifier ::= identifier
1998 BE??>inout_port_identifier ::= identifier
1998 BE??>input_identifier ::= identifier
1998 BE??>input_port_identifier ::= identifier
1998 BE??>memory_identifier ::= identifier
1998 BE??>module_identifier ::= identifier
1998 BE??>module_instance_identifier ::= arrayed_identifier
1998 BE??>net_identifier ::= identifier
1998 BE??>output_identifier ::= identifier
1998 BE??>output_port_identifier ::= identifier
1998 BE??>parameter_identifier ::= identifier
1998 BE??>port_identifier ::= identifier
1998 BE??>real_identifier ::= identifier
1998 BE??>reg_identifier ::= identifier
1998 BE??>register_identifier ::= identifier
1998 BE??>simple_arrayed_identifier ::= simple_identifier [ [ range ] ]
1998 BE??>simple_hierarchical_identifier4 ::=
1998 BE??> simple_hierarchical_branch [ .escaped_identifier ]
1998 BE01>simple_identifier3 ::= [a-zA-Z_] { [a-zA-Z0-9_$] }
1998 BE??>specparam_identifier ::= identifier
1998 BE??>system_function_identifier6 ::= $[a-zA-Z0-9_$]{ [a-zA-Z0-9_$] }
1998 BE??>system_task_identifier6 ::= $[a-zA-Z0-9_$]{ [a-zA-Z0-9_$] }
1998 BE??>task_identifier ::= identifier
1998 BE??>terminal_identifier ::= identifier
1998 BE??>udp_identifier ::= identifier
1998 BE??>udp_instance_identifier ::= arrayed_identifier
1998 BE??>udp_output_port_identifier ::= identifier
1998 BE??>simple_hierarchical_branch4 ::=
1998 BE??> simple_identifier [ [ unsigned_number ] ] [ {
.simple_identifier [ [ unsigned_number ] ] } ]
1998 BE??>escaped_hierarchical_branch5 ::=
1998 BE??> escaped_identifier [ [ unsigned_number ] ] [ {
.escaped_identifier [ [ unsigned_number ] ] } ]
1995>white_space ::= space | tab | newline
1998 BE??>white_space ::= space | tab | newline | eof7
1995>NOTE - The period in identifier may not be preceded or followed by a
space
1998 BE??>NOTE
1998 BE??>3 - A simple_identifier and arrayed_reference shall start with an
alpha or underscore
1998 BE??> character, shall have at least one character and shall not have
any spaces
1998 BE??>4 - The period in simple_hierarchical_identifier and
simple_hierarchical_branch shall not
1998 BE??> be preceded or followed by white_space
1998 BE??>5 - The period in escaped_hierarchical_identifier and
escaped_hierarchical_branch shall
1998 BE??> be preceded by white_space but shall not be followed by white_space
1998 BE??>6 - The $ character in a system_function_identifier or
system_task_identifier shall not
1998 BE??> be followed by white space. A system_function_identifier or
system_task_identifier
1998 BE??> shall not be escaped.
1998 BE??>7 - End of file
<p>Definitions that probably require hierarchical and multidimensional
additions and/or modifications
net_assignment ::= net_lvalue = expression
blocking_assignment ::= reg_lvalue = [ delay_or_event_control ] expression
non_blocking_assignment ::= reg_lvalue <= [ delay_or_event_control ]
expression
combinational_blocking_assignment ::= reg_lvalue = [ delay_control ]
expression
combinational_non_blocking_assignment ::= reg_lvalue <= [ delay_control ]
expression
reg_assignment ::= reg_lvalue = expression
reg_lvalue ::=
reg_identifier
| reg_identifier [ expression ]
| reg_identifier [ msb_constant_expression : lsb_constant_expression ]
| reg_concatenation
constant_primary ::=
number
| parameter_identifier
| constant_concatenation
| constant_multiple_concatenation
| constant_function_call
primary ::=
number
| identifier
| identifier [ expression ] { [ expression ] }
| identifier [ expression ] { [ expression ] } [ [ msb_constant_expression
: lsb_constant_expression ] ]
| identifier [ msb_constant_expression : lsb_constant_expression ]
| concatenation
| multiple_concatenation
| function_call
| system_function_call
| constant_function_call
| ( mintypmax_expression )
expression -> hierarchical tasks and functions
Alternate method: create a local identifier and use it in names
<p>//********************************************************************//
// Cliff Cummings E-mail: cliffc@sunburst-design.com //
// Sunburst Design Phone: 503-579-6362 / FAX: 503-579-7631 //
// 15870 SW Breccia Dr., Beaverton, OR 97007 //
// //
// Verilog & Synthesis Training / On-Site Training //
// Verilog, VHDL, Synopsys, LMG, FPGA, Consulting and Contracting //
//********************************************************************//
This archive was generated by hypermail 2.1.4
: Mon Jul 08 2002 - 12:52:55 PDT
and
sponsored by Boyd Technology, Inc.