Creating a new EDA package - Page 1
Forum section: electronics / general

author: Zom-B
author_rank: Regular Contributor
timestamp: January 19, 2017, 10:32:09 pm
content: For a while now I've been wondering if I'm not the only one who's very unhappy with the current state of free PCB tools (especially after theEAGLE disaster). Isn't there any group of people making a modern open source package that feels as natural as using Inkscape? Have they all tried and failed? Are there good programmers reading this and interested in forming just such a group?

author: PCB.Wiz
author_rank: Super Contributor
timestamp: January 20, 2017, 02:21:10 am
content: Quote from: Zom-B on January 19, 2017, 10:32:09 pmEagle seems to work ok on the software side, the license side is a different story.Quote from: Zom-B on January 19, 2017, 10:32:09 pmHave you looked in depth at KiCAD ?They could use more developers, and they have a solid base, including a nice Shove Router.You could code a Eagle to KiCAD converter for example, that does not need an Eagle host ?

author: tycz
author_rank: Regular Contributor
timestamp: January 20, 2017, 03:51:26 am
content: Quote from: Zom-B on January 19, 2017, 10:32:09 pmThe quality and amount of free PCB design tools grows greater in quantity and quality every year. In the year 2002, if you wanted to do PCB design and had no money, your choices were basically Cadsoft Eagle or Protel Autotrax. Now the list of free (as in beer) PCB design packages is quite large. Eagle doesn't even rate among them, the free version is so crippled.Here is the list of free open source PCB design packages. I think it's a better use of developer resources to work on one of these than to start another from scratch.FreePCB (unmaintained?)FritzinggEDAKiCADPCB EleganceSuigyodo Minimal Board Editor

author: Zom-B
author_rank: Regular Contributor
timestamp: January 20, 2017, 04:20:34 pm
content: I tried and ditched KiCad before. I think it was something about the usability of the parts library.If I jumped on the KiCad bandwagon now, I don't think they'll ever accept my proposals for radical changes. For one, it would break the workflow and invite the gridge of the already huge user base of KiCad. If I were to join an existing OSS project, it should still be in infancy.

author: dmills
author_rank: Super Contributor
timestamp: January 20, 2017, 05:32:21 pm
content: Nothing to stop you forking it.....Regards, Dan.

author: Zom-B
author_rank: Regular Contributor
timestamp: January 20, 2017, 09:18:56 pm
content: I tried KiCAD again to see what was up with it, and after 45 minutes I rage-uninstalled it. In what sane application can't you even resize a rectangle? Redraw it? How 'bout I redraw you! Never will I work with programmers who allow this kind of thing to exist.

author: tycz
author_rank: Regular Contributor
timestamp: January 20, 2017, 11:48:09 pm
content: Zom-B,Take a look at PCB Elegance perhaps? It's roughly equivalent to Kicad in terms of features. I am the only developer on the project, but willing to collaborate with others.

author: Wilksey
author_rank: Super Contributor
timestamp: January 21, 2017, 11:00:25 pm
content: It's not a simple task to create such a tool, particularly for the layout part!

author: free_electron
author_rank: Super Contributor
timestamp: January 22, 2017, 02:47:35 am
content: Dont make the mistake that a pcb design tool is just anther drawing package ...This is the mistake geda and kicad already made and now are sort of trying to correct...They do not listen to users and are missing features.The goal of a pcb tool is not only to enable the user to do the layout work , but also to crosscheck the rules in real time , and perform all the tedious post processing post-layout ( silkscreen cleanup , soldermask and pastemask manipulations, assembly data generation ) and meshing with the 3d mechanical world.I am not a programmer but .. i think that basic elements like a track or a pad should be objects , with properties and methods. That would open lots of possibilities ....

