BE71

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.