Implicit connections [corrected]

From: Kevin Cameron <kevin_at_.....>
Date: Mon Feb 05 2007 - 11:06:35 PST

[Had a typo in the ^. example.]

To give some context to the other discussion on connect module instantiation paths, here's a proposal for connecting up things like power.


Rationale:

Digital design descriptions (Verilog) usually lack power supply information, so a design hierarchy mixing Verilog-AMS and Verilog modules needs a way to connect power signals from lower level (analog/connect) modules to definitions up the hierarchy when the immediate parent does not connect them. Connect modules need to connect into the local power and substrate for accurate modeling but have no port mechanism to support such connection.

Current SoC designs include large amounts of power management, including varying back-bias and being able to turn off power to sections of a chip, and these features need to be modeled.

Proposals:

1. Default Connection Statement

If a signal is in the port list or is marked as i/o (input, output or inout) it can be given a default connection, the syntax being:

      default <signal or port> = <connect expression>;

If no direct port connection is made to the signal it is connected as indicated by the <connect expression>. It would be an error for <connect expression> to be invalid (e.g, a non existant OOMR).

The connection behaves the same as a normal port of the module with respect to connect module insertion, e.g. if the connection is for a power supply that is gated in a digital module and the local reference is analog a connect module would be inserted automatically. This may mean that connect module instances are parents to other connect module instances.

2. Upward Hierarchical Reference Operator

The operator "^." can be used to find an object in the direct parent hierarchy. E.g. in the following module the signal vdd will be connected to the first occurrence of the signal vdd in an instance in the hierarchy above it (searching upward):

   module foo(a,b,c);
      input a,b;
      output c;
      input vdd; // not an explicit port
      default vdd = ^.vdd;
      ...
   endmodule


Notes:

The upward operator is required because normal hierarchical references need an instance/block name as part of the reference (e.g. power.vdd), so won't allow connection into a parent without knowing the parent's name.

The <connect expression> could be something complex like:

  ^.vdd or power.vdd

- that would allow a straight up search for a vdd, and if you hit the top without finding it you look for it in an instance called power, that way you can patch up a design by adding top level modules to catch the dangling implicit signals.


Comments?

Kev.


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean. Received on Mon Feb 5 11:06:57 2007

This archive was generated by hypermail 2.1.8 : Mon Feb 05 2007 - 11:07:07 PST