author: donotdespisethesnake
author_rank: Super Contributor
timestamp: January 22, 2017, 02:23:11 pm
content: Quote from: Zom-B on January 19, 2017, 10:32:09 pmI've never used Inkscape, but certainly there is plenty of scope for a better UI, as well as some nifty features. I tried Eagle and KiCad, and both seemed to have a primitive interface from 1990, at least KiCad will never be bought out. In kiCad, you can't just do "New->Library". You have to create a component, then find the tiny button "save component to new library" which is not available on any menu. Then, when you create a new library, it doesn't automatically add it to the project.. you have go through a handful of other dialogs. And then PCB editor has a different method to the schematic editor. There is no reason for the poor and inconsistent UI, except that the leads devs don't want to change it because they are used to it.It would be great to have real-time BOM calculation, linked to Octopart or whatever, and many other features... but I would settle for a drawing tool that can even rubber-band connecting wires.The problem with starting afresh is the 80/20 rule, or more like 1/99 rule. Finding "good programmers" willing to devote months or years is actually rather difficult. Getting a basic UI working is something like 5%, the other 95% is implementing all the weird real-world use cases, support, creating parts library. It would be great to re-use part libraries from KiCad, but that is one part of the architecture that really sucks.I think KiCad is somewhat like the early days of Linux. It basically does the job, but has a lot of rough edges, but has critical mass. Over many years, it will turn into a useful and polished product. You could try creating something better, like OS/2, OpenVMS, ReactOS, MINIX, Haiku and many others tried to do, but without critical mass they become niche also-rans.

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: January 22, 2017, 03:11:53 pm
content: The EDA industry is riddled with legacy baggage, some of which dates back to the days when things had to be done in certain ways due to lack of memory, speed and graphics.Where, for example, is the tool that lets you draw your PCB laout first and then automatically generate a (nice looking) schematic from it? For some types of work, that's a far more productive workflow.Where is the GPU powered autoplacer/router that actually does a half-decent job with minimal handholding?Where is the tool that can sensibly express all the constraints of pin-swappability to optimise layout ( and back-annotate to the software/HDL)?

author: nctnico
author_rank: Super Contributor
timestamp: January 22, 2017, 04:25:03 pm
content: To the OP: Maybe help the guys who have forked PCB into PCB-NRD but I'm not sure if that is such a good base to start either.What I like most about Orcad Capture is the part database system:What many low end CAD packages fail to understand that a symbol, footprint and a component are three entirely different things. In Orcad's CIS system the database has the components and for each component there is a symbol, value, footprint and data which deals with logisitics but is not relevent for the schematics and PCB creation process. Still Orcad Capture allows to generate bill of materials including any column from the database so you can create a list with all the relevant data with one click. Someone should add something similar to Kicad because (AFAIK) it isn't there yet.

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 22, 2017, 04:38:21 pm
content: I've often become frustrated with the bizarre and shitty parts of Allegro and started writing my own spec for a better PCB tool.But in the end, I ended up with Allegro with the frustrating limitations removed. In other words, it would take me years to program something that wouldn't achieve much more.I can already work around the frustrating, stupid limits and UI nonsense in Allegro by thinking ahead, and keeping a journal of problems/fixes that I can refer to.I work a lot in RF and I often wish for more mechanical "awareness" in PCB design, like for example how the metal enclosure is the RF ground and should count towards routing completion....or having a tool to help designing the complex rooms and channels for the cover.The way Allegro handles shapes and holes in shapes is aggravating, tedious, and counter-productive. It handles the electrical aspects quite well, but the aspect of having to draw complex outlines and nooks and crannies is needlessly difficult.I also pre-route all the parts in local footprints and modules... but Allegro gets quickly confused with vias and shapes imported from footprints and connections get lost, shapes get duplicated, etc...This needs to improve, it's ridiculous. Why should a via that's in a footprint preferentially connect to the ground plane rather than the net of the pin in the footprint? Stupid!Why do shapes in footprints not connect to nets and always have DRCs? Stupid!Why are the shape editing tools spread all over the place? Why is editing voids different? Stupid!Why isn't there a better way to edit the stackup and make simple, clear, readable stackup drawings?Why is text handled in such a complex and bizarre way?Why are lines sometimes like shapes, sometimes not?

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: January 22, 2017, 07:31:11 pm
content: Quote from: tycz on January 20, 2017, 03:51:26 amAnd for more specialist requirements,PCBModefrom Boldport

