Public Repository of Hierarchical Blocks


#1

Is there any known maintained public repository of hierarchical sheets?

As I’ve been blocking everything out… I figure it may be useful to the world…
Some are proprietary, but others are general purpose and I can share.
People would need to fork it and re-pulling from master would be a pain due to how the sheets themselves store annotations, but…

Does anyone know of a project like this?
It would need maintenance and standardization as the kicad-symbols and kicad-footprints do.


#2

A solution to KiCad storing the annotations in the .sch files themselves is that you would pull in the repository as a submodule (or just straight up clone it) and then you would branch it so that you could re-annotate everything yourself.

That way after branching, any you can track and commit changes for an individual project.

I’m currently using this scenario myself…

If it sparks anyone’s interest, the blocks I have been creating are primarily for synthesizers.


#3

There is a Symbol Library in Eeschema called “MCU_Module” which has some Arduino’s and the Maple_Mini as components.


#4

How do you ensure some quality-control on the circuit-snippets?
some measurements, oscilloscope-screenshots, perhaps simulation results, would be good to include with the circuit-snippets…


#5

I was just at the Digikey site looking at their reference design library, hoping that they would have some standardized way to import them into a design. But their library entries use all different types of design files, including none at all (just PDF schematics).

It would be nice to have a library of KiCad snippets.


#6

related bugreport: https://bugs.launchpad.net/kicad/+bug/1797683

a library would be cool, but it has to be maintained and verified (which is way harder than for some footprint/symbol).


#7

And even this is not particularly easy.


#8

In my opinion we should wait for better KiCad integration and do not create an official library with user contributions (only a few examples like voltage regulators). This would mean that users need to maintain their own libraries at least for the start.

There are other things like improving kicad-templates, and adding spice support for discrete components which I would like to see and which are not that hard to verify than full schematic block designs.


#9

A first step towards something like this could be to start with defining a set of guidelines for templates.
Next step would be to make the current templates follow these rules (See it as a beta test for the guidelines)
After that is done we can start discussing how a library for hierarchical blocks could look like (This should then be quite easy as a schematic only library should be quite similar to the template library that contains schematics and pcbs. Only additional restriction would be that any shared hierarchical “block” must use symbols from the official library. This is because such a block can not include local libraries like a template.)


#10

I have some trouble with abstract concepts, and like conrete examples.

Assume a test case: I found a litttle KiCad project on Github.
It has a schematic of a small SMPS circuit, and a carefully layed-out PCB according to EMC guidelines etc.
(LM7805 is too trivial as example).

I like the design and want to use it as part of a bigger project.
(Is this the sort of thing you are thinking about?)

The schematic can (I think) easily be copied or included as is as a hierarchical sheet.
I think that part is already in place.

The PCB part (component placement / traces) is harder I think.
I would not know how to do that now.
I may attempt to make my first panel from 3 PCB’s in the near future.
I read something of opening Pcbnew in “stand alone mode” (not from the project manager) and then importing boards. (Have to experiment with that).
If that works well then the same method can be used to import the traces / components of that sub circuit in your current project. I.e: Open Pcbnew standalone, import components / traces. Save. Open as a normal project. delete / edit board outline and continue with the project. You may want to make little adjustments, such as a different sized inductor for this SMPS circuit.

Part of it is probably the Chicken and Egg problem.
Without a database, no projects get collected, and without projects it’s not worth creating a database.
You can find KiCad projects on github and on other places on Internet, but those tend to be complete and more complex projects.

Lightbulb:
Aisler has some 200+ projects collected, with various amount of documentation & (often?) github links.
https://aisler.net/public-projects/page/11

Oshpark also has something similar:
https://oshpark.com/shared_projects
Unfortunately ospark offers only gerbers as downloads or you can order boards. No documentation or (github) links or even schematics??? I do not like this idea. It seems to be designed to reap the crops from other people’s efforts.
You could browse through those PCB’s and try to find more info by copying the project name into a regular search engine or github, but it seems more trouble than it’s worth.

