How to fix missing components in a schematics which has missing component cache?

I have found a project on Github to modify for my needs but that repo is missing the symbol library cache which is causing schematics to have broken connection and missing component. Although, I have PCB in the same repository so my question is

  1. Can I use PCB to fix the schematics ?
  2. If no, how can I fix the missing components in the library?

Hello and welcome @Black_Robot

In what version of Kicad was the project published?

Version should be in the title block.

Probably 5.1 when there was a <project>-cache.lib file.

you are Absolutly right. I am trying to open in KiCad 7.

Well then, at least tell us which project you found.

1 Like

No. The PCB doesn’t have any symbol info.

Preferably: Get the author to check in the cache-lib that they forgot to check in.

If the author cannot be found: manually re-create the schematic (is there at least a PDF plot to check against).

If you follow this process, you can check if the symbols are found in the version of the KiCad libraries that the design was created in (for example, if this was created in 5.1, check the 5.1 version of the libraries) – but keep in mind the user may have modified the library symbols, so double-check that things match up against the PDF.

If you have no PDF to work from, you are out of luck. You will need to reverse-engineer the design from the PCB.

1 Like

Out of luck, yes, but not completely. If the [Project]-cache.lib is missing from a KiCad V5 or project then it “just” misses the graphics of the symbol, and although the symbols do not have graphics, they are still in the schematic. They still have their name for example, so you at least have a general idea of what each symbol does. The links between the schematic symbols and the PCB footprints should also still be present. A fully routed PCB always has the netlist emplicitly embedded into copper. So you can start with making best guesses for the schematic symbols, draw some graphics and pins in the symbol editor (load directly from the schematic and put the results back in the schematic). Then Schematic Editor / Tools / Update PCB from Schematic , and repeat the process until there are no more DRC violations (for copper connections) on the PCB.

This is probably the quickest path.

This is the repository but I think it has been made private or deteled - https://github.com/MusaMahmood/PCB_nRF52_ADS1299_recharge

sorry guys, I am not able to help much but I cloned this repo long back and I have it on my local machine.

What about this clone of the original repo? GitHub - nick-vu/PCB_nRF52_ADS1292_recharge

Sadly there is no <project>-cache.lib and it was done in KiCad v4 :scream:

2 Likes

Damn, how you find that? howwwww teach me :astonished: :scream: :scream:

Do you think opening in KiCad4 would generate the Cache lib

1 Like

I searched with these terms “github nRF52 ADS1292” hoping that someone cloned the repo.

No, the schematic doesn’t have the symbols which were in the cache lib, so it doesn’t help to open with any version. You’ll have to reverse engineer it.

I had a short peek (maybe 10 minutes) at that fork from Nick-vu.
I used: Schematic Editor / Tools / Edit Symbol Library Links and guessed some common parts such as resistors and capacitors, and just replaced them with the versions from the KiCad V7 equivalent, and it already looks much better:

Now I don’t know what a TPS22941 is, but if you get it’s datasheet, then it’s probably quite obvious which wire has which function.

The Inductor symbols I used appear to be smaller then in the original:


… but that is also easy to fix.

Unfortunately you can’t directly load one of the [??] symbols from the schematic into the symbol editor. If you attempt to do so, KiCad complains with:
image

So the best method is probably:

  1. Use Schematic Editor / Tools / Edit Symbol Library Links to replace the resistors, capacitors, inductors, maybe also some connectors and power symbols.
  2. Schematic Editor / File / Export / Symbols to New Library (And make it project specific).
  3. Create new symbols in your new library for the still missing symbols.
  4. Edit the library links to use those new symbols.
  5. Adjust the graphics in those symbols to match the schematic.

Most will be fairly straightforward to guess, but others such as the uC with configurable pins is more difficult. You can have a peek at the PCB for how the tracks are routed, or at the source code.

Fixing these last parts is a bit of a tedious job, but it’s much quicker to do a bit of reverse-engineering then to create it form scratch. The PCB layout itself looks fairly decent, except from the DVDD net on the bottom layer. That single DVDD net completely destroys the GND plane.

4 Likes

Thank you so much for your reply. I didn’t expect such deep reply. I am really happy to join the community. I will try to fix things manually and post here again for feedback. Thank you so much again. :slight_smile: :slight_smile:

BTW these are not based on the same IC ads1299 vs ads1292 but I will try to figure out something.

1 Like

Oh no, a schematic with those ugly and confusing rectangles…

For figuring out the last connections, as I wrote before, they are all emplicitly embedded in the copper tracks on the PCB. You can use the highlight function under the backtick key to highlight a net on the PCB or select a track segment and use the u shortcut to expand the selection.

Once you think you’re finished, you can Schematic Editor / Tools / Update PCB from Schematic [F8] and there should be no netlist related DRC violations. If there are, then go back to the schematic to fix it and then do it again.

Oh , okay , I can try that. Let me do it and get back here. Can you please also tell me why those schematics are ugly/confusing? I have felt the same when schematics are spread like that instead of showing one schematic. I dont know which one is a good approach.

When drawing schematics and boxing them in small rectangles, you generally loose the overall system view. It also forces you to connect everything with labels, and the problem with labels is that it is hard to be sure how often and where it is used. In this regard, drawing a wire is better, because someone unfamiliar with your design (can be even yourself after a few years) can just follow a wire and see where it goes to. The boxes also do not clarify anything that a bit of whitespace does not do. When there is a bit of empty area between schematic sections, then you already know they are not connected (except for labels…)

The schematic as placed on github is also quite bad. It looks like a “minimal effort” design to just put in a netlist. Some people think that is all a schematic is for, but I regard the schematic as a way to communicate with humans what the goal of the project is. When a schematic is drawn clearly, it is also much easier to check and verify whether the schematic is correct or things are missing. An often used paradigm is to draw signal flow from left to right (just as in reading text) and voltages from top to bottom.

I do make use of text strings to identify sections, but I make these texts a lot bigger, so you can also read them when zoomed out and you see the whole schematic.

1 Like

I absolutely agree with you. Thank you so much. I think modular approach works when you a really complex large schematic but projects like mine i had the same feeling as you do.

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