[sv-bc] Proposal for SV-BC42-23,24 .name and .*ports


Subject: [sv-bc] Proposal for SV-BC42-23,24 .name and .*ports
From: Dave Rich (David.Rich@synopsys.com)
Date: Mon Mar 03 2003 - 06:06:31 PST


Let me put 42-23 and 24 together

REPLACE in section 12.7.3:
"Implicit .name port connections do not have to be ordered the same as
the ports of the instantiated module.
The following rules apply to implicit .name port connections:
— For an implicit .name port connection to be legal, the connecting
variable name must match the port name
of the instantiated module.
— For an implicit .name port connection to be legal, the connecting
variable size must match the port size of
the instantiated module.
— For an implicit .name port connection to be legal, the connecting
variable data type must be compatible to
the port data type of the instantiated module. See section 12.7.5 for a
description of compatible data types
for implicit port connections.
— Implicit .name port connections cannot be used in the same
instantiation with positional port connections.
— Implicit .name port connections may be used in the same instantiation
with named port connections.
— Implicit .name port connections cannot be used in the same
instantiation with implicit .* port connections.
— The order of the implicit .name port connections does not have to
match the port-order of the instantiated
module.
— All connecting variables must be explicitly declared, either as a port
in the parent module (following the
rules of Verilog-2001) or as an explicit net or variable of one or more
bits."

WITH

A *.name* port connection is semantically equivalent to the named port
connection *.name(name)* port connection with the following exceptions:
— The identifier referenced by *.name* shall not create an implicit wire
declaration.
— It shall be illegal for a *.name* port connection to create an
implicit cast. This includes truncation or padding.
— A conversion between a 2-state and 4-state type of the same bit length is a
legitimate cast.
— A port connection between a net type and a variable type of the same bit
length is a legitimate cast.
— It shall be an error if a *.name* port connection between two dissimilar net
types would generate a warning message as required by the Verilog-2001 standard.
"

REPLACE in section 12.7.4:

"The following rules apply to implicit .* port connections:
— For an implicit .* port connection to be legal, all implicitly connected ports
must have a connecting variable
name to match the port name of the instantiated module.
— For an implicit .* port connection to be legal, all implicitly connected ports
must have a connecting variable
size to match the port size of the instantiated module.
— For an implicit .* port connection to be legal, the connecting variable data
type must be compatible to the
port data type of the instantiated module. See section 12.7.5 for a description
of compatible data types for
implicit port connections.
— Implicit .* port connections cannot be used in the same instantiation with
positional port connections.
— Implicit .* port connections may be used in the same instantiation with named
port connections.
— Implicit .* port connections cannot be used in the same instantiation with
implicit .name port connections.
— If implicit .* port connections are used in an instantiation, all unconnected
ports must be shown using
named port connections.
— When the implicit .* port connection is mixed in the same instantiation with
named port connections, the
implicit .* port connection token can be placed anywhere in the port list.
— All connecting variables must be explicitly declared, either as a port in the
parent module (following the
rules of Verilog-2001) or as an explicit net or variable of one or more bits.
"

WITH

An implicit .* port connection is semantically equivalent to a default *.name*
port connection for every port declared in the instantiated module. A named port
connection may be mixed with a .* connection to override the port connection to
a different expression or to leave the port unconnected.

When the implicit .* port connection is mixed in the same instantiation with
named port connections, the implicit .* port connection token can be placed
anywhere in the port list. The .* token may only appear at most once in the port
list.
"

DELETE section 12.7.5

Note that *.name* is .name in bold

.* is in bold

-- 
--
Dave Rich
Principal Engineer, CAE, VTG
Tel:  650-584-4026
Cell: 510-589-2625
DaveR@Synopsys.com



This archive was generated by hypermail 2b28 : Mon Mar 03 2003 - 06:07:05 PST