There is no guarantee these Aisler / Ospark hosted projects are even made in KiCad (or Eagle) but with the fast improvement cycle of Kicad this ratio can only improve. :sunglasses:


#11

Right now kicad does not support any sort of block on the pcb side. The closest option we have would be a template. This discussions (as I understand it is about schematics only)


#12

I have a few designs public on OSHPark. Their project sharing service doesn’t provide any specific fields for sharing anymore than a purchase link for boards. (I was unaware or had forgotten that the Gerber files are available for download.) It is up to the individuals sharing their designs to provide all that in the free-form description. There are a few that actually have good documentation (explanation of what the board is for, links to design files and/or firmware, links to BOMs, etc). The majority of them don’t even have explanations of what the board is for…


#13

Right. OSH Park allows MarkDown formatting, so you can put in hyperlinks or bulleted lists or whatever you want.

Here is an example of one of my boards on OSH Park. Unfortunately, you have to click the “Project description” button to see the whole description.


#14

Now that’s interesting. Traditional synths are usually made out of standard building blocks…


#15

It appears there are many people who are thinking along similar lines…

This is a problem of course, it could be that part of the “rules” would be to indicate whether the block is “experimental”, “simulated”, or “actually been made on a PCB”.

I would guess that KiCad would be the best tool for an idea like this.

Thanks for that one. I did have the thought that maybe I should wait until the new Eeschema file format, but it appears that KiCad will continue to support the old file format anyway. (It may still be a good idea to wait). I pretty much already have this idea implemented in a private fashion, and may just “put it out there” and see how many problems there are. (I would have to omit some of our more proprietary schematics for the time being…)

What do you mean by “KiCad integration”?

kicad-templates are an idea, but it seems like the purpose they serve is a “jumping off point” for building some kind of initial dev board?

You’re saying fix up the templates as a test run (wouldn’t be that much work - as there are few) before trying to build a hierarchical block library?

Yes, the PCB layout would not be linked. I have done some hacky-work-arounds in the past (copying and pasting a layout from another board and manually re-annotating: KiCad does properly update the nets after re-annotation).

There is also mmccoo’s replicator.py script:

This is only useful if you have more than one hierarchical block.
However It WOULD be possible to:

  • store relative placements of components in a schematic
  • store relative placements of those same components in a PCB
    –> copy those relative placements for any other arbitrary block in some other project far away
  • mmccoo’s script is close to already doing this (with the exception of storing the relative placements)

#16

Not just fixing up. Writing the rules is what i see as the main hurdle to ever have something like this as part of the official distribution.

Of course anybody is free to start something on their own. But if you plan to have it ever within the official distribution then i still suggest to first write down proper rules.


#17

I’m personally don’t like rules - But like guidelines more. What if the share library not only accept the stuff that meet the “rules” but others. If it not meet the guideline, it stay in the folder call unapproved. So other contributor can come in and use it as is, or make it more close to meet guideline. Otherwise, we will miss-out a bunch of stuff that may be useful for others but no where to be found.


#18

Any library that should be shared with others needs a set of rules. (You will end up with chaos otherwise. Well ok austria is quite near to germany. Maybe i am a bit biased because of that.)

And if it should be shared with kicad itself then the set of rules must be quite strict to keep up with the rest of our libraries.


Clarification:
Rules have basically two main purposes. Ensure a common look and feel for the users. (And communicate to users what to expect.)
And they should be setup such that maintenance is as easy as possible.
(Make sure as much work as feasible can be put into the hands of the contributor. The maintenance team has enough to do as is.)

Edit2: A third purpose. Make it as easy as possible to use scripts to check contributions. (Extension to the “make maintenance easy purpose”)


#19

:slight_smile: . I’m actually grow-up in Vietnam - and rules are mean to be break, and people like me following the rules feel so stupid! :slight_smile: .