bus-spelling-not-a-bus
A label is spelled like a bus, and this format reads it as one plain net.
Remedy ¶
Respell the label in the format’s own bus syntax (in KiCad, DATA[0..7] rather than DATA[7:0]) if it names a bus, or rename it without the range if it names one signal.
What it means ¶
A label’s name carries an index range, the way a schematic names a bus, but in a spelling that
the source format reads as one ordinary net. KiCad writes a bus as DATA[0..7] and only
that. A KiCad label written DATA[7:0], the spelling xschem and gEDA use, is a plain scalar net
whose name happens to contain brackets and a colon.
Why engineers want it ¶
Whoever typed DATA[7:0] meant eight signals. KiCad makes one net of it. Wherever that label
joins wires, it joins signals that the author meant to keep apart, and the drawing looks the same
either way. Nothing else in the read can reveal it, because a single net with a strange
name is a perfectly valid design.
Impact ¶
Signals that the author believed were separate share a net. Or member taps meant for a bus connect to nothing that carries them. Warning severity, because it is a defect in the design as the tool reads it, not a gap in the read.
Scope ¶
Only the KiCad reader records how it reads a range-spelled label, so the rule reports not-applicable on other formats. xschem and gEDA read the colon spelling as a bus, so the same label there is correct.
A label in KiCad’s own bus syntax is a pass, so a sheet whose every bus is spelled correctly says
so. bus-not-modeled asks whether that bus’s members resolve into nets, and this rule does not. A
name used on several sheets is one verdict, since respelling it is one change.
Query structure ¶
decide each range-spelled label by whether its format reads the spelling as a bus.
select L in range_labels where not reads_as_bus(L)
Reads: bus.construct (a reader diagnostic). Tier P.
For software readers ¶
The two spellings are two dialects of one idea, the way a[1:3] slices a list in Python and is a
syntax error in C. A KiCad schematic using the other dialect is still a valid file, so nothing fails
to parse. The bracket text simply becomes part of a name, much as a string that looks like code is
still a string.