# Bus vs Signal Harness in Altium

I am designing a Schematics for one of my big project. I am using Hierarchical Design for my project. My Schematics has one processor which has 5 UART. The UART nets have names like UART1_TX, UART2_RX. I have to move such signals from child sheet to top level sheet and from top level sheet to various other sheets via Sheet Symbols and Sheet Entries.

After reading this article, I got to know Buses should be used only with signals (or net labels) which has sequential names like Data0, Data1 and etc.

But in the past, I was using a Bus to collect signals like UART1_TX and UART1_RX and move from sheet to sheet. The Net Identifier scope was set to Global. I was actually following the way that has been presented on these Evaluation board Altium Projects. I realized now that Bus in my earlier practices weren't actually doing anything as the Net Identifier scope was set to Global.

I want to know is Signal Harness is a right Net Identifier for my signals (UART1_TX and other GPIO signals GPIO_PIN_20)?

Why it is not being used in above Evaluation Projects?

Below is the picture of my harness:

You're using harnesses in a slightly strange way - not wrong as in "it will work and at least the signals are grouped" but what I would do is to do the following:

• Learn the difference between a harness type and the harness name (net label put onto the harness). The harness type is e.g. UART, it will have four signals named RXD, TXD, RTS, CTS. Think of object oriented software. You have a type (class) and you generate multiple instances (UART1, UART2, UART3, ... all of them are of type UART).
• With that knowledge, separate the 3 harnesses from your picture; all of them are of type UART (same type) but you apply different net labels to each of the harnesses (UART1, UART2, ..).
• Now, automatically you will get the following signal names in the PCB: UART1.RXD, UART1.TXD, ... You'll also get the correct net classes if you have set the option in the project options

You probably weren't really using busses because as you state, the signal names for your bus must be somewhat sequential and RX/TX do not follow that. As you said, AD probably connected your net labels through the "global" setting which I would recommend against.

• What you mean by Harness name? Can you explain? – abhiarora Jan 4 '19 at 13:32
• I added an image to show what I mean. – Tom L. Jan 4 '19 at 15:05
• Thanks. I am planning to add another connector which will connect all the instances of UART like UART1, UART2 etc. and call it IMX6ULL_UART and then move that signal harness all around the subsheets. – abhiarora Jan 4 '19 at 15:10
• Is that a good idea? – abhiarora Jan 4 '19 at 15:10
• I don't think so because each of your UARTs might go someplace else - there won't be a single page where you're using all UARTs. If you split them up, you can easily see in your top sheet that UART1 goes to the WLAN module, UART2 to some connector, UART3 to a USB-UART converter and so on. If you have all inside a single harness, you can only see that there is an UART but going to those sheets but you can't tell which. Only feed those signals into the sheet you actually need. – Tom L. Jan 4 '19 at 15:17

I want to know is Signal Harness is a right Net Identifier for my signals (UART1_TX and other GPIO signals GPIO_PIN_20)?

I see no reason why using harnesses would not work as expected. I have used them before with acceptable results.

Schematics with harnesses will automatically generate additional support files in your file structure, which I find annoying. I preferentially use normal buses where possible just for this reason. Less files to manage results with potentially greater portability of the design, and better reverse compatibility.

It can get confusing if you need to change harness definitions during project development. There are built-in utilities to help mange this. However, a little planning ahead of time makes harness definition and maintenance easier.

Why it is not being used in above Evaluation Projects?

Altium's examples probably lag behind software changes (just like all of their documentation).

The latest example files that I have are dated 2/2018 (for AD18) in the SpritLevel-SL1 example. Even this one does not use harnesses. I have not stumbled upon an official example that uses harnesses, but I would expect one to exist somewhere. I'll keep looking.

I do like the look of harnesses, and the resulting readability, and will continue to use them in cases where layman readability is a priority.