Multiboard support

Hi,
I’d like to catch up on zoonman’s post for Multiboard support that had been automatically closed.
Basically I am thinking of what you’d find in those wonderful service manuals of vintage AV- or Measurement equipment:
There is a block diagram showing all the modules (aka PCBs) and how they are interconnected. There is a common BOM for the complete device with i.e 3digit designators usually starting with the same digit on each PCB (All parts on power supply are x1yy, processing is x 2yy, … x being the component [R,C, U,…] and y the numerical designator).
From a device’s perspective it would be logical to have all things electronic organized into one project. All the PCBs, but also things like internal interfacing / wiring or simulation.

nhatkhai proposal to design a panel with various PCBs was actually used for AV-equipment in the 80s. Companies like Onkyo they would arrange all the various single sided cardboard PCBs they needed for one device into one panel, populate this, break apart and make one product from it. Nevertheless this would limit flexibility as you can only use one PCB technology for all PCBs. In reality you would probably like to use multi layer PCB for the processing unit, cheap 2 layer for keypad PCB and may also require flex PCBs for moving parts.

Also for simulation an engineer might prepare dozens of small SPICE simulations for a project. Never the complete schematic, but rather small and abstract models of parts of a project to determine analog parts values. It currently annoys me with KiCad that I have to have one project and one schematic for a small simulation. With cmdline Spice one could have many “schematics” in one folder and invoke Spice on the one that one wants to simulate.

Basically I believe that KiCAD workflow (eeschema → pcbnew) is well suited to deal with multiple PCBs in one project. eeschema doesn’t know anything about PCB technology, but passes on the information about (one) PCB to pcbnew by means of netlists.

By adding a parameter to the hierarchical schematic feature of eeschema one could tell KiCAD if such a schematic is describing a real PCB or virtually grouping circuits.
This additional parameter is inherited by all schematics / parts that reside on this schematic.
So every signal, component knows on which PCB it resides, or if it is virtual like for simulation only.

By using the hierarchical schematic browser in eeschema one could select (or mark active) such a schematic that describe an individual PCB so that netlist generation, invocation of PCBnew or SPICE only work on the activated schematic.

Interconnection between PCBs is managed by using global labels on the edge of the schematic blocks in the top level schematic.
Nets with identical names on different PCBs have to be internally extended by a PCB designator to make sure they are unique.
With this all highlighting / searching from schematic to PCB and vice versa should work.

I see the big advantage that I can collect all information about a product that one develops in a single KiCad project and that modifications (pin-swap on connectors) are automatically updated und documented.
Furthermore I would really like to have multiple small schematics in a project that I could individually activate for simulation.

Looking forward to your thoughts about this proposal.

4 Likes

I hope Kicad team will think over it.

Don’t waste your time asking !

A single schematic having multiple PCBs or non-hierarchical
schematic having multiple printed sheets are not considered a useful, so not on the Kicad development roadmap.

