Bundling Multiple Nets into Buses & Signal Harnesses in Altium Designer

A common challenge in a large design is keeping the nets manageable. Not only from the perspective of the designer creating the connectivity but also from the perspective of the reader that has to interpret and understand the schematic. This is particularly important when connecting between sheets as this is when both the designer and the reader can most easily get confused.

If the design includes high pin-count components, it is not practical to create all of the connectivity using individual wires. Multiple nets can be bundled into a Bus if they are members of a numerically incrementing set, such as Data0, Data1, etc. Alternatively, any combination of nets and buses can be bundled into a Signal Harness, which offers a visually and logically neat way of transferring multiple nets throughout your design.

Working with Buses

Buses are used to bundle a series of sequential nets, for example, an address bus or a data bus. Their core requirement is that each net in the bus is named with a common base name, followed by a numeric identifier, as shown in the images below. For example, the nets Control1, Control2 and Control3 can be bundled into the bus Control[1..3]. Buses cannot be used to bundle an unrelated set of nets, such as the nets Enable, Read and Status, Signal Harnesses are used to do this, as explained below.

To create a valid bus, it must include all of these elements (as shown in the images below):

  • A Net Label on each of the individual nets
  • A Net Label on the Bus line
  • A Port named the same as the Bus if it is leaving this sheet

All of the elements shown in the image above must be included to create a valid Bus. Bus Entries only need to be used if you want to rip different bus elements from both sides of the Bus. 
All of the elements shown in the image above must be included to create a valid Bus. Bus Entries only need to be used if you want to rip different bus elements from both sides of the Bus.

Buses are not transferred to the PCB, instead, a Net Class can be created for each schematic Bus, or if required, for each Bus section. A bus section is created by specifying a bus which is actually a section of a larger bus, for example, from the bus D[15..0]. If this option is enabled then the PCB will include a Net Class for the entire bus, as well as each section that has been defined. Enable the required options in the Class Generation tab of the Options for Project dialog.

Working with Signal Harnesses

Signal harnesses are highly flexible as they can be used to bundle any number of nets, buses and lower-level harnesses. As their name implies, they are analogous to a wiring harness, where any arrangement of wires can be bundled and routed through an electronic or electrical product. They are more complex to create and manage, but the reward is that they can greatly simplify the presentation of a schematic and enhance its readability.

Signal harnesses are used to bundle any combination of nets, buses, and lower-level signal harnesses.
Signal harnesses are used to bundle any combination of nets, buses, and lower-level signal harnesses.

The elements that make up a complete signal harness include:

  • Harness Connector - Think of a Harness Connector as a funnel, it gathers all of the signals that connect into this harness through the included Harness Entries. A key property of the Harness Connector is the Harness Type, this identifies the harness and is used to bind together the various elements that make up the signal harness, including the connected Ports / Sheet Entries.

  • Harness Entries - Each signal (net, bus or signal harness) that you want to be part of this signal harness, enters the Harness Connector through a Harness Entry. The Harness Entry includes a Harness Type property, this is only used when you are nesting signal harnesses - signifying that this Harness Entry has a lower-level signal harness connected to it.

  • Signal Harness line - The bus-like line that is placed to carry the signal harness across the sheet.

  • Harness Type - A Harness Type is a set of Harness Entries. Each detected Harness Type is defined in a Harness Definition File, as described below. The Harness Type and its associated Harness Entries are essentially names of the containers that carry the nets, not the names of the nets themselves. To check the Harness Type value, hover the cursor over the object, for example, the Port, Sheet Entry, or Harness Connector.

  • Harness Definition File - The software manages signal harnesses by recording the Harness Entries that are in each signal harness (Harness Type), in an ASCII Harness Definition File. The image below shows the syntax of a Harness Definition File, there is a line in the file for each Harness Type, which details the Harness Entries within that harness. A Harness Definition File is automatically created (and managed) for each schematic sheet that has Harness Connectors on it, you can find them in the \Settings folder in the project tree, as shown in the image below. If your design has had changes that impact the signal harnesses, the Harness Definition files are updated automatically. If a Harness Definition File is not present in the project folder, it is automatically re-created when the schematic sheet is opened (they can be deleted and will be automatically recreated if required).
  • Port + Sheet Entry - Like a Net or Bus, a Signal Harness can leave a sheet via a Port, and then connect to the higher level sheet through a matching Sheet Entry. Note that the software automatically changes the color of the Ports and Sheet Entries to show they are carrying a Signal Harness if the Sheet Entries and Ports use Harness Color option is enabled in the Schematic - Graphical Editing page of the Preferences dialog. Note also that the Port and Sheet Entry objects include a Harness Type property, this value is set automatically as you touch the Port to the Signal Harness line when you are placing the Port. For the Port on the schematic sheet where the Harness is defined (the Harness Connector is present) the Harness Type is automatically defined and is not editable. For a Port or Sheet Entry placed on a higher-level schematic sheet, it will be blank and editable, typically there is no need to manually set this. The assigned Harness Type can be checked at any time by hovering the cursor over the Port/Sheet Entry.

Harnesses definitions are stored in Harness Definition files, in the image above there are two signal harnesses defined: 1WB_Write_Read and JTAG.
Harnesses definitions are stored in Harness Definition files, in the image above there are two signal harnesses defined: 1WB_Write_Read and JTAG.

If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Note

The features available depend on your Altium product access level. Compare features included in the various levels of Altium Designer Software Subscription and functionality delivered through applications provided by the Altium 365 platform.

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Content