Why do local labels have this specific design in KiCad?

Hello everyone,

I’ve been wondering about the design of local labels in KiCad. Unlike global and hierarchical labels, which use a “tag” style placed at the end of a wire, local labels are simply represented as text placed above the wires. While I understand the functional differences between these types of labels, I don’t quite understand why local labels have such a distinct design.

Issues I’ve noticed with the current design:

  1. Readability: In complex schematics, local labels can quickly become cluttered, especially when stacked or placed near one another. This can make the schematic harder to read, particularly since wires often have to extend directly to the lenght of the text.

  2. Overlap: When using both local and global labels on the same sheet, their different designs can lead to visual overlap and confusion, where a more consistent design might simplify things. It’s the same with power symbol.
    image
    As you can see in this screenshoot as an exemple.

  3. Lack of clear visual cues: Unlike global labels, local labels don’t have a distinctive shape to indicate the direction of the signal in the wire. But global labels also visually represent much better that they are connected to other labels through their design. This can sometimes confuse readers who are unfamiliar with the schematic or just make the schematic easier to understand.

  4. Frequent misuse of global labels: Many beginners (myself included) tend to use global labels for local connections. This could suggest that the global label design is more intuitive and easier to understand.
    But using global labels is much cleaner and more understandable, although the schematic becomes very cluttered.

  5. Local labels used for more than connecting wires: I understand that local labels can also be used to define net classes or other properties. However, it seems more logical for the netclass directive label to adopt the current design of local labels, as its purpose is more contextual and less prominent.

Potential reasons for this design:

  • Perhaps the design was chosen to minimize visual clutter, keeping local labels discreet and less intrusive compared to other types of labels.
  • This might be a historical convention carried over from other EDA tools.
  • It could also be a way to discourage users from overloading their schematics with unnecessary local labels.

My questions:

  1. Why were local labels designed this way (text above wires) instead of adopting a style similar to global labels?
  2. Are there specific advantages to this design that I may not have noticed?
  3. Is this design a historical convention or a deliberate choice specific to KiCad?

A personal reflection:

As I ask these questions, I also wonder if part of my difficulty stems from how I structure my schematics. Perhaps some of the challenges I face are due to poor practices or inefficient organization of my connections. If that’s the case, I’d be glad to hear your feedback.

Thank you in advance for your insights and opinions!

1 Like

To make documentation having less sheets I prefer to make schematic compact. Also having all schematic at one sheet (till now all my schematics are one sheet) make it (for me) much easier to understand whole schematic - you need not revert papers to see where this or this signal really goes.
You will not find even one other than Local label (power symbols I don’t name labels) at all my schematics.
Local label allows you just name a wire without ending it. I don’t think other labels allow for it.
I never end wire just with naming it and just going to nowhere. I hate such way of schematic being drawn. Seeing such wire ended with label you don’t know where at the schematic to search for wire continuation and even you will find it you don’t know if you for sure found all occurrences of this signal.
I put all named wires into bus so you know that to find wire continuation you need only to follow the bus. I use buses as only graphic elements so don’t have to combine all symbols to make bus description.
In most cases I use one bus, but if you need to make schematic reading even easier you can distribute signals among several buses.
The example from one my schematic:

This one schematic was hard to compress into one A4 sheet but it worked. If I had to use other labels here I will certainly lost more room for it.

3 Likes

There’s a very simple solve-all:
Connect signals using wires and buses instead. That’s what good schematic artwork is.
Otherwise you don’t need a schematic, just make a spreadsheet.

2 Likes

Oh man, I’ve wondered the same thing! I think the local labels are designed to stay as low-key as possible so they don’t distract from global or hierarchical ones. Maybe it’s just a leftover from how older EDA tools worked? :thinking: But yeah, they can get messy in complex schematics. Honestly, it might just be one of those “learn to live with it” things or a sign to rethink the schematic layout. Try asking on the KiCad forum—bet someone there has a solid explanation! :blush: :smiling_face_with_three_hearts:

My solution to that issue is to flip them like this:
image

2 Likes

It is indeed also a historical convention. Every EDA suite I have ever used has this type of labels.

And I like it’s compactness.