(There will be a ‘post a feature request" or ’ code it yourself’ comment wil be posted soonish)

Where do you get this idea?

Here are some of the feature requests people have already opened in this area.

I’m guessing Docara has a misunderstanding between the collective wishes of those (hundred thousand or more?) KiCad users, and the limited developer resources of the KiCad project itself.

When following this link: Issues · KiCad / KiCad Source Code / kicad · GitLab you will currently see there are 558 open feature requests for KiCad. None of them are “forgotten” or “not considered useful”, but it will take multiple years to implement all those feature requests.

image

A common reason why this multi board feature is requested is to reduce pcb tooling fees.
A large combined panel makes it hard to share lots of customers projects onto a single pre-preg sheet, so I suspect that the cheap vendors will find a way to stay profitable

This is partly due to the development of technological equipment… now both liters and automatic machines for SMD installation are becoming available… and there the multi-plate simplifies the installation itself even for small quantities… you don’t need to have 10 different stencils and change them 10 times equipment…

Please check
Hameg 203-5 Service Manual
pages 29 – 42. It’s a really old school oscilloscope. But the documentation really explains the function of the complete product. To do similar with KiCAD would be a thing of beauty and joy forever :star_struck:

With Current KiCad you have to develop each board on it’s own, then do one extra project and model a toplevel schematic with the PCBs that have been developed and draw the connections between the boards. But this is just a bad workaroud.

Also how do you do simulation in KiCad? Do you do one project for every tiny simulation?

I’m in the “don’t care” with regards to multiboard support.
I do think, however, the current Kicad method is to develop the schematics first, with interconnections, then, when they are finalized, move to the PCBs.

I also do not think simulation has much to do with multiboard layout.

Simulation of a complex multiboard design is going to be computationally impractical unless you can model most of it as a series of black boxes with outputs only

For designing a product I would propose the top down approach: having the complete product in mind at the beginning. Then breaking it down in PCB for i.e. power supply, main board and maybe display board. If the display is an old fashioned LED numeric driven with segments and digits and the driver IC resting on the mainboard it would be nice to have the interface between the main board and display board within one project.

My idea is that eeschema can deal with several schematics similar to what is possible through the existing hierarchical browser.
A top-level-schematic could feature several sub-schematics. If one of those is a standalone PCB one can set a “PCB” flag in the properties of this sub schematic. This will render the outline of the block of this schematic in the top-level-schematic green to show that this will be a PCB later on. Everything that is on this schematic belongs to it.There could also be a small logo in front of the sub-schematic that this is a PCB in the schematic browser on the left side of the screen.

Once done with the top level design one should be able to mark one of the “PCB”- schematics as active. From there on all the layout functions (netlist, invocation of PCBnew) of eeschema should work on this schematic. With this one can layout all PCBs one after another. There is not a big impact to the current workflow, but one is not switching project, just staying in one project and selecting one PCB as active when doing layout. The BOM highlight and find functions should include all schematics except simulation, see below.

Regarding simulation my last post was misunderstood. I totally agree that simulating a complete product makes no sense.
My point is that simulations always focus on small parts of a big project. Maybe it is finding the best parts for a filter or checking a PLL.
Doing simulations with KiCad so far (pls correct me if I’m wrong) is to always set up a Kicad project just for one single simulation. So I end up with many projects each containing a tiny schematic and simulation results only. Once the optimal values are found they are copied to big project and the simulation files are discarded. :slightly_frowning_face:
When checking projects of my colleagues I often wonder for what reason some values were picked. :woozy_face: Here it would be great to be able to place a link in the big schematic at the position of the small circut that was simulated that takes me directly to the simulation schematic (that is also part of this project).

Similar as described above a schematic should have a property “simulation”. This should separate it from the process of global adding of designators. Also such schematics could have a small simulation logo in the schematics browser to identify then easily. This allows to separate simulation from the layout data, but keeping it within the same project where the simulated circuit is used.
A simulation only schematic can also be set to **active **. Then all simulation features of eeschema will work on this schematic exclusively.
So one can quickly switch between several simulations.

The main benefit I see using such an approach is that all “knowledge” that goes into designing a product goes into one single KiCAD project. This would take the term “project” within KiCAD to new level.

Hope that my point is more clear now. Looking forward to your comments.

2 Likes

Your comments read very well! :slightly_smiling_face:

Completely agree? ( I tried to.say this in various posts) but never as clear. :+1:

I would add that instead of only having one board / schematic active at a time, they could as well be opened in separate instances of the schematic and board editor, under the same project.
Or possibly even defined as separate boards in the same board editor instance, whichever is most convenient from a user perspective.

Du kannst das selbe erreichen mit mehreren KiCad Projekten. Ein Projekt enthält das Komplette Schema: Das Blockschema des kompletten Gerätes und dieses Blockschema hat jede Leiterplatte als ein Teilschema / Hierarchiesches Schema mit dem Namen der Leiterplatte.
Dann erstellst du für jede Leiterplatte ein eigenes Projekt, in dem gleichen Ordner mit dem entsprechendem, bereits vorher für das Teilschema verwendeten, Namen. Das bewirkt, dass das vorher erstellte Teilschema bereits zum Projekt gehört. Willst du das Schema ändern kannst du das entweder im entsprechenden Leiterplattenprojekt machen oder im entsprechenden Teilschema des Gesamtprojektes, in beiden Fällen wird die gleiche Datei geändert. Die Leiterplatten musst du dann immer im entsprechenden Projekt der Leiterplatte Zeichnen.

Das ist natürlich nicht ganz so schön wie eine integriere Funktion aber bis es diese gibt wäre das vielleicht eine Option.


You can achieve the same with several Kicad projects. A project contains the complete scheme: the block scheme of the complete device and this block scheme has each circuit board as a partial scheme / hierarchical scheme with the name of the circuit board.
Then you create your own project for each circuit board, in which the same folder with the corresponding name used beforehand for the partial scheme. This means that the partial scheme created beforehand is already part of the project. If you want to change the scheme you can either do this in the corresponding circuit board project or in the corresponding sub -scheme of the overall project, in both cases the same file is changed. You always have to draw the circuit boards in the corresponding project of the circuit board.

Of course, this is not quite as beautiful as an integrates function, but it might be an option until it gives it.

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