author: jancumps
author_rank: Unknown
timestamp: January 22, 2017, 07:45:34 pm
content: Xesscorp has made kipart and kicost scripts.Kipart generates symbols from excel sheets, kicost is a bom calculator.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 22, 2017, 08:27:11 pm
content: I've been working on a from-scratch to-be opensource EDA package called "horizon" for the last few months. Expect it to appear on github within the next two weeks. Still need to clean things up and write some docs on how to get started. It's very far from finished and polished, some features are merely proof of concept or have no GUI yet, but the overall architecture is there.Key features so far:Netlist-aware schematic editor, i.e. net labels, etc. are derived from the netlist, not from the schematic,Unified editor: Same editor for everything from schematic symbol to board, uses modern (shaders, no glBegin() and friends) OpenGL for fast and glitch-free renderinguses JSON as on-disk formatSane library system: Each item is stored in its own file, simplifying version control, uses SQLite for easy lookupImplemented in modern C++ with Gtkmm for the user interface, builds and runs on linux and windowsI've started this project since I've been dissatisfied with the overall architecture of Kicad. The CERN people have made the PCB editor very good, but schematic entry and library management are still in a rather bad shape.Let me give you some detail on what I mean by "sane library system". To me, having to organize symbols, packages and the like in libraries, always seemed kinda pointless and annoying. Horizon does away with them and puts everything into one global "pool". Contrary to other EDA packages, parts aren't defined by their symbols, instead it goes like this:On the very bottom, there's the "Unit". It represents a single gate with all its pins. On the next level, there's the "Entity". An entity instantiates one or more units as gates. For example, the entity for a quad nand gate consists of four gates using the "nand" unit and one gate using the "power" unit. An entity can be generic, e.g. "Quad nand gate" or specific to one particular part, i.e. ATTiny85. For their representation in the schematic, each unit is accompanied by one or more symbols.To link these with packages there are "Parts". A part is something you can actually order, so no "74HC00" for you, instead it could specify a SN74HC00D from TI. To make things easier, parts can inherit the pin-pad mapping from other parts. To the netlist, the part isn't important, so you can easily change the part as long as it uses the same entity.I hope that wasn't too confusing - stay tuned for the release!

author: nctnico
author_rank: Super Contributor
timestamp: January 23, 2017, 12:01:58 am
content: But how are things like a footprint, manufacturer order number, Farnell part number, etc linked to a part? Your system sounds much like Orcad Capture works where you can have symbols which consist of one entity or multiple entities (sub symbols if you like). If you have the Orcad Capture CIS extension then you can have the linkage between symbols and footprints in a database. Using Sqlite isn't bad but be aware that it's performance may need tweaking when dealing with larger databases.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 23, 2017, 03:28:54 pm
content: Quote from: nctnico on January 23, 2017, 12:01:58 amReferences to packages are part of the part definition. I don't consider distributor SKUs part of my database, that's what octopart is for. As said, the current design is what I've come up with in the last months, if reality demands adjustments, they should be pretty easy to integrate.

author: nctnico
author_rank: Super Contributor
timestamp: January 23, 2017, 04:45:45 pm
content: IMHO you really should read into what Orcad Capture CIS does before continuing with your development work because otherwise you are likely to re-invent the wheel along the long route.Many years ago we got a new intern at work. We had some debate about what the intern should work on. My idea was to have the intern work on (much needed) product development. However my boss insisted on creating our own project management system because everything you can buy is crap. He drew some specifications and the intern got to work. When the system became operational it turned out it had several design flaws which needed to be corrected. Not bugs but design choices which just didn't work in reality. Long story short: we should have bought a readily available package because that would have been cheaper AND it worked just like the one that was just created.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 29, 2017, 07:38:29 pm
content: And it's out there:https://github.com/carrotIndustries/horizonSee for yourself!

author: Zom-B
author_rank: Regular Contributor
timestamp: February 02, 2017, 09:04:49 pm
content: Quote from: Lukas on January 22, 2017, 08:27:11 pmThis corresponds to 95% of my vision on how libraries work! What I also envision is a table where users can enter how many of a part they have in stock or order, and filter out parts that aren't in stock or orderable. They can flag parts that they prefer to order over others and filter that as well (i.e. keep a list of parts that you often order or have experience with). It will also look up (via REST etc) prices on different suppliers online for a complete BOM pricetag. Footprints will also have a stretch parameter, e.g. for TH resistors. (I've never seen an EDA package supportingthat.)In fact, when I work on a system, I start with the library (core) and build Netlist, Schematic and PCB around that.

author: ebastler
author_rank: Super Contributor
timestamp: February 04, 2017, 08:18:12 pm
content: Quote from: Zom-B on January 19, 2017, 10:32:09 pmInterested in forming a group to try and fail?No thanks...Seriously though -- you might be underestimating the effort.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: February 04, 2017, 08:26:22 pm
content: Quote from: Alex Eisenhut on January 22, 2017, 04:38:21 pmFor that particular case -- use a jumper? Just cut it from the BOM on export.Tim

author: MarkS
author_rank: Unknown
timestamp: February 19, 2017, 06:50:07 am
content: All due respect, if you want me to take this project seriously, have real Windows support. I shouldn't have to screw around with git and a console to run the application. I'm with you on the issues you've mentioned with KiCAD, but I can download KiCAD and install and get right to work. Get to that point and I'll check out your program.

author: Lukas
author_rank: Frequent Contributor
timestamp: February 19, 2017, 11:45:16 am
content: Quote from: MarkS on February 19, 2017, 06:50:07 amThe console part may eventually go away when there's a "pool manager", but that may take some time... But git is here to stay since the pool is collaborative. When you add a new part/entity to the pool, you're strongly encouraged to contribute it back to the pool so that others can make use of that part. And no, I won't roll my own crappy git gui, others did so much better.

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: February 19, 2017, 03:55:01 pm
content: I find it curious that on a forum where people regularly spend a lot of time fiddling with parametric searches, reading datasheets and messing about with various mcu toolchains - compiling a tool is a huge hurdle...?If you want to check out what looks like a lot of work I'm sure you'd be willing to install one tool and run less than ten commands? I'll take that over a closed source unsigned binary any day of the week!

author: MarkS
author_rank: Unknown
timestamp: February 19, 2017, 05:28:45 pm
content: Quote from: alexanderbrevig on February 19, 2017, 03:55:01 pmI am fully capable of compiling a program downloaded from git. However, there seems to be this push within the open source community, at least for hobby projects, of forcing a Linux-like environment across all supported platforms. I typically avoid Linux due to it's reliance on using the console. I have a very bad memory and cannot remember all of the commands/directories/etc. There is no reason to do this on Windows as Windows gives the same functionality in GUI form. Considering that this project is an attempt to make a EDA program with a more up to date GUI, I find the reliance on a console to be rather odd.If you're going to write cross-platform tools, you need to take advantage of the platform you are targeting, not force the platform you're familiar with on all platforms you're supporting.

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: February 19, 2017, 06:19:57 pm
content: I'm sure he will package it when it's user ready. My take on the state of this project is that it still is mostly for the extra interested. Beta testers?It's entirely possible to build a native windows app:https://www.eevblog.com/forum/eda/new-work-in-progress-eda-package!/msg1139972/#msg1139972Seems he's put up some binaries for the interested btw;http://0x83.eu/horizon/

author: MarkS
author_rank: Unknown
timestamp: February 19, 2017, 07:17:55 pm
content: I have the binaries. They are unusable without first entering console commands to initialize this "pool" thing. Totally unnecessary.

author: Zom-B
author_rank: Regular Contributor
timestamp: February 23, 2017, 07:09:03 am
content: The first experimental applications I typically make, you first have to edit a source file to change 'hardcoded' paths before you're able to run it. YYou don't even call this 'rough edges' because it's only edges. It's not a finished product and I trust that the finished one runs equally well on most platforms without console interaction.

author: Lukas
author_rank: Frequent Contributor
timestamp: February 24, 2017, 12:00:47 am
content: Quote from: Zom-B on February 23, 2017, 07:09:03 amGot meNot too long ago the pool path has been hardcoded to be relative to the current directory. An environment variable then was the easiest way to make it somewhat easy to configure.

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: February 24, 2017, 09:13:37 am
content: Maybe a good compromise would be to first look for ENV and if it's not set; use a convention based relative path?So, if you don't want or need the pool to live in a special place, then it can just be where you want it?

author: Zom-B
author_rank: Regular Contributor
timestamp: February 24, 2017, 01:16:32 pm
content: Best store it in a configuration file.Speaking of which, the best way is to first look for the configuration file in the local path (if found, assume portable installation), then look for it in the user profile. If still not found, create one in either location (I don't think there's a standard for assuming portable or non-portable when neither is conclusive).