Thank you for the feedback—it’s helpful to see different perspectives. However, I feel some points don’t fully address the issue I raised, so I’d like to clarify and expand on my concerns.

Compacting schematics onto a single page

The goal of a schematic isn’t to minimize its size or fit it onto one page. A schematic is a technical documentation tool meant to clearly and accurately convey information to humans. In most cases, it doesn’t add much value to make it all into the same page and can make the schematic harder to understand, except in specific situations.

Using buses instead of labels

While buses can group signals, they don’t solve the main problem. If a bus runs across the schematic, it help, but doesn’t provide a clear indication of where specific signals go if you put every wire in it. With large buses, you still end up searching for individual signals.

For complex projects, especially team efforts, partitioning work into multiple sheets is often a better practice. It helps manage functional blocks and simplifies collaboration.

Adjusting label orientation

Flipping local labels is something I also do, but it highlights a larger issue: we’re forced to use different approaches for tools that are conceptually similar (local and global labels). You must adjust wire lengths to match label positioning instead of simply attaching the label at the end.
While this workaround improves things slightly, it doesn’t solve the fundamental issues of clarity and design.

Conclusion

I’m still trying to understand why local labels are so different from global ones in design, even though they serve a similar purpose (connecting signals). The goal should be tools that are elear and precise for representing connections but flexible enough to adapt to any schematic layout.

The historical convention it’s maybe the best.

Thank you again for your answere.

Goal of schematic not, but one of my goals - why not.

Clear to human is a very complex and ambiguous term. For me, for example, schematic like in your example will probably not be conveying me the information in clear way. Source of problem - as I described - you have to search all schematic (the more sheets, the worse) to find all occurrences of each net name (specially if someone uses global labels).
You can’t assume that OUT2 signal is going to only one place so when you find relay being driven by this signal you can be happy but with risk of missing driven somewhere else a LED indicating the OUT2 state or a capacitor on it intended to filter it for some reason, or may be being also used somewhere else for some not expected reason.

Added value is huge :slight_smile:
You need not to learn how to make multi-sheet schematic, you need not to learn to distinguish different types of labels you see at schematic.
For some people schematic at one sheet is harder for some it is easier. The key thing is that KiCad allows you to approach it however you prefer. For me harder is to design PCB without schematic while we see here (not so rare) people who cannot be convinced to start with the schematic as they just want to move circuit from prototype board to PCB (the best would be 1:1). The advantage of KiCad is that it also allows this approach, even though in my opinion it makes no sense.

If each wire going out of bus has the label than the area around bus that you want to search is may be 5% of whole sheet area so should simplify search at least 20 times. But you can distribute your signals into several buses making searching specific signal even easier.

I agree with it.
You should realize that I cannot write about complex projects because they simply will not fit on one A4 sheet.

Some people want to name each net so that they see that name when routing. If local label would have to finish the wire how would they would do that in simply way (not breaking the wires).

In my opinion global label shape tells you. “And here we finish with this wire - you have to search it somewhere, may be far away from here.”
Local label shape tells you. “For this wire we use the name as you see”.

I assume all nets from power input until regulator giving me VCC as being higher voltage that the other and want little higher clearance for them. At each net I place local labels H1, H2, H3, H4, H5, H6 and so on. Then I include all H* labels into HV class and specify higher clearance for it.
How my schematic would look like if I had to break each such wire to be able to name it.

1 Like

On kicad sheets, I’m not a big fan of the way it’s done.
I prefer the autocad way, where everything is in one model and the sheets are simply drawn portals to portions of the model.

I get that that’s the legacy way everyone used to use, but it’s awkward and in my mind, not taking advantage of the computer as an infinite workspace.

LTspice labels behave like this:

The label usually is positioned above a wire. If the label is attached to the very end of a wire, the label is centered. Could this be implemented in KiCad?

4 Likes

Because, as stated already, only them, in their current form allows to name a signal on a drawn wire. Its not really meant to be used in the schematics that only consists of ICs with “named pins” like in your picture. (what I think of is more an abomination then a schematic)

Of course just breaking out signals needs to be done now and then, but for this use case the global or hierarchical labels exist. Because then the things you mention are needed, direction if the Signal, maybe inter sheet references (not finally working again).

You could not name signals like this if the local labels would have a graphical element attached.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.