Work in progress: Native Altium Importer

One needs to start somewhere. Ever heard of a minimum viable product prototype? It does not need to fulfil all usecases.

I know that, and it’s amazing somebody started it.

It was meant as an answer to “Why not require the user to add a netlist file to the project first and just use that?”, should be “Why not require the user to add a netlist file to the project first and just use that, for now?” :wink:

1 Like

I don’t think I would build something like importing a netlist file. The idea is to have an importer for people who do not own Altium, like me.

4 Likes

I think the current state of the importer can be seen an minimum viable product prototype. I added support for NETs, Footprint anchor, detect board layercount, simple zones, and some bugfixes.

Bugs you will likely see:

  • Pad shapes “sometimes” wrong
  • No Zones (with exception of some rectangular ones)
  • It seems I missed some internal object handling stuff, because after save + load some UX problems are fixed.

If you want to try it, you need to build the project yourself at the moment: https://gitlab.com/kicad/code/kicad/merge_requests/60

Because I do not own Altium, it would be nice to get reports if things like dimensions and position of the elements are correct. Same with net-names and layer assignment.

4 Likes

Are you planning to import also libraries?
Some of manufacturers are offering footprint libraries in Altium but not in KiCAD format
i.e.

6 posts were split to a new topic: Should we expect manufacturers to provide library assets for KiCad?

Thanks, gonna test it in the next days.

I got first reviews, and the importer improved a bit:

  • support of roundrect and octal pad shapes
  • text improvements (line thickness, alignment, mirroring,…)
  • hide footprint designator / comment if specified in the boardfile
  • initial support for polygons

Next things to tackle:

  • Layer stackup
  • Design rules (at least know some clearances, soldermask,…)
  • supporting Planes?
  • keepout, hatched zones
  • interpolate arc tracks
  • more pad shapes (non-round hole, hole offset, …)
  • more via types (blind, burried,… )

Because I do now own any Altium Product, it would be nice to have testfiles created by the community to support reversing. If your are interested, please generate Altium files where a single property is changed (like hole-diameter x/y). In case of the hole diameter example, place 4-5 different sizes on the board, and put a text label next to it denoting the measures. Ideally, also add a screenshot for comparison.

Based on such files, I can do black-box reverse engineering and find out how data is encoded.

3 Likes

Curved tracks is under work by @Seth_h, should you wait for native implementation instead of translating arcs to segments manually?

true. Import of curved tracks works at the moment, but kicad think nets are separated.

For testing, Altium can export PCAD files, which KiCad can import.
You can then compare the results.

Overall, PCAD -> KiCad works quite well, I’ve found issues in more subtle settings like zone fill priority, but the design rules & net names import ok.

An other option is to test the result comparing with the gerber files… often open hardware projects do offer the gerber files beside the altium source file.

1 Like

Funny thing: At FOSDEM, I was given the idea to check if Altium Circuit Studio uses a similar file format than Altium Designer (well, it’s basically the same software base). Guess what, I added initial support for Altium Circuit Studio :stuck_out_tongue: .

Basically, Altium changed the directory names in the compound file format, but everything else looks exactly the same. The only thing differing to the Altium Designer importer for now is a wrong layer stackup, because it’s hardcoded right now in my code. When I fix this, both importers should work the same (hopefully)

UPDATE: Altium Circuit Maker uses a similar file format as well, thus I added initial support as well.

7 Likes

Adding support for Circuit Maker was a good choice, because now I can create test-files by myself ;).

I added the following new features in the last days:

  • Altium Circuit Studio and Altium Circuit Maker support (as announced in the previous post)
  • Board Layer Stackup (dielectric name is sometimes wrong)
  • Plane support
  • Keepout Zone support (there is a gui bug I do not know to fix yet)
  • Pad improvements
    • support of tenting
    • support of oval holes
    • bugfixes regarding roundrect hole
    • support override of soldermask expansion and solderpaste expansion

It would be nice to get some testing of the implemented features :smiley: .

4 Likes

Hi,
I’m just migrating medium complexity project to Kicad. I’d like to try your importer. Is it included in nightly builds/is there windows binary somewhere? Thank you!

Cheers,
Jan

@Seth_h @nickoe can someone of you start a windows build on the jenkins server to allow some testing?

I added support for netclass parsing and fixed a very bad bug (no bottom layer elements). Now I need to think how to go from altium design rules -> kicad design rules.

1 Like

You might consider waiting on this until we have the V6 design rules / constraints spec locked down (this is under active work right now). It should be able to map design rules from Altium that are impossible to implement in the current DRC system.

2 Likes

@GyrosGeier can probably help with the Windows test builds

2 Likes

@craftyjon when do you expect to have this integrated? I’m OK with ignoring most of the rules for now.

@Seth_h when do you think rounded traces are finished? I heard something like a week :stuck_out_tongue:. I think there is not that much missing until code-review can start. Having it merged would allow wider testing.

1 Like

No schedule yet, I’ll send you some more details