A bus is a group of scalar signals (wires), and is never connected to a net. Once a bus acquires a valid name or alias, that name or alias defines the signals carried by the bus and connects those signals to the corresponding nets. For example, the alias A[0:3] defines a four-signal bus that connects the four bus signals A[0], A[1], A[2], and A[3] to the individual wires named A0, A1, A2, and A3. Net aliases on wires do not use brackets.
You can place one pin on a part that represents all the pins for a bus. Such a pin is called a bus pin. Bus pins use the same naming convention as buses.
You can use bus pins in most of the cases where you can use scalar pins. Examples of these would be:
- Off-page connectors.
- Hierarchical ports.
- Hierarchical pins of nonprimitive parts and hierarchical blocks.
Bus pins will only work with the VHDL netlist format. No other netlist format understands them.
Do not use bus pins in the following situations:
- Pins on primitive parts.
- Any design that you intend to use with PCB Editor.
Like wires, buses can acquire names and aliases by two means:
- Direct application of a valid bus name
- Electrical connection to a hierarchical port, off-page connector, or global bus pin with a valid bus name or alias
In addition to the rules by which netnames are resolved, bus names and aliases run the following rules.
Important
These rules apply when two buses with different aliases are physically connected to each other or you attach multiple aliases on a single bus.
- If one alias defines a subset of the signals defined by another, like-named signals are connected. For example:
Given aliases A[0..2] and A'[0..5]:
A[0] connects to A'[0], A[1] connects to A'[1], and A[2] connects to A'[2]. -
If buses are with different aliases
A[x..z]
andB[p..t]
, the connection is done in bit-wise manner.A[x]
is connected toB[p]
,A[y]
is be connected toB[q]
and so on, wherex
,z
,p
, andt
are whole numbers.
For example:
Given aliases A[0..2] and A'[1..3]:
A[0] connects to A'[1], A[1] connects to A'[2], and A[2] connects to A'[3].
Given aliases A[0..2] and B[5..0]:
A[0] connects to B[5], A[1] connects to B[4], and A[2] connects to B[3].
As you place buses and wires, remember the following points:
- A bus and a wire can be connected only by a name.
- If you begin or end a bus segment on a segment of a wire, a vertex is added to the wire, but no junction appears—the bus and wire are not connected.
- If you begin or end a wire segment on a segment of a bus, a vertex is added to the bus, but no junction appears—the wire and bus are not connected.
- Two buses or two wires can be connected physically.
- If you begin or end a bus segment on a segment of another bus, a vertex is added to the second bus, and a junction appears—the buses are connected.
- If you begin or end a wire segment on a segment of another wire, a vertex is added to the second wire, and a junction appears—the wires are connected.
Capture preserves the case of part names and netnames, but ignores the case when comparing names for electrical connection. That means you may use uppercase or lowercase letters as you wish, but you need not remember the case.
To make connections to a bus, you label the bus, label the signals that are members of the bus, and assign an alias to each signal entering and leaving the bus. Each signal bears an alias that is within the bus range. For example, if the bus alias is ADDR[0..3], the four bus members must bear aliases ADDR0, ADDR1, ADDR2, and ADDR3.
In Capture, you can use an alias to connect a signal from one area of your schematic page to another without placing a bus between the areas. For example, suppose you have placed the bus TIMING[1..4] on your schematic page and you want to connect it to another object at the opposite corner of the schematic page. Instead of drawing a bus from TIMING[1..4] to the other object, you can assign the alias TIMING[1..4] to the other object.
To provide a visual cue that a signal is tied to a bus, you can physically connect the signal to the bus. It is recommended that you use a bus entry for this connection. The advantage of using a bus entry is that two bus entries can be connected at the same point on a bus without connecting the signals. If two wires are run directly to a bus at the same location, the signals are connected.
As you place buses and wires:
- A bus and a wire can be connected only by name.
- If you begin or end a bus segment on a segment of a wire, a vertex is added to the wire and a junction appears, but the bus and wire are not electrically connected.
- If you begin or end a wire segment on a segment of a bus, a vertex is added to the bus and a junction appears, but the wire and bus are not electrically connected.
- Two buses or two wires can be connected physically.
- If you begin or end a bus segment on a segment of another bus, a vertex is added to the second bus, and a junction appears—the buses are connected.
- If you begin or end a wire segment on a segment of another wire, a vertex is added to the second wire, and a junction appears—the wires are connected.
To create a bus
-
From the Place menu, choose
. - Click to start the bus.
- Use the mouse to draw the bus.
- Click to place a vertex and change directions. The vertex is constrained to a multiple of 90 degrees.
- Double-click to end the bus.
- Select the selection tool to dismiss the bus tool or repeat from step 2 to place additional buses.
To place a non-orthogonal bus
- Hold the Shift key while you draw the bus. There is no constraint on vertex angles.
To name a bus
-
From the Place menu, choose
.Capture displays the Place Net Alias dialog box.
- Following the naming conventions for buses, enter the net alias in the dialog box that appears, then click OK. The bus appears in the selection color.
- Use the mouse to move the net alias and click on the bus to place the net alias. The net alias appears in the selection color. The tip of the pointer must be touching the net for you to place the net alias.
- Select the selection tool to dismiss the net alias tool. The alias is added to the alias list for the net.
Shortcut
Tool palette:
To connect single-signal nets to a bus
- Place the bus and assign it a name.
- From the Place menu, choose the Bus Entry command. The bus entry symbol is attached to your pointer.
-
If the entry is not at the angle you need, then from the Edit menu, choose the
to rotate the entry 90 degrees counterclockwise. - Use the mouse to position one end of the entry on the bus, then click to place the bus entry.
- Repeat step 4 until all bus entries are placed. If you place the bus entries at regular intervals, you can simplify connecting the single-signal nets to the bus entries.
- Place a wire to connect the first bus entry to one net, and place an alias, taking care to assign this bus member the lowest value in the bus range.
- Select the entire wire and press Ctrl and drag the wire so that it connects the next net to the bus. Note that the wire is copied to the new location and the alias value is increased by one. However, if you select only an end of the wire (and not the entire wire) and then drag the wire keeping Ctrl pressed, the wire is moved to the new location along with the original alias value.
- From the Edit menu, choose the Repeat command. The wire and the incremented alias are placed at the specified distance from the previous set.
- Repeat step 8 for every net in the bus or repeat steps 7 and 8 as needed, then select the selection tool to dismiss the set.
You can place one pin on a part that represents all the pins for a bus. Such a pin is called a bus pin. Bus pins use the same naming convention as buses.
Shortcut
Tool palette:
In this section: