Coolquest, Inc. Home Products Support About Contact
cbold_logo_gif C++BOLD Reference Manual cbold_logo_gif

<<< Previous CBOLD Reference Home Next >>>

 

7.5. Subbusses and Nets

During the Connect pass, connections are stored within modules as subbusses. A subbus is similar to a net, except:

1. A subbus does not typically contain all of the connection information for its conductor(s) (hence "sub"). Subbusses can be thought of as single- or multi-conductor bus fragments. The fragments are ultimately assembled into a final netlist in the process of Netlist Extraction.
2. A subbus may contain connection information for more than one conductor (hence "bus").
3. A subbus may contain connection information for non-physical nodes (i.e., port ranges).This information establishes inter-module connectivity.

Connection statements either create new subbusses or add to existing subbusses. For example, in the Connect() function for CM_LV_Comparator:

virtual void Connect() {
 
    VCC     << Amp.VPP;                      // creates an auto-named subbus containing port VCC and pin Amp.VPP
    GND     << Amp.VNN << Reference.VNN;     // creates an auto-named subbus containing port GND and pin Amp.VNN,
                                             // adds Reference.VNN to this same subbus
    OUT     << Amp.OUT;                      // creates an auto-named subbus containing port OUT and pin Amp.Out
    "/NC"   << Reference.NC;                 // adds pin Reference.NC to the global subbus named "/NC"
    "V_REF" << Reference.VPP ^ Rb ^ VCC;     // creates a subbus named "V_REF" containing pin Reference.VPP,
                                             // adds pin Rb.B to this same subbus,
                                             // adds pin Rb.A to the existing auto-named subbus containing port VCC
}

The subbusses for a module are contained within the module's subbus list. This list only contains information about connections within the module, as specified in the module's Connect() function. Connections at higher and lower levels of the hierarchy do not appear in the module's subbus list. Netlist extraction, described in the next section, gathers information from all subbus lists in the design in order to form the final netlist.

Global connections are contained in the global subbus list. Global subbusses always begin with the slash character (/). In general global subbusses are to be avoided. The exception is the global no-connect subbus "/NC". This subbus contains a single conductor, so it is also sometimes referred to as the no-connect net. Attempting to connect a multi-conductor range to the no-connect net will cause a runtime error. The merge() function should be used to make such a connection:

"/NC"      << MyPort( 15:8 );    // incorrect - will cause a runtime error
merge( "/NC", MyPort( 15:8 ) );  // correct   - each pin in the range will be connected to /NC

As discussed in the next section, user-assigned subbus names are eventually used to determine net names.

 

<<< Previous CBOLD Reference Home Next >>>

Legal Copyright © 2007 by Coolquest, Inc. Contact