From: stefen@boyd.com
Date: Mon Jul 26 1999 - 18:32:58 PDT
Hi all,
I've pretty much taken Adam's mail from 5/22/98 and cleaned it
up a little. I threw out a couple parts:
1) It was proposing to reorder section 12.1.2, 12.2, 12.3, 12.4
to put ports first... Nice idea but it would require
more work than simply moving them around. The biggest
trouble is that we can't just remove 12.1.2 from 12.1
without more work/rewrite. Probably a little late for that now.
2) named_port_connection is present in Draft 2 so I didn't see the
need to propose it's addition to Syntax 12-2.
I also re-did the edits for 12.3.x since it looks like the
biggest problem there was that it's pretty unclear which
sections are talking about the declared ports, and which are
talking about instantiating...
I'll leave it to Cliff/Anders to put this up for vote...
Stefen
--------------------
Stefen Boyd
__
| \ ____
|_/_ |
| \ |__
|___/oyd |
|___nterprises
stefen@boyd.com
(408)739-BOYD
(408)481-9658 (fax)
<p>===================================
<HTML>
<title>BE71</title>
<h1>Proposal (Section 5.6.6):</h1>
<p>Remove the 3rd paragraph starting with "Port connection rules
are" and the rest of the text in section 5.6.6
<h1>Proposal (Section 12.1, 12.2, 12.3):</h1>
<p><ol>
<li>Change name 'list_of_module_connections' to
'list_of_port_connections' in Syntax 12-2 (also BNF) as it is
more consistent with 'list_of_ports'.
<li>Add text to make it clear where we are talking about
connection by order.
<ul>
<li>Change 3rd and 4th paragraphs after Syntax 12-2 (changes in
red):
<p>The list of <font color=red><strike>module</strike>
port</font> connections shall be provided only for
modules defined with ports. The parentheses, however, are
always required. When a list of <font
color=red><strike>module</strike> port</font> connections is
given <font color=red>using the ordered port connection
method,
</font> the first
element in the list shall connect to the
first port <font color=red>declared
in the module,</font> the second to the second port, and so on. See
12.3 for a more detailed discussion of ports and port
connection rules.
<p>A connection can be a simple reference to a register or
a net identifier, an expression, or a blank. An expression
can be used for supplying a value to a module input port.
A blank <font color=red><strike>module</strike> port</font>
connection shall represent the situation where the port is
not to be connected.
<li>
</ul>
<li>Strike the parenthetical statement in 12.3.1 "(this is the completion of the
syntax presented in 12.1)". Syntax box 12-3 is contained in syntax box 12-1! (Shalom)
<li>Strike the sentence in section 12.3.1 last paragraph, "The two types of
module port definitions shall not be mixed; the ports of a particular
module definition shall all be defined by order or all by name."
It will be re-inserted when talking about module instance port connections.
<li>Add to end of Section 12.3.1:
<p>The first type of module port definition with only a
port_expression is an implicit port definition. The second
type is the explicit port definition. This explicitly
specifies the port_identifier used for connecting module instance
ports by name (see 12.3.4) and the port_expression which contains
identifiers declared inside the module as described in 12.3.2.
Use of named port connections shall not be used for implicit port
definitions unless the port_expression is a simple port_identifier.
<li>Add examples to section 12.3.2:
<pre><tt>
module complex_ports ({c,d}, .e(f)); // Nets {c,d} receive the first port bits.
// Name 'f' is defined inside the module.
// Name 'e' is defined outside the module.
// Can't use named port connections because
// of first port.
module split_ports (a[7:4], a[3:0]); // First port is upper 4 bits of 'a'.
// Second port is lower 4 bits of 'a'.
// Can't use named port connections because
// of part-select port 'a'.
module same_port (.a(i), .b(i)); // Name 'i' is defined inside the module as
// a inout port. Names 'a' and 'b' are
// defined for port connections.
module renamed_concat (.a({b,c}), f, // Names 'b', 'c', 'f', 'h' are defined
.g(h[1])); // inside the module.
// Names 'a', 'f', 'g' are defined for
// port connections.
// Can use named port connections.
</tt></pre>
<li>Change 12.3.3 title "Connecting module <font
color=red>instance </font>ports by ordered list"
<li>Change 12.3.4 title "Connecting module <font
color=red>instance </font>ports by name"
<li>Change 1st paragraph of 12.3.3:
<p>One method of making the connection between the port<font
color=red><strike>s</strike> expressions</font> listed
in a module instantiation and the ports defined by the
instantiated module is the ordered list -- that is, the port<font
color=red><strike>s</strike> expressions</font>
listed for the module instance shall be in the same order as
the ports listed in the module definition.
<li>Change the 1st part of 12.3.4:
<p>The second way to connect module ports consists of
explicitly linking the <font color=red><strike>two names port
for each side of the
connection</strike>
port definition name from the module declaration to the
expression<strike> -- the name used in the module definition,
followed by the name</strike></font> used in the instantiating
module. This compund name is then placed in the list of module
connections. The
name of port shall be the name specified in the module
definition. The name of port cannot be a bit-select, a
part-select, or a concatenation of ports. <font color=red>If
the module port definition was implicit, the port_expression
must be a simple port_identifer which is used as name of port.
If the module port definition was explicit, the explicit name
is used as the name of port.</font>
<p>The port expression <font color=red>can be any valid
expression using identifiers in the scope of the instantiating module.<strike>shall be the name used by the
instantiating moudle and can be one of the following:
<p>-- A simple identifier
<p>-- A bit-select of a vector declared within the module
<p>-- A part-select of a vector declared within the module
<p>-- A concatenation of any of the above</strike>
</ol>
</HTML>
--------------------
Stefen Boyd
__
| \ ____
|_/_ |
| \ |__
|___/oyd |
|___nterprises
stefen@boyd.com
(408)739-BOYD
(408)481-9658 (fax)
This archive was generated by hypermail 2.1.4
: Mon Jul 08 2002 - 12:53:29 PDT
and
sponsored by Boyd Technology, Inc.