What is the best way to use KiCad for System Wiring and Harness definition?

Hi all,
I am using KiCAD for some purposes; Electronic Design and System Wiring and Harness Design.
For Electronic Design it works, no questions for now. Electronic and PCB SW tools works when the Electronics are well defined at Unit Device Level, as standalone, but,… what about when this Device is a subset of a wider Design?. How can we define the wiring and connection links to define the complete system?.
For example, let’s imagine brushless motors that control four wheels that are separate from the control unit (MCU) and have to be connected by cables numbered W1 to W4 as shown in next figure…

Through a hierarchical design, we can define the MCU assembly, a PCB with a micro and its associated components which has a motor control connector and through a unique sheet we can define the interconnection wiring which is repeated 4 times but remains the same cable, from the point of view of manufacture; J1 and J2 for each cable (W), in which the only difference being the cable labeling (W1 to W4).
Using KiCAD it is not possible to perform a BOM since the annotation checks that there are no repetitions so does not allow it to continue.
KiCAD will be improved to make this possible? or, if there is some other method, how can we solve to get a correct BOM for the design?.
Thank you very much in advance.

NOTE: Project VEHICLE demo:
Vehicle.zip (26.5 KB)

And here the V2 (cable information inside sheets)
Vehicle_V2.zip (39.8 KB)

Sorry, I’m new user so I can not include more than one image.

In each cable manufacturing, the use of an ESC is included as shown…

I don’t understand your problem with repetition. You can have 10 resistors each 1k and they need not to get the same reference to get them in BOM. The reference is different (no repetition) the value is the same (repetition allowed) and they all land in one BOM line.

That’s true.
As I said, when design is standalone (a device only), we have no problems, R1 to R10 are 10 units of same value, based on your example.
But, what happens in case of that resistors are mounted outside the design, for example, at the end of a 2 wire cable to drain 10 LEDs (D1 to D10) when all cables has exactly the same lengths and you need to document the from-to connections?
You have to manufacture the same block ‘W’, of the same Wiring Part Number, ten times, labelling each one in sequence, W1 through W10, an then create the link references in user documentation (or design) as … “Connect Front Left LED connector W1-J1 to MCU-P1, Connect W2-J1 to MCU-P2, and so on…”.

If the internal references for same subsets are different, you need to create 10 different sheets with 20 different Part Numbers because the connectors have different identification for each one and the label shall be different also.

Usually, the W is the same if the product components and their manufacture is the same. The production cost should be exactly the same in this case.

You have a BOM for a W (with a MFR Part Number) which is repeated ‘n’ times so the cost are calculated by multiplying ‘n’ times the cost of one of ‘W’ BOM.

That’s the problem, … Thinking in System interconnections and never focusing on standalone designs.

Kind regards.

Hello and welcome @GALILEO

Thank you for the Schema & PCB praise.

Unfortunately/fortunately (depends on individual views) Kicad isn’t this far reaching.

I have never used multi sheet schematic so don’t know how it works. I supposed that you can have one sheet used many times and KiCad should take care of naming elements.

In your case I would probably make a separate documentation of ‘module’ (cable with elements) and then made a symbol of this module and used it several times at main schematic.


Sorry, I don’t mean to sound harsh or dismissive.
There are about 20 volunteer Developers dealing with about 1,500 bugs and wishes plus improvements, that cover creating PCBs and Schematics, at any given time.

Maybe one day in the future, when the suite is considered reasonably complete, it may be extended to cover wider design features.

You are ‘leveled up’.

As mentioned earlier, KiCad is not good at harness design (nor is it intended to be). If you’re curious about harness-specific open source design packages, check out wirely/wireviz.

From the systems level perspective though, I’d expect each harness to have a unique designator so it can be tracked separately (even if the harness assembly instructions are identical). The BOM count of a given harness design is also easiest to verify if each one gets a unique reference designator for matching to the relevant port.

1 Like

Sorry if I didn’t know how to explain the problem correctly. It is not a criticism of the development team, nor of the product, it is simply to indicate how KiCAD could reach another fundamental level to carry out a complete design, both Electrical and Electronic, and thus be able to define the interconnections and Interfaces at the system level between subsystems.

I made the VEHICLE project on purpose to explain the problem in a basic way, to know if the approach is correct or if I am wrong and it can be done in another way.

I have the project and I would like to share it so that it can be understood and/or analyzed by anyone, but I don’t know if it is possible to upload the “.zip” to the repository or how to do it if possible. Any help will be welcomed.


Thanks for sharing. I’ll check it out to see if it works for me.

I mean I couldn’t upload two images in the same post at the same time because I was a new user (as the forum posts told me).

As you can see in the image at the beginning, I have a small project (VEHICLE) that I have made to explain the subject of this post. This basic project shows the use of hierarchical pages to demonstrate the blocks and interconnections but I don’t know how I can share / upload it so that it is available.
All the best.

Drag-drop zip on your post. But may be you have to be some time longer here.

I did it. It is now available.
Sorry for being a newbie on this topic.

The problem is that a BOM cannot be generated without going through the previous ANNOTATE in which, due to errors, it does not allow the generation of the BOM.

A possible solution would be to disable the annotation or accept the displayed errors (repetitions) and continue since in my case, these repetitions are possible because they are in different hierarchical sheets in the design (for example J1 and P1 are 5 units of the same type of connector W1…W4 so they should be counted as 5 units of each in the BOM).


In my opinion I would not use hierarchical sheets for connection cables.
I would create a complete schematic symbol of this cable without external connectors J1 and P1.
The cable is a component in itself that does not reside on the PCB
It is basically a mechanical component that must be defined by a technical drawing that shows its mechanical, electrical and material characteristics and its dimensions.
It could also be drawn inside a parametric cad 3d.

By creating a schematic symbol you would have all the serial numbers you need and also the connection to the technical drawings for the construction of the cable.


You did explain well and I didn’t notice any criticisms.
I was just commenting that the program stops where the wiring starts. :slightly_smiling_face:

In my house things stop working when I start wiring. :rofl:

But a serious comment from me is: horses for courses, as they say around here. Sometimes another tool is needed.

One of your problems you have several connectors all with the RefDes of J1, and that does not work in KiCad. The Reference Designator has to be unique for each and every item.

I also do not understand your use of Hierarchical sheets.

What is on that “Archivo: MOTOR_CABLE.kicad_sch” schematic sheet? Schematic sheets are not part of the BOM list. The idea behind behind hierarchical sheets is to reduce repetition (or mulitply repitition?)

Try this: Put both a J1, P1 and the moto BL1 itself on the hierarchical sheet, and also make a schematic symbol representing a cable assembly, and put those all on your “MOTOR_CABLE” sheet. Then use regular bus connections in KiCad to represent a multistrand cable going to that sheet.

If you do this and then insert multiple Motor sheets, then KiCad will create extra parts for each instance of the motor sheet.